kubectl 命令大集合

1、创建pod

kubectl create -f mysql-rc.yaml      #不建议使用,无法更新,必须先delete
kubectl apply  -f mysql-rc.yaml      #创建+更新,可以重复使用

2、删除pod

kubectl delete -f mysql-rc.yaml

3、查看pod信息

kubectl describe pod  (pod的id)

4、获取pod运行在哪个节点上的信息。

kubectl get po -o wide  

5、获取所有pod

kubectl get pod --all-namespaces

6、获取namespace 信息

kubectl get namespace

7、获取service信息

kubectl get service
kubectl get svc
说明:以上两条命令效果相同

8、获取node信息

kubectl get nodes

9、获取rc信息

kubectl get rc

10、获取deployment信息

kubectl get deploy

11、以json格式输入pod的详细信息

kubectl get pod <podname> -o json 

12、pod集群扩容及缩容

kubectl scale rc nginx --replicas=2       #表示副本数量为2个
#replicationcontroller "nginx" scaled
pod缩容     #将 --replicas 设置为比当前 Pod 副本数量更小的数字,系统将会 “杀掉” 一些运行中的 Pod,即可实现应用集群缩容)
例如:
kubectl scale rc nginx --replicas=1       #表示副本数量为1个

13、收缩pod (rc资源类型)

kubectl scale rc nginx --replicas=0     #将pod数收缩为0

14、收缩pod (deploy资源类型)

kubectl scale deploy nginx --replicas=0       #将pod数收缩为0
kubectl scale deploy/nginx --replicas=0。   #将pod数收缩为0
说明:以上两条命令效果等同

15、deployment扩展

kubectl scale deploy/nginx --replicas=2  #表示副本数量为2个

16、kubectl查看日志

kubectl logs --tail=20 mysql-rj5z0

17、k8s删除一个Node节点并重新加入集群
17.1、k8s删除一个节点使用以下命令
17.2、删除一个节点前,先驱赶掉上面的pod

kubectl drain 172.16.20.134 --delete-local-data
#172.16.20.134 为node节点ip

17.3、删除节点

kubectl delete node 172.16.20.134
kubectl delete node nodename

17.3.1、删除前

[root@k8s_master ssl]# kubectl get nodes
NAME            STATUS    ROLES     AGE       VERSION
172.16.20.130   Ready     <none>    39d       v1.8.3
172.16.20.134   Ready     <none>    1m        v1.8.3

17.3.2、删除后

[root@k8s_master ssl]# kubectl get nodes
NAME            STATUS    ROLES     AGE       VERSION
172.16.20.130   Ready     <none>    39d       v1.8.3

从上面看已经删除了172.16.20.134节点
说明:删除一个节点后,这个节点如果重新启动kubelet服务的话,在master节点还是可以看到该节点的
17.4、彻底删除node节点
17.4.1、删除以下文件

[root@k8s_node2 kubernetes]# ll kubelet.kubeconfig 
-rw-------. 1 root root 2280 11月 21 01:16 kubelet.kubeconfig
[root@k8s_node2 ssl]# ll kubelet*
-rw-r--r--. 1 root root 1046 11月 21 01:16 kubelet-client.crt
-rw-------. 1 root root  227 11月 21 01:16 kubelet-client.key
-rw-r--r--. 1 root root 1115 11月 21 01:16 kubelet.crt
-rw-------. 1 root root 1675 11月 21 01:16 kubelet.key

以上这些文件是在node上的kubelet启动后向master发出csr请求通过后生成的文件,删除后,重新启动kubelet就会重新发出csr请求,这样在master上重新通过csr请求就可以吧该节点重新加入到集群里了,以上这些文件也会自动生成。

[root@k8s_master ssl]# kubectl get csr
NAME                                                   AGE       REQUESTOR           CONDITION
node-csr--6yFaU0DijbaqnhPKsfqOlWxJJ2rovhz-15UcffuHcM   1h        kubelet-bootstrap   Approved,Issued
node-csr-5guRbgIjHdv2n8fmYccxcTtWjlSf3AT3S4wlX3q2SuY   39d       kubelet-bootstrap   Approved,Issued
node-csr-Z7lJElJ1gOtdJAMqJPjJdjCPEwAp2tM7KrGzQw5b6UE   18m       kubelet-bootstrap   Approved,Issued

