请稍侯

k8s 常用命令汇集

18 July 2021
更多

通过yaml文件创建:

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

通过yaml文件删除:

kubectl delete -f xxx.yaml

查看kube-system namespace下面的pod/svc/deployment 等等(-o wide 选项可以查看存在哪个对应的节点)

kubectl get pod/svc/deployment -n kube-system

查看所有namespace下面的pod/svc/deployment等等

kubectl get pod/svc/deployment --all-namcpaces 

重启pod(无法删除对应的应用,因为存在deployment/rc之类的副本控制器,删除pod也会重新拉起来)

参考资料:http://docs.kubernetes.org.cn/635.html

#强制重启
kubectl replace --force -f testphp.yaml 

#没有yaml文件的重启方式
kubectl scale deployment esb-admin --replicas=0 -n {namespace}
kubectl scale deployment esb-admin --replicas=1 -n {namespace}

#使用“-o yaml”参数导出Pod模板并重建Pod【推荐】
kubectl get pod {podname} -n {namespace} -o yaml | kubectl replace --force -f -

查看pod描述:

kubectl describe pod XXX -n kube-system

查看pod 日志 (如果pod有多个容器需要加-c 容器名)

kubectl logs xxx -n kube-system 

删除应用(先确定是由说明创建的,再删除对应的kind):

kubectl delete deployment xxx -n kube-system

根据label删除:

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

扩容

kubectl scale deployment spark-worker-deployment --replicas=8

导出配置文件:

  导出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

复杂操作命令:

删除kube-system 下Evicted状态的所有pod:

kubectl get pods -n kube-system |grep Evicted| awk '{print $1}'|xargs kubectl delete pod  -n kube-system

  

以下为维护环境相关命令:

重启kubelet服务

systemctl daemon-reload
systemctl restart kubelet

修改启动参数

vim /etc/systemd/system/kubelet.service.d/10-kubeadm.conf

查看集群信息

kubectl cluster-info

查看各组件信息

kubectl get componentstatuses

查看kubelet进程启动参数

ps -ef | grep kubelet

查看日志:

journalctl -u kubelet -f

设为不可调度状态:

kubectl cordon node1

将pod赶到其他节点:

kubectl drain node1

解除不可调度状态

kubectl uncordon node1

master运行pod

kubectl taint nodes master.k8s node-role.kubernetes.io/master-

master不运行pod

kubectl taint nodes master.k8s node-role.kubernetes.io/master=:NoSchedule