• k8s2-5日常使用操作指令


    7.k8s日常命令总结

    一、查看命令

    1查看所有namespace的pods运行情况

    kubectl get pods --all-namespaces 
    
    • 1

    2查看具体pods,记得后边跟namespace名字哦

    kubectl get pods kubernetes-dashboard-76479d66bb-nj8wr --namespace=kube-system 
    
    • 1

    3查看pods具体信息

    kubectl get pods -o wide kubernetes-dashboard-76479d66bb-nj8wr --namespace=kube-system 
    
    • 1

    4获取所有deployment

     kubectl get deployment --all-namespaces 
    
    • 1

    image-20220805180335334

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

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

    6列出该 namespace 中的所有 pod 包括未初始化的

     kubectl get pods --include-uninitialized 
    
    • 1

    7查看deployment

    kubectl get deployment nginx-app 
    
    • 1

    8查看rc和servers

    kubectl get rc,services 
    
    • 1

    9查看pods结构信息(重点,通过这个看日志分析错误)对控制器和服务,node同样有效

    kubectl describe pods xxxxpodsname --namespace=xxxnamespace 
    
    • 1

    ●其他控制器类似,就是kubectl get 控制器 控制器具体名称

    10查看pod日志

    kubectl logs $POD_NAME 
    
    • 1

    11查看pod变量

     kubectl exec my-nginx-5j8ok -- printenv | grep SERVICE 
    
    • 1

    二、集群查看

    1查看集群健康情况

    kubectl get cs 
    
    • 1

    2集群核心组件运行情况

     kubectl cluster-info 
    
    • 1

    3查看表空间名

     kubectl get namespaces 
    
    • 1

    4查看版本

     kubectl version 
    
    • 1

    5查看API

    kubectl api-versions 
    
    • 1

    6查看事件

     kubectl get events 
    
    • 1

    7获取全部节点

     kubectl get nodes 
    
    • 1

    8删除节点

     kubectl delete node k8s2 
    
    • 1

    三、创建资源

    1创建资源

    kubectl create -f ./nginx.yaml 
    
    • 1

    2创建+更新,可以重复使用

     kubectl apply -f xxx.yaml 
    
    • 1

    3创建当前目录下的所有yaml资源

    kubectl create -f . 
    
    • 1

    4使用多个文件创建资源

     kubectl create -f ./nginx1.yaml -f ./mysql2.yaml 
    
    • 1

    5使用目录下的所有清单文件来创建资源

    kubectl create -f ./dir 
    
    • 1

    6使用 url 来创建资源

     kubectl create -f https://git.io/vPieo 
    
    • 1

    7创建带有终端的pod

     kubectl run -i --tty busybox --image=busybox 
    
    • 1

    8启动一个 nginx 实例

     kubectl run nginx --image=nginx 
    
    • 1

    9启动多个pod

     kubectl run mybusybox --image=busybox --replicas=5 
    
    • 1

    10获取 pod 和 svc 的文档

    kubectl explain pods,svc 
    
    • 1

    四、更新

    1滚动更新 pod frontend-v1

     kubectl rolling-update python-v1 -f python-v2.json 
    
    • 1

    2更新资源名称并更新镜像

     kubectl rolling-update python-v1 python-v2 --image=image:v2 
    
    • 1

    3更新 frontend pod 中的镜像

     kubectl rolling-update python --image=image:v2 
    
    • 1

    4退出已存在的进行中的滚动更新

     kubectl rolling-update python-v1 python-v2 --rollback 
    
    • 1

    5基于 stdin 输入的 JSON 替换 pod

    cat pod.json | kubectl replace -f - 
    
    • 1

    6为 nginx RC 创建服务,启用本地 80 端口连接到容器上的 8000 端口

     kubectl expose rc nginx --port=80 --target-port=8000 
    
    • 1

    7更新单容器 pod 的镜像版本(tag)到 v4

     kubectl get pod nginx-pod -o yaml | sed 's/\(image:myimage\):.*$/\1:v4/' | kubectl replace -f – 
    
    • 1

    8添加标签

     kubectl label pods nginx-pod new-label=awesome 
    
    • 1

    9添加注解

     kubectl annotate pods nginx-pod icon-url=http://goo.gl/XXBTWq 
    
    • 1

    10自动扩展

    deployment kubectl autoscale deployment foo --min=2 --max=10 
    
    • 1

    五、编辑资源

    1编辑名为 docker-registry 的 service

     kubectl edit svc/docker-registry 
    
    • 1

    2修改启动参数

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

    六、动态伸缩pod

    1将foo副本集变成3个

    kubectl scale --replicas=3 rs/foo 
    
    • 1

    2缩放“foo”中指定的资源。

     kubectl scale --replicas=3 -f foo.yaml 
    
    • 1

    3将deployment/mysql从2个变成3个

    kubectl scale --current-replicas=2 --replicas=3 deployment/mysql 
    
    • 1

    4变更多个控制器的数量

     kubectl scale --replicas=5 rc/foo rc/bar rc/baz 
    
    • 1

    5查看变更进度

     kubectl rollout status deploy deployment/mysql 
    
    • 1

    七、label 操作

    1增加节点lable值

    kubectl label nodes node1 zone=north 
    
    • 1

    2增加lable值 [key]=[value]

    kubectl label pod redis-master-1033017107-q47hh role=master 
    
    • 1

    3删除lable值

     kubectl label pod redis-master-1033017107-q47hh role- 
    
    • 1

    4修改lable值

     kubectl label pod redis-master-1033017107-q47hh role=backend --overwrite 
    
    • 1

    八、滚动升级

    1配置文件滚动升级

     kubectl rolling-update redis-master -f redis-master-controller-v2.yaml 
    
    • 1

    2命令升级

     kubectl rolling-update redis-master --image=redis-master:2.0 
    
    • 1

    3pod版本回滚

     kubectl rolling-update redis-master --image=redis-master:1.0 --rollback 
    
    • 1

    九、etcdctl 常用操作

    1检查网络集群健康状态

    etcdctl cluster-health 
    
    • 1

    2带有安全认证检查网络集群健康状态

    etcdctl --endpoints=https://192.168.71.221:2379 cluster-health 
    
    • 1

    3查看集群成员

    etcdctl member list 
    
    • 1

    4设置网络配置

    etcdctl set /k8s/network/config ‘{ “Network”: “10.1.0.0/16” }’ 
    
    • 1

    5获取网络配置

    etcdctl get /k8s/network/config 
    
    • 1

    十、删除资源

    根据label删除:

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

    2删除 pod.json 文件中定义的类型和名称的 pod

    kubectl delete -f ./pod.json 
    
    • 1

    3删除名为“baz”的 pod 和名为“foo”的 service

    kubectl delete pod,service baz foo 
    
    • 1

    4删除具有 name=myLabel 标签的 pod 和 serivce

    kubectl delete pods,services -l name=myLabel 
    
    • 1

    5删除具有 name=myLabel 标签的 pod 和 service,包括尚未初始化的 kubectl delete

    pods,services -l name=myLabel --include-uninitialized 
    
    • 1

    6删除 my-ns namespace下的所有 pod 和 serivce,包括尚未初始化的

    kubectl -n my-ns delete po,svc --all 
    
    • 1

    7强制删除

    kubectl delete pods prometheus-7fcfcb9f89-qkkf7 --grace-period=0 --force 
    
    • 1

    8删除指定deployment

    kubectl delete deployment kubernetes-dashboard --namespace=kube-system 
    
    • 1

    9删除指定svc

    kubectl delete svc kubernetes-dashboard --namespace=kube-system 
    
    • 1

    10根据资源清单文件删除

    kubectl delete -f kubernetes-dashboard.yaml 
    
    • 1

    11强制替换,删除后重新创建资源。会导致服务中断。

    kubectl replace --force -f ./pod.json 
    
    • 1

    十一、交互

    1dump 输出 pod 的日志(stdout)

     kubectl logs nginx-pod 
    
    • 1

    2dump 输出 pod 中容器的日志(stdout,pod 中有多个容器的情况下使用)

    kubectl logs nginx-pod -c my-container 
    
    • 1

    3流式输出 pod 的日志(stdout)

     kubectl logs -f nginx-pod 
    
    • 1

    4流式输出 pod 中容器的日志(stdout,pod 中有多个容器的情况下使用)

     kubectl logs -f nginx-pod -c my-container 
    
    • 1

    5交互式 shell 的方式运行

    pod kubectl run -i --tty busybox --image=busybox -- sh 
    
    • 1

    6连接到运行中的容器

     kubectl attach nginx-pod -i 
    
    • 1

    7转发 pod 中的 6000 端口到本地的 5000 端口

     kubectl port-forward nginx-pod 5000:6000 
    
    • 1

    8在已存在的容器中执行命令(只有一个容器的情况下)

     kubectl exec nginx-pod -- ls / 
    
    • 1

    9在已存在的容器中执行命令(pod 中有多个容器的情况下)

     kubectl exec nginx-pod -c my-container -- ls / 
    
    • 1

    10显示指定 pod和容器的指标度量

     kubectl top pod POD_NAME --containers 
    
    • 1

    11进入pod

     kubectl exec -ti podName /bin/bash 
    
    • 1

    十二、调度配置

    1标记 my-node 不可调度

    kubectl cordon k8s-node 
    
    • 1

    2清空 my-node 以待维护

    kubectl drain k8s-node 
    
    • 1

    3标记 my-node 可调度

    kubectl uncordon k8s-node 
    
    • 1

    4显示 my-node 的指标度量

    kubectl top node k8s-node 
    
    • 1

    5将当前集群状态输出到 stdout

     kubectl cluster-info dump 
    
    • 1

    6将当前集群状态输出到 /path/to/cluster-state

    kubectl cluster-info dump --output-directory=/path/to/cluster-state 
    
    • 1

    ●如果该键和影响的污点(taint)已存在,则使用指定的值替换

    7查看kubelet进程启动参数

    kubectl taint nodes foo dedicated=special-user:NoSchedule 
    
    • 1

    8查看日志

    journalctl -u kubelet -f 
    
    • 1

    十三、导出配置文件

    1导出proxy

     kubectl get ds -n kube-system -l k8s-app=kube-proxy -o yaml>kube-proxy-ds.yaml 
    
    • 1

    2导出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 
    
    • 1

    3导出所有 configmap

     kubectl get configmap -n kube-system -o wide -o yaml > configmap.yaml 
    
    • 1

    十四、复杂操作命令

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

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

    et -f

    
    ### 十三、导出配置文件 
    
    1导出proxy
    
    
    • 1
    • 2
    • 3
    • 4
    • 5

    kubectl get ds -n kube-system -l k8s-app=kube-proxy -o yaml>kube-proxy-ds.yaml

    
    2导出kube-dns
    
    
    • 1
    • 2
    • 3

    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

    
    3导出所有 configmap
    
    
    • 1
    • 2
    • 3

    kubectl get configmap -n kube-system -o wide -o yaml > configmap.yaml

    
    ### 十四、复杂操作命令 
    
    1删除kube-system 下Evicted状态的所有pod
    
    ```shell
     kubectl get pods -n kube-system |grep Evicted| awk ‘{print $1}’|xargs 
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
  • 相关阅读:
    在SpringBoot项目中整合拦截器
    Spring创建和使用
    智慧卫生间
    Bootstrap Blazor 使用模板创建项目
    【Linux-达梦】A1.数据库部署
    树表——B树、B+树
    逐字稿 | 视频理解论文串讲(下)【论文精读】
    【易错小点记录】坑人的for循环与逻辑或
    java计算机毕业设计演唱会门票订售及管理系统源码+系统+数据库+lw文档
    高光谱遥感学习入门丨高光谱数据处理基础、Python和Matlab高光谱遥感数据处理
  • 原文地址:https://blog.csdn.net/tianmingqing0806/article/details/126183474