重新通过

[root@k8s_master ssl]# kubectl certificate approve node-csr-Z7lJElJ1gOtdJAMqJPjJdjCPEwAp2tM7KrGzQw5b6UE
certificatesigningrequest "node-csr-Z7lJElJ1gOtdJAMqJPjJdjCPEwAp2tM7KrGzQw5b6UE" approved

重新查看集群节点

[root@k8s_master ssl]# kubectl get nodes
NAME            STATUS    ROLES     AGE       VERSION
172.16.20.130   Ready     <none>    39d       v1.8.3
172.16.20.134   Ready     <none>    5s        v1.8.3

从以上可以看出,已经重新加入集群了
18、k8s零停机滚动发布微服务

kubectl set image deploy/my-tomcat my-tomcat=tomcat:latest

19、滚动回滚(回滚到上一版本)

kubectl rollout undo deploy/my-tomcat

20、查看历史版本

kubectl rollout history deployment my-tomcat

21、回滚指定版本

kubectl  rollout undo deployment/my-tomcat --to-revision=<版次>

22、强制删除pod

kubectl delete pods <pod> --grace-period=0 --force

23、删除pod

kubectl delete deployment pod-name  -n kube-system

24、根据label删除pod

kubectl delete pod -l app=deployment -n kube-system

25、导出配置文件:

导出proxy
  kubectl get ds -n kube-system -l k8s-app=kube-proxy -o yaml>kube-proxy-ds.yaml
  导出kube-dns
  kubectl get deployment -n kube-system -l k8s-app=kube-dns -o yaml >kube-dns-dp.yaml
  kubectl get services -n kube-system -l k8s-app=kube-dns -o yaml >kube-dns-services.yaml
  导出所有 configmap
  kubectl get configmap -n kube-system -o wide -o yaml > configmap.yaml

26、封锁节点

kubectl cordon $NodeName

27、驱逐pod到其它节点

kubectl drain $NodeName --ignore-daemonsets

28、取消封锁

kubectl uncordon $NodeName

29、删除资源

kubectl delete -f ./pod.json # 删除 pod.json 文件中定义的类型和名称的 pod
kubectl delete pod,service cassandra cassandra # 删除名为“cassandra”的 pod 和名为“cassandra”的 service
kubectl delete pods,services -l name=myLabel # 删除具有 name=myLabel 标签的 pod 和 serivce
kubectl delete pods,services -l name=myLabel --include-uninitialized # 删除具有 name=myLabel 标签的 pod 和 service,包括尚未初始化的
kubectl -n my-ns delete po,svc --all # 删除 my-ns namespace 下的所有 pod 和 serivce,包括尚未初始化的与运行中的 Pod 交互
kubectl logs my-pod # dump 输出 pod 的日志(stdout)
kubectl logs my-pod -c my-container # dump 输出 pod 中容器的日志(stdout,pod 中有多个容器的情况下使用)
kubectl logs -f my-pod # 流式输出 pod 的日志(stdout)
kubectl logs -f my-pod -c my-container # 流式输出 pod 中容器的日志(stdout,pod 中有多个容器的情况下使用)
kubectl run -i --tty busybox --image=busybox – sh # 交互式 shell 的方式运行 pod
kubectl attach my-pod -i # 连接到运行中的容器
kubectl port-forward my-pod 5000:6000 # 转发 pod 中的 6000 端口到本地的 5000 端口
kubectl exec my-pod – ls / # 在已存在的容器中执行命令(只有一个容器的情况下)
kubectl exec my-pod -c my-container – ls / # 在已存在的容器中执行命令(pod 中有多个容器的情况下)
kubectl top pod POD_NAME --containers # 显示指定 pod 和容器的指标度量节点和集群交互
kubectl cordon my-node # 标记 my-node 不可调度
kubectl drain my-node # 清空 my-node 以待维护
kubectl uncordon my-node # 标记 my-node 可调度
kubectl top node my-node # 显示 my-node 的指标度量
kubectl cluster-info # 显示 master 和服务的地址
kubectl cluster-info dump # 将当前集群状态输出到 stdout
kubectl cluster-info dump --output-directory=/path/to/cluster-state # 将当前集群状态输出到 /path/to/cluster-state
  • 0
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

运维那些事~

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值