Kubernetes常用命令

相关资料

kubectl 语法

 

重启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-的命令空间

 

posted @ 2021-11-02 09:24  仅此而已-远方  阅读(632)  评论(0编辑  收藏  举报