k8s核心组件----kubectl常用命令总结
2019-08-03 09:29
441 查看
版权声明:本文为博主原创文章,遵循 CC 4.0 by-sa 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/cyfblog/article/details/97639312
3、kubectl create 3.4、kubectl create configmap:创建configmap 3.5、kubectl create serviceaccount:创建serviceaccount 4、kubectl get 4.2、kubectl get pods 4.3、kubectl get namespaces:获取namespace信息 4.4、kubectl get rs:获取ReplicaSet控制器信息 4.5、kubectl get deploy && kubectl get deployment 4.6、kubectl get svc:获取service信息 4.7、kubectl get secrets:获取secrets信息 4.8、kubectl get pv:获取pv信息 4.9、kubectl get pvc:获取pvc信息 4.10、kubectl get configmap && kubectl get cm:获取configMap信息 4.11、kubectl get sts:获取statefulSet控制器信息 4.12、kubectl get serviceaccounts && kubectl get sa:获取serviceaccount信息 5、kubectl label 6、kubectl describe 7、kubectl delete 8、kubectl edit 9、kubectl exec 10、kubectl logs 11、kubectl explain 12、kubectl rollout 13、kubectl scale 14、kubectl patch 15、kubectl set 16、kubectl config 17、kubectl cp:类似docker cp,区别在于拷贝目录下的文件到本地 kubectl cordon:标记节点为不可调度节点 kubectl uncordon:标记节点为可调度节点 kubectl cluster-info:查看集群信息 kubectl api-versions:查询 Kubernetes API 支持的 API 版本 kubectl api-resources:查看k8s支持的资源类型
类型:
文章目录
- 一、k8s集群搭建
- 二、kubectl简介
- 三、命令行自动补全配置
- 四、kubectl常用命令总结
- 1、kubectl version
- 2、kubectl run
- 2.1、创建一个镜像为nginx、副本为2、暴露端口为80的nginx容器
- 3.1、创建dashboard通过yaml文件
- 3.2、kubectl create namespace:创建namespace
- 3.3、kubectl create secret:创建secret
- 3.3.1、创建一个TLS Secret
- 3.3.2、创建一个generic Secret
- 4.2.1、获取指定namespace的Pod信息(不加-n默认获取default)
- 4.2.2、获取所有namespace的Pod信息
- 4.2.3、获取Pod的详细信息
- 4.2.4、获取Pod的labels
- 4.2.5、查看所有pod对于指定标签的key是否有value,有则显示,没有则空白
- 4.2.6、获取含有指定标签key的pod
- 4.2.7、获取含有指定标签key=value的pod
- 4.2.8、获取标签key的value在(不在)集合中的pod(in表示在集合,notin表示不在集合)
- 4.2.7、获取podIP
- 4.2.8、导出指定pod的yaml配置
一、k8s集群搭建
可以参考我的另一篇文章搭建一个集群进行演练:k8s核心组件----kubeadm初始化集群(v1.14.2)
二、kubectl简介
kubectl 是 Kubernetes 的命令行工具(CLI),是 Kubernetes 用户和管理员必备的管理工具。
kubectl 提供了大量的子命令,方便管理 Kubernetes 集群中的各种功能。以下是查看子命令的帮助命令:
- kubectl -h:查看子命令列表
- kubectl options:查看全局选项
- kubectl --help:查看子命令的帮助
- kubectl [command] [PARAMS] -o=:设置输出格式(如 json、yaml、jsonpath 等)
- kubectl explain [RESOURCE]:查看资源的定义
三、命令行自动补全配置
为了方便练习k8s常用命令使用,配置命令行自动补全
Centos yum install -y bash-completion source /usr/share/bash-completion/bash_completion source <(kubectl completion bash) echo "source <(kubectl completion bash)" >> ~/.bashrc Ubuntu curl -LO https://storage.googleapis.com/kubernetes-release/release/v1.14.2/bin/linux/amd64/kubectl chmod +x kubectl mv kubectl /usr/local/bin/ sudo mv kubectl /usr/local/bin/ source <(kubectl completion bash) echo "source <(kubectl completion bash)" >> ~/.bashrc
四、kubectl常用命令总结
1、kubectl version
输出 client 和 server 的版本信息
[root@master ~]# kubectl version Client Version: version.Info{Major:"1", Minor:"14", GitVersion:"v1.14.2", GitCommit:"66049e3b21efe110454d67df4fa62b08ea79a19b", GitTreeState:"clean", BuildDate:"2019-05-16T16:23:09Z", GoVersion:"go1.12.5", Compiler:"gc", Platform:"linux/amd64"} Server Version: version.Info{Major:"1", Minor:"14", GitVersion:"v1.14.2", GitCommit:"66049e3b21efe110454d67df4fa62b08ea79a19b", GitTreeState:"clean", BuildDate:"2019-05-16T16:14:56Z", GoVersion:"go1.12.5", Compiler:"gc", Platform:"linux/amd64"}
2、kubectl run
用法:
kubectl run NAME --image=image [--env="key=value"] [--port=port] [--replicas=replicas] [--dry-run=bool] [--overrides=inline-json] [--command] -- [COMMAND] [args...] [options]
2.1、创建一个镜像为nginx、副本为2、暴露端口为80的nginx容器
[root@master ~]# kubectl run nginx --image=nginx --replicas=2 --port=80 kubectl run --generator=deployment/apps.v1 is DEPRECATED and will be removed in a future version. Use kubectl run --generator=run-pod/v1 or kubectl create instead. deployment.apps/nginx created
3、kubectl create
用法:
kubectl create -f FILENAME [options],创建资源
3.1、创建dashboard通过yaml文件
可以参考我的另一篇文章:k8s UI组件----Kubernetes Dashboard
[root@master yaml]# kubectl create -f kubernetes-dashboard.yaml secret/kubernetes-dashboard-certs created serviceaccount/kubernetes-dashboard created role.rbac.authorization.k8s.io/kubernetes-dashboard-minimal created rolebinding.rbac.authorization.k8s.io/kubernetes-dashboard-minimal created deployment.apps/kubernetes-dashboard created service/kubernetes-dashboard created
3.2、kubectl create namespace:创建namespace
用法:kubectl create namespace NAME [–dry-run] [options]
[root@master ~]# kubectl create namespace cyf namespace/cyf created
3.3、kubectl create secret:创建secret
用法:
kubectl create secret [flags] [options]
3.3.1、创建一个TLS Secret
[root@master ingress]# kubectl create secret tls tomcat-ingress-sercret --cert=tls.crt --key=tls.key secret/tomcat-ingress-sercret created [root@master ingress]# kubectl get secrets NAME TYPE DATA AGE default-token-g5zk6 kubernetes.io/service-account-token 3 5d14h tomcat-ingress-sercret kubernetes.io/tls 2 11s[root@master ingress]# kubectl describe secrets tomcat-ingress-sercret Name: tomcat-ingress-sercret Namespace: default Labels: <none> Annotations: <none> Type: kubernetes.io/tls Data ==== tls.crt: 1294 bytes tls.key: 1675 bytes
3.3.2、创建一个generic Secret
[root@master configmap]# kubectl create secret generic mysql-root-password --from-literal=password=Myp@ss123 secret/mysql-root-password created [root@master configmap]# kubectl get secrets NAME TYPE DATA AGE default-token-g5zk6 kubernetes.io/service-account-token 3 9d mysql-root-password Opaque 1 10s #Opaque:模糊类型 tomcat-ingress-secret kubernetes.io/tls 2 4d7h
3.4、kubectl create configmap:创建configmap
用法:
kubectl create configmap NAME [--from-file=[key=]source] [--from-literal=key1=value1] [--dry-run] [options]
[root@master ~]# kubectl create configmap nginx-config --from-literal=nginx_port=80 --from-literal=server_name=myapp.cyf.com configmap/nginx-config created
3.5、kubectl create serviceaccount:创建serviceaccount
[root@master yaml]# kubectl create serviceaccount admin serviceaccount/admin created [root@master ~]# kubectl create serviceaccount mysa -o yaml --dry-run apiVersion: v1 kind: ServiceAccount metadata: creationTimestamp: null name: mysa
4、kubectl get
用法:
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] [options]
4.1、kubectl get nodes
4.1.1、获取节点信息
[root@master ~]# kubectl get nodes NAME STATUS ROLES AGE VERSION master Ready master 16h v1.14.2 node1 Ready worker 16h v1.14.2
4.1.2、获取节点详细信息
[root@master ~]# kubectl get nodes -o wide NAME STATUS ROLES AGE VERSION INTERNAL-IP EXTERNAL-IP OS-IMAGE KERNEL-VERSION CONTAINER-RUNTIME master Ready master 16h v1.14.2 192.168.10.48 <none> CentOS Linux 7 (Core) 3.10.0-957.el7.x86_64 docker://19.3.1 node1 Ready worker 16h v1.14.2 192.168.10.148 <none> CentOS Linux 7 (Core) 3.10.0-957.el7.x86_64 docker://19.3.1
4.1.3、获取节点标签
[root@master ~]# kubectl get nodes --show-labels NAME STATUS ROLES AGE VERSION LABELS master Ready master 2d v1.14.2 beta.kubernetes.io/arch=amd64,beta.kubernetes.io/os=linux,kubernetes.io/arch=amd64,kubernetes.io/hostname=master,kubernetes.io/os=linux,node-role.kubernetes.io/master= node1 Ready worker 2d v1.14.2 beta.kubernetes.io/arch=amd64,beta.kubernetes.io/os=linux,kubernetes.io/arch=amd64,kubernetes.io/hostname=node1,kubernetes.io/os=linux,node-role.kubernetes.io/worker=worker
4.1.4、给节点打标签
[root@master ~]# kubectl label nodes node1 disktype=ssd node/node1 labeled
4.2、kubectl get pods
4.2.1、获取指定namespace的Pod信息(不加-n默认获取default)
[root@master ~]# kubectl get pods -n default NAME READY STATUS RESTARTS AGE nginx-755464dd6c-b56mr 1/1 Running 0 52s nginx-755464dd6c-ggwzv 1/1 Running 0 52s
4.2.2、获取所有namespace的Pod信息
[root@master ~]# kubectl get pods --all-namespaces [root@master ~]# kubectl get pods -A NAMESPACE NAME READY STATUS RESTARTS AGE default nginx-755464dd6c-b56mr 1/1 Running 0 3m12s default nginx-755464dd6c-ggwzv 1/1 Running 0 3m12s kube-system coredns-fb8b8dccf-b9cwb 1/1 Running 1 17h kube-system coredns-fb8b8dccf-qcdv2 1/1 Running 1 17h kube-system etcd-master 1/1 Running 1 17h kube-system kube-apiserver-master 1/1 Running 1 17h kube-system kube-controller-manager-master 1/1 Running 1 17h kube-system kube-flannel-ds-amd64-4kn7q 1/1 Running 1 17h kube-system kube-flannel-ds-amd64-xpd8f 1/1 Running 1 17h kube-system kube-proxy-htdpc 1/1 Running 1 17h kube-system kube-proxy-q49ff 1/1 Running 1 17h kube-system kube-scheduler-master 1/1 Running 1 17h kube-system kubernetes-dashboard-6c98b7f57c-q6zp7 1/1 Running 1 16h
4.2.3、获取Pod的详细信息
[root@master ~]# kubectl get pods -o wide NAME READY STATUS RESTARTS AGE IP NODE NOMINATED NODE READINESS GATES nginx-755464dd6c-b56mr 1/1 Running 0 5m31s 10.244.1.11 node1 <none> <none> nginx-755464dd6c-ggwzv 1/1 Running 0 5m31s 10.244.1.10 node1 <none> <none> [root@master ~]# kubectl get pods -A -o wide NAMESPACE NAME READY STATUS RESTARTS AGE IP NODE NOMINATED NODE READINESS GATES default nginx-755464dd6c-b56mr 1/1 Running 0 6m4s 10.244.1.11 node1 <none> <none> default nginx-755464dd6c-ggwzv 1/1 Running 0 6m4s 10.244.1.10 node1 <none> <none> kube-system coredns-fb8b8dccf-b9cwb 1/1 Running 1 17h 10.244.1.9 node1 <none> <none> kube-system coredns-fb8b8dccf-qcdv2 1/1 Running 1 17h 10.244.1.8 node1 <none> <none> ......
4.2.4、获取Pod的labels
[root@master ~]# kubectl get pods --show-labels NAME READY STATUS RESTARTS AGE LABELS nginx-755464dd6c-b56mr 1/1 Running 0 27h pod-template-hash=755464dd6c,run=nginx nginx-755464dd6c-ggwzv 1/1 Running 0 27h pod-template-hash=755464dd6c,run=nginx pod-demo 2/2 Running 0 58s apps=myapp,tier=frontend
4.2.5、查看所有pod对于指定标签的key是否有value,有则显示,没有则空白
[root@master yaml]# kubectl get pods -L apps,run NAME READY STATUS RESTARTS AGE APPS RUN nginx-755464dd6c-b56mr 1/1 Running 0 27h nginx nginx-755464dd6c-ggwzv 1/1 Running 0 27h nginx pod-demo 2/2 Running 0 15m myapp
4.2.6、获取含有指定标签key的pod
[root@master yaml]# kubectl get pods -l apps --show-labels NAME READY STATUS RESTARTS AGE LABELS pod-demo 2/2 Running 0 112s apps=myapp,tier=frontend
4.2.7、获取含有指定标签key=value的pod
等值关系:
=和
!=
[root@master yaml]# kubectl get pods -l release=stable --show-labels NAME READY STATUS RESTARTS AGE LABELS pod-demo 2/2 Running 0 39m apps=myapp,release=stable,tier=frontend
4.2.8、获取标签key的value在(不在)集合中的pod(in表示在集合,notin表示不在集合)
集合关系:
key in (value1,value2...)
key notin (value1,value2...)
key
!key
[root@master yaml]# kubectl get pods -l "release in (canary,beta,alpha)" NAME READY STATUS RESTARTS AGE nginx-755464dd6c-ggwzv 1/1 Running 0 28h [root@master yaml]# kubectl get pods -l "release notin (canary,beta,alpha)" NAME READY STATUS RESTARTS AGE nginx-755464dd6c-b56mr 1/1 Running 0 28h pod-demo 2/2 Running 0 53m
4.2.7、获取podIP
kubectl get pod pod-name -o jsonpath=’{.status.podIP}’
[root@master ~]# kubectl get pods nginx-755464dd6c-b56mr -o jsonpath='{.status.podIP}' 10.244.1.11
4.2.8、导出指定pod的yaml配置
[root@master yaml]# kubectl get pods myapp-deploy-74fb9bdf9b-2rt79 -o yaml --export Flag --export has been deprecated, This flag is deprecated and will be removed in future. apiVersion: v1 kind: Pod metadata: creationTimestamp: null generateName: myapp-deploy-74fb9bdf9b- labels: app: myapp pod-template-hash: 74fb9bdf9b release: canary ownerReferences: .....
4.3、kubectl get namespaces:获取namespace信息
4.3.1、获取所有namespace信息
[root@master ~]# kubectl get ns NAME STATUS AGE default Active 18h kube-node-lease Active 18h kube-public Active 18h kube-system Active 18h [root@master ~]# kubectl get namespaces NAME STATUS AGE default Active 18h kube-node-lease Active 18h kube-public Active 18h kube-system Active 18h
4.3.2、获取指定namespace信息
[root@master ~]# kubectl get namespaces kube-system NAME STATUS AGE kube-system Active 18h
4.3.3、获取指定namespace的yaml格式信息
[root@master ~]# kubectl get namespaces kube-system -o yaml apiVersion: v1 kind: Namespace metadata: creationTimestamp: "2019-07-29T09:28:58Z" name: kube-system resourceVersion: "10" selfLink: /api/v1/namespaces/kube-system uid: 4ad779da-b1e3-11e9-ac67-0800273a2eb7 spec: finalizers: - kubernetes status: phase: Active
4.3.4、获取指定namespace的json格式信息
[root@master ~]# kubectl get namespaces kube-system -o json { "apiVersion": "v1", "kind": "Namespace", "metadata": { "creationTimestamp": "2019-07-29T09:28:58Z", "name": "kube-system", "resourceVersion": "10", "selfLink": "/api/v1/namespaces/kube-system", "uid": "4ad779da-b1e3-11e9-ac67-0800273a2eb7" }, "spec": { "finalizers": [ "kubernetes" ] }, "status": { "phase": "Active" } }
4.4、kubectl get rs:获取ReplicaSet控制器信息
[root@master yaml]# kubectl get rs NAME DESIRED CURRENT READY AGE myapp 2 2 2 24s
4.5、kubectl get deploy && kubectl get deployment
4.5.1、获取Deployment控制器信息
[root@master yaml]# kubectl get deploy NAME READY UP-TO-DATE AVAILABLE AGE myapp-deploy 2/2 2 2 22s nginx 1/1 1 1 19h [root@master yaml]# kubectl get deployments NAME READY UP-TO-DATE AVAILABLE AGE myapp-deploy 2/2 2 2 22s nginx 1/1 1 1 19h
4.5.2、与ReplicaSet的联系。
rs名称:myapp-deploy-74fb9bdf9b,deploy名称:myapp-deploy,pod名称:myapp-deploy-74fb9bdf9b-rd4nf
[root@master yaml]# kubectl get rs NAME DESIRED CURRENT READY AGE myapp-deploy-74fb9bdf9b 2 2 2 48s nginx-755464dd6c 1 1 1 19h [root@master yaml]# kubectl get pods NAME READY STATUS RESTARTS AGE myapp-deploy-74fb9bdf9b-rd4nf 1/1 Running 0 7m42s myapp-deploy-74fb9bdf9b-slfst 1/1 Running 0 7m42s nginx-755464dd6c-2pgbs 1/1 Running 0 19h
4.5.3、滚动更新
修改版本号后的滚动更新过程
[root@master yaml]# kubectl get pods -w NAME READY STATUS RESTARTS AGE myapp-deploy-74fb9bdf9b-rd4nf 1/1 Running 0 33h myapp-deploy-74fb9bdf9b-slfst 1/1 Running 0 33h nginx-755464dd6c-2pgbs 1/1 Running 0 2d4h myapp-deploy-74fb9bdf9b-lqm77 0/1 Pending 0 33h myapp-deploy-74fb9bdf9b-lqm77 0/1 Pending 0 33h myapp-deploy-74fb9bdf9b-lqm77 0/1 ContainerCreating 0 33h myapp-deploy-74fb9bdf9b-lqm77 1/1 Running 0 33h myapp-deploy-66cfdc5675-g8dgm 0/1 Pending 0 33h myapp-deploy-66cfdc5675-g8dgm 0/1 Pending 0 33h myapp-deploy-66cfdc5675-g8dgm 0/1 ContainerCreating 0 33h myapp-deploy-66cfdc5675-g8dgm 1/1 Running 0 33h myapp-deploy-74fb9bdf9b-lqm77 1/1 Terminating 0 33h myapp-deploy-66cfdc5675-c7fxx 0/1 Pending 0 33h myapp-deploy-66cfdc5675-c7fxx 0/1 Pending 0 33h myapp-deploy-66cfdc5675-c7fxx 0/1 ContainerCreating 0 33h myapp-deploy-66cfdc5675-c7fxx 1/1 Running 0 33h myapp-deploy-74fb9bdf9b-lqm77 0/1 Terminating 0 33h myapp-deploy-74fb9bdf9b-rd4nf 1/1 Terminating 0 33h myapp-deploy-66cfdc5675-xj5qq 0/1 Pending 0 33h myapp-deploy-66cfdc5675-xj5qq 0/1 Pending 0 33h myapp-deploy-66cfdc5675-xj5qq 0/1 ContainerCreating 0 33h myapp-deploy-74fb9bdf9b-lqm77 0/1 Terminating 0 33h myapp-deploy-74fb9bdf9b-lqm77 0/1 Terminating 0 33h myapp-deploy-74fb9bdf9b-rd4nf 0/1 Terminating 0 33h myapp-deploy-66cfdc5675-xj5qq 1/1 Running 0 33h myapp-deploy-74fb9bdf9b-slfst 1/1 Terminating 0 33h myapp-deploy-74fb9bdf9b-rd4nf 0/1 Terminating 0 33h myapp-deploy-74fb9bdf9b-rd4nf 0/1 Terminating 0 33h myapp-deploy-74fb9bdf9b-slfst 0/1 Terminating 0 33h myapp-deploy-74fb9bdf9b-slfst 0/1 Terminating 0 33h myapp-deploy-74fb9bdf9b-slfst 0/1 Terminating 0 33h
查看滚动更新后历史版本和现在运行版本
[root@master yaml]# kubectl get rs -o wide NAME DESIRED CURRENT READY AGE CONTAINERS IMAGES SELECTOR myapp-deploy-66cfdc5675 3 3 3 100s myapp ikubernetes/myapp:v2 app=myapp,pod-template-hash=66cfdc5675,release=canary myapp-deploy-74fb9bdf9b 0 0 0 16m myapp ikubernetes/myapp:v1 app=myapp,pod-template-hash=74fb9bdf9b,release=canary
4.6、kubectl get svc:获取service信息
4.6.1、获取默认命名空间的service
[root@master yaml]# kubectl get svc NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE kubernetes ClusterIP 10.96.0.1 <none> 443/TCP 3d5h
4.6.2、获取指定命名空间的service
[root@master ingress-nginx]# kubectl get svc -n ingress-nginx NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE default-http-backend ClusterIP 10.109.114.81 <none> 80/TCP 45m ingress-nginx NodePort 10.106.125.159 <none> 80:30080/TCP,443:30443/TCP 73s
4.7、kubectl get secrets:获取secrets信息
[root@master ingress]# kubectl get secrets NAME TYPE DATA AGE default-token-g5zk6 kubernetes.io/service-account-token 3 5d14h tomcat-ingress-sercret kubernetes.io/tls 2 11s
4.8、kubectl get pv:获取pv信息
[root@master volumes]# kubectl get pv NAME CAPACITY ACCESS MODES RECLAIM POLICY STATUS CLAIM STORAGECLASS REASON AGE pv001 1Gi RWO,RWX Retain Available 10s pv002 1Gi RWX Retain Available 10s pv003 1Gi RWO,RWX Retain Available 10s pv004 1Gi RWO,RWX Retain Available 10s pv005 1Gi RWO,RWX Retain Available 10s
4.9、kubectl get pvc:获取pvc信息
[root@master volumes]# kubectl get pvc NAME STATUS VOLUME CAPACITY ACCESS MODES STORAGECLASS AGE mypvc Bound pv002 1Gi RWX 43s
4.10、kubectl get configmap && kubectl get cm:获取configMap信息
[root@master ~]# kubectl get cm NAME DATA AGE nginx-config 2 4m11s
4.11、kubectl get sts:获取statefulSet控制器信息
[root@master yaml]# kubectl get sts NAME READY AGE myapp 3/3 30s
4.12、kubectl get serviceaccounts && kubectl get sa:获取serviceaccount信息
[root@master yaml]# kubectl get serviceaccounts && kubectl get sa NAME SECRETS AGE admin 1 3m49s default 1 10d NAME SECRETS AGE admin 1 3m50s default 1 10d
5、kubectl label
用法:
kubectl label [--overwrite] (-f FILENAME | TYPE NAME) KEY_1=VAL_1 ... KEY_N=VAL_N [--resource-version=version],资源标签设定
5.1、给一个pod打一个没有存在的标签key=value,
[root@master yaml]# kubectl label pods pod-demo release=canary pod/pod-demo labeled [root@master yaml]# kubectl get pods pod-demo --show-labels NAME READY STATUS RESTARTS AGE LABELS pod-demo 2/2 Running 0 33m apps=myapp,release=canary,tier=frontend
5.2、给一个pod已经存在的标签重新赋值
[root@master yaml]# kubectl label pods pod-demo release=stable error: 'release' already has a value (canary), and --overwrite is false [root@master yaml]# kubectl label pods pod-demo release=stable --overwrite pod/pod-demo labeled
5.3、通过key删除标签
[root@master ~]# kubectl get nodes --show-labels NAME STATUS ROLES AGE VERSION LABELS master Ready master 8d v1.14.2 beta.kubernetes.io/arch=amd64,beta.kubernetes.io/os=linux,kubernetes.io/arch=amd64,kubernetes.io/hostname=master,kubernetes.io/os=linux,node-role.kubernetes.io/master= node1 Ready worker 8d v1.14.2 beta.kubernetes.io/arch=amd64,beta.kubernetes.io/os=linux,disktype=ssd,hostname=node1,kubernetes.io/arch=amd64,kubernetes.io/hostname=node1,kubernetes.io/os=linux,node-role.kubernetes.io/worker=worker node2 Ready worker 5d6h v1.14.2 beta.kubernetes.io/arch=amd64,beta.kubernetes.io/os=linux,hostname=node2,kubernetes.io/arch=amd64,kubernetes.io/hostname=node2,kubernetes.io/os=linux,node-role.kubernetes.io/worker=worker [root@master ~]# kubectl label nodes node1 disktype- node/node1 labeled
6、kubectl describe
用法:
kubectl describe (-f FILENAME | TYPE [NAME_PREFIX | -l label] | TYPE/NAME) [options],显示资源的详细描述
6.1、查看某个pod的详细信息
[root@master yaml]# kubectl describe pods pod-demo Name: pod-demo Namespace: default Priority: 0 PriorityClassName: <none> Node: node1/192.168.10.148 Start Time: Tue, 30 Jul 2019 18:17:38 +0800 Labels: apps=myapp tier=frontend Annotations: <none> Status: Running IP: 10.244.1.14
6.2、查看创建的serviceaccount的详细信息
[root@master yaml]# kubectl describe sa admin Name: admin Namespace: default Labels: <none> Annotations: <none> Image pull secrets: <none> #设置镜像拉取的镜像仓库,用sa替代imagePullSecrets Mountable secrets: admin-token-f6h28 Tokens: admin-token-f6h28 Events: <none>
7、kubectl delete
用法:
kubectl delete ([-f FILENAME] | [-k DIRECTORY] | TYPE [(NAME | -l label | --all)]) [options],删除资源
7.1、删除pods资源
[root@master yaml]# kubectl get pods NAME READY STATUS RESTARTS AGE myapp-l9pbb 1/1 Running 0 7m1s myapp-nlw6m 1/1 Running 0 10m myapp-ppktd 1/1 Running 0 10m myapp-wmbnc 1/1 Running 0 28m myapp-wpfpn 1/1 Running 0 10m [root@master yaml]# kubectl delete pods myapp-l9pbb pod "myapp-l9pbb" deleted [root@master yaml]#
7.2、删除service
[root@master yaml]# kubectl delete svc redis service "redis" deleted
7.3、删除namespace
[root@master ~]# kubectl delete ns cyf namespace "cyf" deleted
7.4、删除Secret
[root@master ingress]# kubectl delete secrets tomcat-ingress-sercret secret "tomcat-ingress-sercret" deleted
7.5、删除configmap
[root@master configmap]# kubectl delete configmaps nginx configmap "nginx" deleted
8、kubectl edit
用法:
kubectl edit (RESOURCE/NAME | -f FILENAME) [options],编辑资源清单
8.1、修改ReplicaSet控制器的yaml清单内容
注意:修改容器版本,不会自动更新(手动删除pod后自动更新:灰度发布)
[root@master yaml]# kubectl edit rs myapp replicaset.extensions/myapp edited
9、kubectl exec
用法:
kubectl exec POD [-c CONTAINER] -- COMMAND [args...] [options],类似docker exec,进入容器
9.1、进入pod内的容器
[root@master yaml]# kubectl exec -it myapp-lmj45 -- /bin/sh / # ls bin dev etc home lib media mnt proc root run sbin srv sys tmp usr var / # exit [root@master yaml]# kubectl exec -it myapp-lmj45 sh / # ls bin dev etc home lib media mnt proc root run sbin srv sys tmp usr var / #
9.2、进入pod内指定容器
用法:
kubectl exec -it pod-name -c container-name -- /bin/sh
[root@master yaml]# kubectl exec -it myapp-lmj45 -c myapp-container sh / # ls bin dev etc home lib media mnt proc root run sbin srv sys tmp usr var / # exit [root@master yaml]# kubectl exec -it myapp-lmj45 -c myapp-container -- /bin/sh / # ls bin dev etc home lib media mnt proc root run sbin srv sys tmp usr var / #
10、kubectl logs
用法:
kubectl logs [-f] [-p] (POD | TYPE/NAME) [-c CONTAINER] [options],类似于docker logs,查看容器日志
10.1、查看pod内的容器日志
[root@master yaml]# kubectl logs myapp-lmj45 --tail 300 -f 10.244.0.0 - - [31/Jul/2019:22:06:42 +0000] "GET / HTTP/1.1" 200 65 "-" "curl/7.29.0" "-" 10.244.0.0 - - [31/Jul/2019:22:06:42 +0000] "GET / HTTP/1.1" 200 65 "-" "curl/7.29.0" "-" 10.244.0.0 - - [31/Jul/2019:22:06:43 +0000] "GET / HTTP/1.1" 200 65 "-" "curl/7.29.0" "-" 10.244.0.0 - - [31/Jul/2019:22:06:43 +0000] "GET / HTTP/1.1" 200 65 "-" "curl/7.29.0" "-" 10.244.0.0 - - [31/Jul/2019:22:06:44 +0000] "GET / HTTP/1.1" 200 65 "-" "curl/7.29.0" "-"
10.2、查看pod内指定容器的日志
[root@master yaml]# kubectl logs myapp-lmj45 -c myapp-container --tail 300 -f 10.244.0.0 - - [31/Jul/2019:22:06:42 +0000] "GET / HTTP/1.1" 200 65 "-" "curl/7.29.0" "-" 10.244.0.0 - - [31/Jul/2019:22:06:42 +0000] "GET / HTTP/1.1" 200 65 "-" "curl/7.29.0" "-" 10.244.0.0 - - [31/Jul/2019:22:06:43 +0000] "GET / HTTP/1.1" 200 65 "-" "curl/7.29.0" "-" 10.244.0.0 - - [31/Jul/2019:22:06:43 +0000] "GET / HTTP/1.1" 200 65 "-" "curl/7.29.0" "-" 10.244.0.0 - - [31/Jul/2019:22:06:44 +0000] "GET / HTTP/1.1" 200 65 "-" "curl/7.29.0" "-"
11、kubectl explain
用法:
kubectl explain RESOURCE [options],显示各种资源清单的字段解释
11.1、查看pod资源清单字段
[root@master ~]# kubectl explain pod KIND: Pod VERSION: v1 DESCRIPTION: Pod is a collection of containers that can run on a host. This resource is created by clients and scheduled onto hosts. FIELDS: apiVersion <string> .....
11.2、查看pod资源清单理metadata字段下的字段(以此类推)
[root@master ~]# kubectl explain pod.metadata KIND: Pod VERSION: v1 RESOURCE: metadata <Object> DESCRIPTION: Standard object's metadata. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#metadata ObjectMeta is metadata that all persisted resources must have, which includes all objects users must create. FIELDS: annotations <map[string]string> .....
11.3、查看ReplicaSet资源清单字段
[root@master yaml]# kubectl explain rs KIND: ReplicaSet VERSION: extensions/v1beta1 DESCRIPTION: DEPRECATED - This group version of ReplicaSet is deprecated by apps/v1beta2/ReplicaSet. See the release notes for more information. ReplicaSet ensures that a specified number of pod replicas are running at any given time. FIELDS: apiVersion <string> APIVersion defines the versioned schema of this representation of an object. Servers should convert recognized schemas to the latest internal value, and may reject unrecognized values. More info: .....
12、kubectl rollout
用法:
kubectl rollout SUBCOMMAND [options],滚动更新
类型:
- deployments
- daemonsets
- statefulsets
12.1、查看deployment滚动更新历史版本
[root@master yaml]# kubectl rollout history deployment myapp-deploy deployment.extensions/myapp-deploy REVISION CHANGE-CAUSE 1 <none> 2 <none>
12.2、更新一个pod后暂停更新
[root@master yaml]# kubectl rollout pause deployment myapp-deploy deployment.extensions/myapp-deploy paused [root@master ~]# kubectl get pods -l app=myapp -w NAME READY STATUS RESTARTS AGE myapp-deploy-66cfdc5675-cnm4m 1/1 Running 0 12s myapp-deploy-66cfdc5675-jzghg 1/1 Running 0 12s myapp-deploy-66cfdc5675-zkc94 1/1 Running 0 12s myapp-deploy-668ff4dc58-fq6hp 0/1 Pending 0 0s myapp-deploy-668ff4dc58-fq6hp 0/1 Pending 0 0s myapp-deploy-668ff4dc58-fq6hp 0/1 ContainerCreating 0 0s myapp-deploy-668ff4dc58-fq6hp 1/1 Running 0 9s
12.3、解除暂停状态,继续更新
[root@master yaml]# kubectl rollout resume deployment myapp-deploy deployment.extensions/myapp-deploy resumed [root@master yaml]# kubectl rollout status deployment myapp-deploy deployment "myapp-deploy" successfully rolled out
12.4、回滚到指定版本
[root@master ~]# kubectl rollout history deployment myapp-deploy deployment.extensions/myapp-deploy REVISION CHANGE-CAUSE 1 <none> 2 <none> 3 <none> [root@master yaml]# kubectl rollout undo deployment myapp-deploy --to-revision=1 deployment.extensions/myapp-deploy rolled back [root@master yaml]# kubectl get rs -o wide NAME DESIRED CURRENT READY AGE CONTAINERS IMAGES SELECTOR myapp-deploy-668ff4dc58 0 0 0 4m myapp ikubernetes/myapp:v3 app=myapp,pod-template-hash=668ff4dc58,release=canary myapp-deploy-66cfdc5675 0 0 0 4m23s myapp ikubernetes/myapp:v2 app=myapp,pod-template-hash=66cfdc5675,release=canary myapp-deploy-74fb9bdf9b 5 5 5 5m8s myapp ikubernetes/myapp:v1 app=myapp,pod-template-hash=74fb9bdf9b,release=canary [root@master ~]# kubectl rollout history deployment myapp-deploy deployment.extensions/myapp-deploy REVISION CHANGE-CAUSE 2 <none> 3 <none> 4 <none>
12.5、监控deployment更新状态
[root@master yaml]# kubectl rollout status deployment myapp-deploy Waiting for deployment "myapp-deploy" rollout to finish: 1 out of 3 new replicas have been updated...
13、kubectl scale
Deployment, ReplicaSet, Replication Controller, or StatefulSet,pod副本的扩容和缩容
用法:
kubectl scale [--resource-version=version] [--current-replicas=count] --replicas=COUNT (-f FILENAME | TYPE NAME)
13.1、扩容和缩容
[root@master yaml]# kubectl scale sts myapp --replicas=2 statefulset.apps/myapp scaled [root@master yaml]# kubectl get pods NAME READY STATUS RESTARTS AGE myapp-0 1/1 Running 0 14m myapp-1 1/1 Running 0 14m
14、kubectl patch
用法:
kubectl patch (-f FILENAME | TYPE NAME) -p PATCH [options]
14.1、修改deployment副本数
[root@master yaml]# kubectl patch deployment myapp-deploy -p '{"spec":{"replicas":5}}' deployment.extensions/myapp-deploy patched
14.2、修改deployment滚动更新策略
[root@master yaml]# kubectl patch deployment myapp-deploy -p '{"spec":{"strategy":{"rollingUpdate":{"maxSurge":1,"maxUnavailable":0}}}}' deployment.extensions/myapp-deploy patched [root@master yaml]# kubectl describe deployments myapp-deploy Name: myapp-deploy Namespace: default CreationTimestamp: Fri, 02 Aug 2019 01:33:47 +0800 Labels: app=myapp release=canary Annotations: deployment.kubernetes.io/revision: 2 kubectl.kubernetes.io/last-applied-configuration: {"apiVersion":"apps/v1","kind":"Deployment","metadata":{"annotations":{},"name":"myapp-deploy","namespace":"default"},"spec":{"replicas":3... Selector: app=myapp,release=canary Replicas: 5 desired | 5 updated | 5 total | 5 available | 0 unavailable StrategyType: RollingUpdate MinReadySeconds: 0 RollingUpdateStrategy: 0 max unavailable, 1 max surge #已经修改 .....
15、kubectl set
用法:
kubectl set SUBCOMMAND [options]
15.1、kubectl set image
用法:
kubectl set image (-f FILENAME | TYPE NAME) CONTAINER_NAME_1=CONTAINER_IMAGE_1 ... CONTAINER_NAME_N=CONTAINER_IMAGE_N [options]
15.1.1、修改deployment的镜像版本
[root@master yaml]# kubectl set image deployment myapp-deploy myapp=ikubernetes/myapp:v3 deployment.extensions/myapp-deploy image updated
15.1.2、修改daemonset的镜像版本
[root@master yaml]# kubectl set image daemonsets filebeat-ds filebeat=ikubernetes/filebeat:5.6.6-alpine daemonset.extensions/filebeat-ds image updated
16、kubectl config
用法:
kubectl config SUBCOMMAND [options]
16.1、kubectl config view:显示合并的 kubeconfig 配置或一个指定的 kubeconfig 文件
[root@master yaml]# kubectl config view apiVersion: v1 clusters: - cluster: certificate-authority-data: DATA+OMITTED server: https://192.168.10.48:6443 name: kubernetes contexts: - context: cluster: kubernetes user: kubernetes-admin name: kubernetes-admin@kubernetes current-context: kubernetes-admin@kubernetes kind: Config preferences: {} users: - name: kubernetes-admin user: client-certificate-data: REDACTED client-key-data: REDACTED
17、kubectl cp:类似docker cp,区别在于拷贝目录下的文件到本地
[root@master nginx]# kubectl cp -n ingress-nginx nginx-ingress-controller-8bddb774f-jxzk2:/etc/nginx/ . tar: Removing leading `/' from member names [root@master nginx]# ls fastcgi.conf fastcgi_params geoip koi-win mime.types modsecurity nginx.conf opentracing.json scgi_params template uwsgi_params.default fastcgi.conf.default fastcgi_params.default koi-utf lua mime.types.default modules nginx.conf.default owasp-modsecurity-crs scgi_params.default uwsgi_params win-utf
kubectl cordon:标记节点为不可调度节点
[root@master helm]# kubectl cordon node2 node/node2 cordoned [root@master yaml]# kubectl apply -f deploy-demo.yaml deployment.apps/myapp-deploy created [root@master yaml]# kubectl get pods -o wide NAME READY STATUS RESTARTS AGE IP NODE NOMINATED NODE READINESS GATES eureka-deploy-579bf579dc-7gzfh 1/1 Running 0 111m 10.244.2.104 node2 <none> <none> eureka-deploy-579bf579dc-9vvk6 1/1 Running 0 111m 10.244.1.167 node1 <none> <none> myapp-deploy-74fb9bdf9b-8cg5l 1/1 Running 0 7s 10.244.1.169 node1 <none> <none> myapp-deploy-74fb9bdf9b-fmxjr 1/1 Running 0 7s 10.244.1.172 node1 <none> <none> myapp-deploy-74fb9bdf9b-gk4q2 1/1 Running 0 7s 10.244.1.170 node1 <none> <none> myapp-deploy-74fb9bdf9b-hxchc 1/1 Running 0 7s 10.244.1.168 node1 <none> <none> myapp-deploy-74fb9bdf9b-jk4mj 1/1 Running 0 7s 10.244.1.171 node1 <none> <none>
kubectl uncordon:标记节点为可调度节点
[root@master yaml]# kubectl uncordon node2 node/node2 uncordoned
kubectl cluster-info:查看集群信息
[root@master ~]# kubectl cluster-info Kubernetes master is running at https://192.168.10.48:6443 KubeDNS is running at https://192.168.10.48:6443/api/v1/namespaces/kube-system/services/kube-dns:dns/proxy To further debug and diagnose cluster problems, use 'kubectl cluster-info dump'.
kubectl api-versions:查询 Kubernetes API 支持的 API 版本
[root@master ~]# kubectl api-versions admissionregistration.k8s.io/v1beta1 apiextensions.k8s.io/v1beta1 apiregistration.k8s.io/v1 apiregistration.k8s.io/v1beta1 apps/v1 apps/v1beta1 apps/v1beta2 .....
kubectl api-resources:查看k8s支持的资源类型
[root@master ~]# kubectl api-resources NAME SHORTNAMES APIGROUP NAMESPACED KIND bindings true Binding componentstatuses cs false ComponentStatus configmaps cm true ConfigMap endpoints ep true Endpoints events ev true Event limitranges limits true LimitRange namespaces ns false Namespace nodes no false Node
查看指定群组支持的资源类型
[root@master ~]# kubectl api-resources --api-group=storage.k8s.io NAME SHORTNAMES APIGROUP NAMESPACED KIND csidrivers storage.k8s.io false CSIDriver csinodes storage.k8s.io false CSINode storageclasses sc storage.k8s.io false StorageClass volumeattachments storage.k8s.io false VolumeAttachment
相关文章推荐
- kubectl常用命令总结
- batch 常用命令的总结
- HBase总结(十三)HBase Shell 常用命令及例子
- linux常用命令入门总结
- Git常用基础命令总结
- svn使用说明及常用命令总结
- redis常用命令总结
- [总结]Git常用命令
- Linux常用命令总结
- docker 常用命令(自己总结)
- Linux常用命令总结
- 常用命令及参数正则表达式总结
- linux 常用命令总结(1)
- Git常用命令总结(持续收集...)
- Linux查看系统日志的一些常用命令总结
- git常用命令总结(待补充)
- Linux Shell 常用命令与目录分区的学习总结
- Maven介绍,包括作用、核心概念、用法、常用命令、扩展及配置
- git 常用命令总结
- Linux常用命令总结