Kubernetes常用命令
相关资料
重启kubelet
systemctl stop kubelet systemctl daemon-reload systemctl start kubelet
查看
kubectl get nodes #查看节点列表 kubectl get pods #查看pod列表 kubectl get pod <pod-name> #查看某个pod kubectl get rc #查看Replication Controller kubectl get svc #查看Service kubectl get deploy #查看Deployment kubectl get componentstatus #查看所有组件状态 kubectl get all #查看所有组件 kubectl api-resources #查询通过kubectl get xxx命令支持的资源列表 --all-namespaces #查看所有命名空间下的 -n <namespace> #查看指定命名空间下的 -o wide #查看详细信息 kubectl get pods -A #查看所有命名空间下的pod kubectl get pod <pod-name> -o jsonpath={.spec.containers[*].name} #查看pod内的容器 kubectl get pod <pod-name> -o yaml #查看pod对应的yaml文件内容
查看Secret
kubectl get secrets #查看所有Secret kubectl describe secrets/mongo-mongodb #查看mongo-mongodb的Secret描述 kubectl get secrets/mongo-mongodb -o jsonpath='{.data}' #查看mongo-mongodb的Secret内容 -o jsonpath='{.data.accessKey}' #查看mongo-mongodb的Secret中的data下的accessKey -o jsonpath='{.data.accessKey}' | base64 -d #查看mongo-mongodb的Secret中的data下的accessKey,并使用base64解密
查看资源详细状态
kubectl describe nodes <node-name>
kubectl describe pods <pod-name>
-n <namespace> #指定命名空间下的
删除
kubectl delete node <node-name> #删除某个节点 kubectl delete pod <pod-name> #删除某一个pod(会先停掉pod再删除,比较慢) kubectl delete pod <pod-name> --force #强制删除某一个pod(立马删掉) kubectl delete svc <service-name> #删除某个serivce kubectl delete deploy <deploy-name> #删除某个Deployment --all #所有的 --all-namespaces #所有命名空间下的 -n <namespace> #指定命名空间下的 kubectl delete namespace <namespace-name> #删除某个namespace(慎用)。删除后,会删除该namespace下的所有资源
更新
kubectl edit deploy <deploy-name> #编辑Deployment。修改镜像版本号,可以实现滚动更新 kubectl set image deploy <deploy-name> nginx=nginx:1.15 #修改某个Deployment中nginx镜像的版本,可以实现滚动更新 kubectl scale deploy <deploy-name> -n <namespace> --replicas=3 #修改某个Deployment的副本数为3
回滚
kubectl rollout undo deploy <deploy-name> #回滚Deployment。默认是回滚到上一个版本 kubectl rollout undo deploy <deploy-name> --to-revision=<revision> #回滚Deployment到指定版本 kubectl rollout history deploy <deploy-name> #查看升级历史 kubectl rollout status deploy <deploy-name> #查看回滚状态
创建
kubectl create -f nginx_pod.yaml #创建一个pod kubectl apply -f nginx_pod.yaml #更新运行的pod信息 kubectl create namespace <namespace-name> #创建一个Namespace
交互
kubectl logs -f <pod-name> # 实时打印pod的日志 -f <pod-name> -c <container-name> # 实时打印pod内的容器的日志 --previous <pod-name> #查看pod重启前的日志 kubectl port-forward --address=0.0.0.0 pod/<pod-name> 8888:80 #将pod的80端口映射到宿主机的8888端口 kubectl exec <pod-name> -- date #在pod的第一个容器内运行date命令并打印输出 <pod-name> -- env #在pod的第一个容器内运行env命令并打印输出 <pod-name> -c <container-name> -- date #在pod的指定容器内运行date命令并打印输出 -it <pod-name> /bin/bash #在pod的第一个容器中运行bash命令并进入交互界面
kubectl cp -n <namespace> -c <container-name> <dst-path> <pod-name>:<source-path> #将主机上文件拷贝到pod(容器中文件必须是绝对路径)
kubectl cp -n <namespace> -c <container-name> <pod-name>:<source-path> <dst-path> #将pod中文件拷贝到主机(容器中文件默认是从work dir开始的,所以source-path要去掉work dir)
管理多个集群环境
# 初始化多个context(在~/.kube目录下执行) KUBECONFIG=<context-name1>:<context-name2>:<context-name3> kubectl config view --flatten > $HOME/.kube/config kubectl config get-contexts #查看所有context kubectl config view #合并展示所有context配置 kubectl config use-context <context-name> #切换到指定context
帮助
kubectl explain <resource> #查看资源下的所有字段
pod #查看pod下的所有字段配置
pod.apiVersion #查看pod下的apiVersion配置
deploy.spec.template.spec.containers #查看deploy下的containers的配置
实战
kubectl delete pods -n infra-system $(kubectl get pod -A | grep -v Running | awk '{print $2}') #删掉 ns=infra-system 下的非 Running 的pod kubectl get ns -A | grep ids- | awk '{print $1}' # 获取命名空间中第一个包含ids-的命令空间
知识改变世界