K8S实战
01、K8s实战:Windows10安装Docker,配置阿里云加速器
02、K8s实战:基础知识之简介
03、K8s实战:基础知识之组件
04、K8s实战:Centos7.6yum安装Docker,配置阿里云加速器
05、K8s实战:Centos7.6安装dockercompose
06、K8s实战:Centos7.6使用Ansible安装K8S(测试单节点)
07、K8s实战:Dockercompose安装中文版GitLab,配置SSH免密登录
08、K8s实战:Centos7.6安装私服Harbor
09、K8s实战:SpringBoot使用jib打包Docker镜像至私服
10、K8s实战:dockercompose之网络设置
11、K8s实战:使用开源项目io.fabric8之docker
12、K8s实战:二进制方式搭建K8S集群(环境准备)
13、K8s实战:二进制方式搭建K8S集群(完结)
14、K8s实战:K8S管理平台Rancher安装及集群导入
15、K8s实战:陈述式管理之kubectl常用命令
16、K8s实战:声明式管理示例之K8S部署Nginx及修改删除
17、K8s实战:K8S存储Volume之ConfigMap
18、K8s实战:K8S存储Volume之Secret
19、K8s实战:K8S存储之emptyDir+hostPath
20、K8s实战:K8S存储之NFSPVPVC
21、K8s实战:K8S控制器之ReplicaSet
22、K8s实战:K8S控制器之Deployment
23、K8s实战:K8S控制器之DaemonSet
24、K8s实战:K8S控制器之JobCronJob
25、K8s实战:K8S之Service
26、K8s实战:K8S之Ingress
27、K8s实战:K8S之Schedule
28、K8s实战:K8S之Helm安装与配置
29、K8s实战:K8S之部署微服务项目实战
本文档使用 MrDoc 发布
-
+
首页
15、K8s实战:陈述式管理之kubectl常用命令
### **概述** Kubectl 是一个命令行接口,用于对 Kubernetes 集群运行命令。 **语法** ```markdown kubectl [command] [TYPE] [NAME] [flags] # 查看集群信息 kubectl cluster-info ``` **get** 显示一种或多种资源 ```markdown # 用法 $ kubectl get [(-o|--output=)json|yaml|wide|custom-columns=...|custom-columns-file=...|go-template=...|go-template-file=...|jsonpath=...|jsonpath-file=...] (TYPE[.VERSION][.GROUP] [NAME | -l label] | TYPE[.VERSION][.GROUP]/NAME ...) [flags] ``` ```markdown # 列出所有不同的资源对象,默认default空间 kubectl get all # 查看defalut空间下的所有资源 kubectl get all -n default # 列出所有节点 kubectl get nodes # 列出所有节点及详情 kubectl get nodes -o wide # 实时查看 kubectl get pods -o wide -w # 列出所有节点详情及标签信息 kubectl get nodes -o wide --show-labels # 列出所有命名空间下运行的Pod信息 kubectl get pods --all-namespaces # 列出所有运行的Pod信息 kubectl get pods # 列出所有运行的Pod信息及详情 kubectl get pods -o wide # 列出所有的命令空间 kubectl get namespace # 列出所有replication controllers和service信息 kubectl get rc,services # 查看test下的service资源,Cluster IP,Service的直接IP地址,此为虚拟IP地址。外部网络无法ping通,只有kubernetes集群内部访问使用。 kubectl get svc -n test ```  **create** ```markdown # 从文件或标准输入创建资源,接受JSON和YAML格式。 kubectl create -f FILENAME # 根据aaa.text创建一个名为my-config的configmap kubectl create configmap my-config --from-file=/root/aaa.text # 创建一个名为test-namespace的命名空间,可缩写为ns kubectl create namespace test-namespace # 在test命名空间下,创建一个名为test-nginx的deployment资源 kubectl create deployment test-nginx --image=daocloud.io/library/nginx:1.7.11 -n test ``` **run** ```markdown # 语法 run NAME --image=image [--env="key=value"] [--port=port] [--replicas=replicas] [--dry-run=bool] [--overrides=inline-json] [--command] -- [COMMAND] [args...] ``` ```markdown # 在test-namespace命名空间下创建nginx,执行端口88,副本数为2 kubectl run nginx --image=daocloud.io/library/nginx:1.7.11 --port= 88 --replicas=2 --env="POD_NAMESPACE=test-namespace" ``` **delete** 通过配置文件名、stdin、资源名称或label选择器来删除资源。 ```markdown # 语法 $ delete ([-f FILENAME] | TYPE [(NAME | -l label | --all)]) # 使用nginx-test.yml中指定的资源类型和名称删除pod kubectl delete -f ./nginx-test.yml # 删除一个pod kubectl delete pod test-nginx-cc44fcc54-hhfgv -n test # 删除所有的pod kubectl delete pods --all # 删除命名空间 kubectl delete namespace test-namespace ``` **describe** 输出指定的一个/多个资源的详细信息 ```markdown # 语法 kubectl describe TYPE NAME_PREFIX # 查看名为test-nginx的详细信息 kubectl describe deployment test-nginx -n test # 查看名为test-nginx的svc的详细信息 kubectl describe svc test-nginx -n test # deployment名称 Name: test-nginx # 所属命名空间 Namespace: test # 创建时间 CreationTimestamp: Mon, 02 Nov 2020 22:21:59 +0800 # 标签,此处是默认添加,Label具有严格的命名规则,它定义的是Kubernetes对象的元数据(Metadata),并且用于Label Selector。 Labels: app=test-nginx # Annotation则是用户任意定义的“附加”信息,以便于外部工具进行查找。 Annotations: deployment.kubernetes.io/revision: 1 # 标签选择器,Kubernetes核心的分组机制,通过label selector客户端/用户能够识别一组有共同特征或属性的资源对象 Selector: app=test-nginx # 副本数 期望1,已更新1,总计1个,1个可用,0个不可用 Replicas: 1 desired | 1 updated | 1 total | 1 available | 0 unavailable # 更新策略-滚动更新(重建(recreate)/滚动更新(rolling-update)蓝绿(blue/green)金丝雀(canary)A/B测(a/b testing)) StrategyType: RollingUpdate # 升级等待时间 MinReadySeconds: 0 # 滚动更新策略,unavailable升级过程中最多有多少个POD处于无法提供服务的状态,surge升级过程中最多可以比原先设置多出的POD数量 RollingUpdateStrategy: 25% max unavailable, 25% max surge # pod模板 Pod Template: # 标签 Labels: app=test-nginx # 容器 Containers: # 容器nginx nginx: # 镜像地址 Image: daocloud.io/library/nginx:1.7.11 Port: <none> Host Port: <none> Environment: <none> Mounts: <none> Volumes: <none> Conditions: Type Status Reason ---- ------ ------ Available True MinimumReplicasAvailable Progressing True NewReplicaSetAvailable OldReplicaSets: <none> NewReplicaSet: test-nginx-cc44fcc54 (1/1 replicas created) # 事件 Events: Type Reason Age From Message ---- ------ ---- ---- ------- Normal ScalingReplicaSet 16m deployment-controller Scaled up replica set test-nginx-cc44fcc54 to 1 ``` **exec** 进入容器(很少用,推荐docker exec ) ```markdown # 语法 kubectl exec POD [-c CONTAINER] -- COMMAND [args...] # kubectl exec -it podName -c cName /bin/bash -n test ``` **expose** 将资源暴露为新的Kubernetes Service。 ```markdown # 语法 expose (-f FILENAME | TYPE NAME) [--port=port] [--protocol=TCP|UDP] [--target-port=number-or-name] [--name=name] [--external-ip=external-ip-of-service] [--type=type] # 为deployment的test-nginx创建service,并通过Service的80端口转发至容器的80端口上,service接入点不变 kubectl expose deployment test-nginx --port=80 --target-port=80 -n test ``` **scale** 扩容或缩容 Deployment、ReplicaSet、Replication Controller或 Job 中Pod数量。 ```markdown # 语法 scale [--resource-version=version] [--current-replicas=count] --replicas=COUNT (-f FILENAME | TYPE NAME) # 扩容test-nginx为2份 kubectl scale deployment test-nginx --replicas=2 -n test ```
李智
2025年3月17日 13:28
转发文档
收藏文档
上一篇
下一篇
手机扫码
复制链接
手机扫一扫转发分享
复制链接
Markdown文件
分享
链接
类型
密码
更新密码