跳转到主要内容

k8s常用命令

常用命令行

# 查看master组件状态
kubectl get cs

# 查看集群节点
kubectl get nodes

# 查看pod信息
kubectl get pods

# 获取发布信息
kubectl get deployments

# 查看集群信息
kubectl cluster-info

# 删除节点
kubectl delete node node42.vpclub.io

# 删除 pod
kubectl delete pod nginx-3654852276-2dt73

# 删除deployment
kubectl delete deployment nginx

# 详细日志调试工具
kubectl describe pods

# 进入容器
kubectl exec -it <nginx-webapp-2067515279-1z0lb> /bin/bash

# 查看已经部署的yml配置信息
kubectl get deploy NAME -o yaml

# 强行删除
kubectl delete pod <pod名> --grace-period=0 --force

# 为node增加label
kubectl label nodes 190.vpclub.io <label>

# 删除node的label,既在label后面加 - 
kubectl label nodes 190.vpclub.io <label>-

# 修改一个label ,需要增加参数 --overwrite
kubectl label nodes 190.vpclub.io role=apache --overwrite

# 节点不参与调度,同理,恢复标记为在 label后面加 -
# 节点不参与调度并立即驱离已经存在的POD
kubectl taint nodes 190.vpclub.io node-role.kubernetes.io/master=:NoExecute

# 节点不参与调度,已经被调度的不受影响
kubectl taint nodes 190.vpclub.io node-role.kubernetes.io/master=:NoSchedule

# 重新调度一组POD
kubectl get pod -n kube-system |grep kube-proxy |awk '{system("kubectl delete pod "$1" -n kube-system")}'

# 标记为维护
kubectl cordon 17.vpclub.io

# 取消维护状态
kubectl uncordon 5-16.vpclub.io

# 删除nginx-ingress后的报错
kubectl delete -A  ValidatingWebhookConfiguration ingress-nginx-admission

# 获取不正常的POD
kubectl get pods --all-namespaces| grep "Terminating\|OutOfpods\|CrashLoopBackOff\|Evicted\|ContainerStatusUnknown\|Error"

# 强制删除全部不正常的POD
kubectl get pods -n trade | grep "Terminating\|OutOfpods\|CrashLoopBackOff\|Evicted\|ContainerStatusUnknown\|Error" | awk '{print $1}' | xargs kubectl delete pod -n trade --force --grace-period=0

# 使用环境变量删除所有不正常的PO
_opns=kube-system && kubectl get pods -n ${_opns} | grep "Terminating\|OutOfpods\|CrashLoopBackOff\|Evicted\|ContainerStatusUnknown\|Error" | awk '{print $1}' | xargs kubectl delete pod -n ${_opns} --force --grace-period=0

# 缩放实例
kubectl scale -n devops-default  --replicas=0  deployment/devops-admin-api

# 把某个NS下面的部署全部缩放为0
kubectl scale deploy  --replicas=0 --all  -n park-zjy

# 最近有活动d部署
kubectl get deploy --all-namespaces --sort-by=.metadata.creationTimestamp

# 查看节点cpu内存使用情况,需要先安装metrics-server
kubectl top node --sort-by memory

# 查看pod内存使用情况,需要先安装metrics-server
#kubectl top pods --sort-by memory

删除master节点

# 先安装删除node节点的方式删除节点
kubectl delete node 01.vpclub.io

# 随便找一个etcd容器,进入到容器内
kubectl exec -it etcd-00 sh -n kube-system

# 在Pod 中设置登录 ETCD 的命令(临时设置别名,退出后失效)
export ETCDCTL_API=3
alias etcdctl='etcdctl --endpoints=https://127.0.0.1:2379 --cacert=/etc/kubernetes/pki/etcd/ca.crt --cert=/etc/kubernetes/pki/etcd/server.crt --key=/etc/kubernetes/pki/etcd/server.key'

# 查看集群节点列表
etcdctl member list

# 示例:
669bc6472fb13679, started, master1, https://192.168.1.19:2380, https://192.168.1.19:2379, false
959c93e3261aadcb, started, master2, https://192.168.1.20:2380, https://192.168.1.20:2379, false
ca5f1f6f780545ba, started, master3, https://192.168.1.23:2380, https://192.168.1.23:2379, false

# 删除master3节点
etcdctl member remove ca5f1f6f780545ba

让pod可以运行在每一台不受污点影响

# 加在与volumes同级
      tolerations:
        - effect: NoSchedule
          operator: Exists
        - key: CriticalAddonsOnly
          operator: Exists
        - effect: NoExecute
          operator: Exists