k8s command commands kubekey https://github.com/kubesphere/kubekey Rancher https://rancher.com/ archlinux install k8s ubuntu install k8s commands # 查看某一个 pod 配置 kubectl get pod <pod-name> -n <namespace> -o yaml # 找到 Pod 所属的 Controller(通常是 Deployment) kubectl get pod <pod-name> -o jsonpath="{.metadata.ownerReferences[0].name}" # 查看 Deployment 的 YAML 启动命令 kubectl get deployment bgp-opt-backend -o yaml # exec api kubectl exec -it "$(kubectl get pods | grep -Eo '^[^ ]+' |grep api)" -- bash # pod kubectl get pod -A -o wide # 查看 pod, 比如能看到镜像版本 kubectl describe pods pod0 # configmap kubectl apply -f redis-config.yaml kubectl get configmap kubectl get configmap -n namespace0 kubectl edit configmap configmap0 kubectl delete configmap configmap0 # 显示集群信息 kubectl cluster-info kubectl cluster-info dump # 查询所有节点标签信息 kubectl get node -o wide --show-labels # kube-system namespace 的 pod kubectl get pods -n kube-system kubectl label node 192.168.0.212 gpu=true kubectl get node -L gpu kubectl get node -L kubernetes.io/arch # delete lable kubectl label node minikube disktype- kubectl describe node node0 节点关机操作 # 1. 标记节点为不可调度(防止新 Pod 调度到该节点) kubectl cordon <node-name> # 2. 驱逐节点上的 Pod(优雅地将 Pod 迁移到其他节点) kubectl drain <node-name> --ignore-daemonsets --delete-emptydir-data # 3. 验证节点上是否还有 Pod 运行 kubectl get pods --all-namespaces -o wide | grep <node-name> # 4. 关机 sudo poweroff # 5. 节点重新上线后,恢复调度(取消不可调度状态) kubectl uncordon <node-name> # 查看 pod 状态 kubectl get pods --all-namespaces # kubectl exec # 注意:旧语法 `kubectl exec -it pod0 bash` 已废弃,必须用 -- 分隔命令 # "--" 用于将要传递给命令的参数与 kubectl 的参数分开,避免歧义 kubectl exec -it pod0 -- sh kubectl exec -it pod0 -n namespace0 -- sh kubectl exec --stdin --tty shell-demo -- /bin/bash # 精简镜像(alpine/distroless)通常没有 bash,用 sh 代替 # 不进入容器,直接执行单条命令并返回输出(不加 -it) kubectl exec pod0 -n namespace0 -- curl http://ip.3322.net kubectl exec pod0 -n namespace0 -- env # logs kubectl logs pod0 kubectl logs -f kube-flannel-ds-kp9mt kubectl logs -f --since 5m istiod-9cbc77d98-kk98q -n istio-system kubectl logs --namespace <NAMESPACE> <NAME> # scale, 扩缩容 kubectl scale --replicas=0 deployment/deployment0 # 滚动重启 deployment(推荐,不中断服务) # 触发 deployment 的滚动更新,逐步替换旧 Pod 为新 Pod,整个过程不会中断服务 # 等同于手动更新了一个无实际变化的字段(如 annotation),让 k8s 认为配置发生变化从而触发重启 # 适用场景:刷新 ConfigMap/Secret 挂载、解决 Pod 僵尸状态、强制拉取新镜像等 kubectl rollout restart deployment <deployment-name> -n <namespace> # 查看滚动更新状态 kubectl rollout status deployment <deployment-name> -n <namespace> # 回滚到上一个版本 kubectl rollout undo deployment <deployment-name> -n <namespace> # 查看发布历史(每次 apply/set image/rollout restart 都会产生一个新 revision) kubectl rollout history deployment <deployment-name> -n <namespace> # 示例输出: # REVISION CHANGE-CAUSE # 1 <none> # 2 kubectl set image deployment/nginx nginx=nginx:1.19 # 3 kubectl rollout restart deployment/nginx # 查看某个具体 revision 的详细信息 kubectl rollout history deployment <deployment-name> -n <namespace> --revision=2 # 回滚到指定 revision kubectl rollout undo deployment <deployment-name> -n <namespace> --to-revision=2 # 删除 pod kubectl delete pod pod0 ## 强制删除 kubectl delete pod pod0 --force --grace-period=0 kubectl delete pod pod0 -n namespace0 --force --grace-period=0 kubectl get pods calico-node-tcwtg -n kube-system -o yaml | grep image:| cut -c 4-|sort|uniq kubectl get nodes kubectl -o wide get pod kubectl describe svc svc0 kubectl describe pods -n namespace0 pod0 # ENDPOINTS kubectl get ep -n namespace0 kubectl set image deployment/kong kong=kong1.0 -n namespace0 # cp, source file: /tmp/foo, dest file: /tmp/bar kubectl cp namespace0/pod0:/tmp/foo /tmp/bar kubectl get pv,pvc kubectl get pod -A -o wide kubectl get pods --all-namespaces kubectl get svc ## 卸载服务, delete service and deployment kubectl delete -f deployment.yaml kubectl get configmap # 查看 k8s 版本 kubectl version --output=yaml systemctl status kubelet # 重置 kubeadm reset # 检查k8s dns svc 启动是否正常 kubectl get svc -n kube-system # 节点的状态 kubectl get nodes -o wide kubectl get pod # 所有 Pod 信息 kubectl get pods --all-namespaces -o wide kubectl get pods -A kubectl get pods -n kube-system -o wide # 重启 pod kubectl replace --force -f kube-flannel.yml kubectl delete node k8s-test-2.novalocal crictl ps kubeadm token list kubectl get svc nginx-app kubectl describe svc nginx-app # check status kubectl get pods --all-namespaces kubectl get pods --all-namespaces -o wide kubectl describe pod -n <NAMESPACE> <NAME> kubectl cluster-info kubectl get nodes kubectl get po -n default kubectl delete deployment deployment0 kubectl delete svc svc0 kubectl create namespace influxdb kubectl explain pod # 强制替换pod ,相当于重启 kubectl replace --force -f kube-flannel.yml kubectl rollout rollout 是 Kubernetes 的滚动发布机制,不是简单的重启。它按策略逐步替换 Pod,新 Pod 健康检查通过后旧 Pod 才下线,全程不中断服务。
...