• 运维:k8s常用命令大全


    Kubernetes是一个强大的容器编排平台,不管是运维、开发还是测试或多或少都会接触到,熟练的掌握k8s可大大提高工作效率和强化自身技能。

    集群管理

    1. 查看集群节点状态:

    kubectl get nodes

    2. 查看集群资源使用情况:

    kubectl top nodes

    3. 查看集群信息:

    kubectl cluster-info

    4. 获取节点详细信息:

    kubectl describe node <node-name>

    5. 给节点打标签:

    kubectl label nodes <node-name> key=value

    6. 取消节点标签:

    kubectl label nodes <node-name> key-

    7. 查看命名空间信息:

    kubectl describe namespace <namespace-name>

    Pod管理

    k8s中最小的可部署的计算单元,用来封装一个或多个紧密相关的容器应用,共享存储和网络。

    1. 列出所有Pod:

    kubectl get pods

    2. 查看特定Pod的日志:

    kubectl logs <pod-name> -n <namespace>

    其中-n后面跟命名空间名称,如果是在默认命名空间,可以省略。

    3. 运行一个临时的Pod:

    kubectl run my-pod --image=nginx

    4. 进入正在运行的Pod:

    kubectl exec -it <pod-name> -n <namespace> -- /bin/bash

    5. 查看特定Pod的详细信息:

    kubectl describe pod <pod-name> -n <namespace>

    6. 删除Pod:

    kubectl delete pod <pod-name> -n <namespace>

    7. 强制删除Pod

    kubectl delete pod <pod-name> -n <namespace> --force --grace-period=0

    8. 查看Pod事件:

    kubectl describe pod <pod-name> -n <namespace> | grep -i events

    Deployment管理

    用于管理Pod的声明式更新,自动处理Pod的创建、升级、回滚等,保证预期状态。

    1. 列出所有Deployments:

    kubectl get deployments

    2. 查看特定Deployment的详细信息:

    kubectl describe deployment <deployment-name> -n <namespace>

    3. 创建Deployment:

    1. kubectl create deployment <deployment-name> --image=
    2. kubectl create deployment my-deployment --image=nginx

    4. 更新Deployment中的容器镜像:

    1. kubectl set image deployment/<deployment-name> <container-name>=<new-container-image>
    2. kubectl set image deployment/my-deployment nginx=nginx:latest
     
    

    5. 回滚Deployment到上一个版本:

    kubectl rollout undo deployment/my-deployment

    6. 查看Deployment的更新历史:

    kubectl rollout history deployment <deployment-name>

    7. 回滚到指定版本的Deployment:​​​​​​​

    1. # 假设要回滚到第3次修订版:
    2. kubectl rollout undo deployment <deployment-name> --to-revision=3
     
    

    8. 查看Deployment指定标签下的的Pods状态

    kubectl get pods -l app=<deployment-label>

    9. 查看Deployment的事件:

    kubectl describe deployment <deployment-name> | grep -i events

    10. 监控Deployment的更新进度

    kubectl rollout status deployment <deployment-name>

    11. 扩大或缩小副本数量:

    kubectl scale deployment <deployment-name> --replicas=5

    12. 删除Deployment

    kubectl delete deployment <deployment-name>

    Service管理

    定义一种访问Pod的策略和抽象层,提供稳定的访问入口,实现服务发现与负载均衡。

    1. 列出所有Services:​​​​​​​

    1. kubectl get services
    2. kubectl get services -o wide
     
    

    2. 查看特定Service的详细信息:

    kubectl describe service <service-name> -n <namespace>

    3. 创建Service:

    可以直接通过命令行或者YAML文件创建:

    kubectl create service clusterip my-service --tcp=80:8080

    4. 暴露Deployment为Service:

    自动创建Service指向Deployment的所有Pods:

    kubectl expose deployment <deployment-name> --type=LoadBalancer --port=80 --target-port=8080

    5. 编辑Service配置:

    kubectl edit service <service-name> -n <namespace>

    6. 更改Service类型:

    kubectl patch service  -p '{"spec": {"type": "NodePort"}}'

    7. 删除Service:

    kubectl delete service <service-name> -n <namespace>

    8. 创建ClusterIP类型的service

    ClusterIP为Service分配一个仅集群内部可访问的IP地址。

    1. # 命令行创建:
    2. kubectl create service clusterip my-service --tcp=80:8080
    3. # 基于yaml文件创建:
    4. apiVersion: v1
    5. kind: Service
    6. metadata:
    7. name: my-service
    8. spec:
    9. selector:
    10. app: MyApp
    11. ports:
    12. - protocol: TCP
    13. port: 80
    14. targetPort: 8080
    15. type: ClusterIP

    9. 创建NodePort类型的service

    NodePort会在每个节点上开放一个静态端口,供外部访问集群内部的服务。

    1. # 命令行创建:
    2. kubectl expose deployment my-deployment --type=NodePort --port=80 --target-port=8080
    3. # 基于yaml文件创建:
    4. apiVersion: v1
    5. kind: Service
    6. metadata:
    7. name: my-service-nodeport
    8. spec:
    9. selector:
    10. app: MyApp
    11. ports:
    12. - protocol: TCP
    13. port: 80
    14. targetPort: 8080
    15. nodePort: 30080 # 指定节点上的端口
    16. type: NodePort

    10. 创建LoadBalancer类型的service

    适用于需要云提供商的负载均衡器来暴露服务的情况。

    1. # 命令行创建:
    2. kubectl expose deployment my-deployment --type=LoadBalancer --port=80 --target-port=8080
    3. # 基于yaml文件创建:
    4. apiVersion: v1
    5. kind: Service
    6. metadata:
    7. name: my-service-loadbalancer
    8. spec:
    9. selector:
    10. app: MyApp
    11. ports:
    12. - protocol: TCP
    13. port: 80
    14. targetPort: 8080
    15. type: LoadBalancer

    ​​​​​​​

    PV/PVC管理

    Persistent Volumes (PVs) 提供了持久化的存储资源,PV类型多种多样,支持不同的存储后端,如本地存储、网络存储(如NFS、GlusterFS、Ceph等)。

    1. 列出所有PV:

    kubectl get pv

    2. 查看PV详细信息:

    kubectl describe pv <pv-name>

    3. 创建本地PV:

    1. apiVersion: v1
    2. kind: PersistentVolume
    3. metadata:
    4. name: local-pv-example
    5. spec:
    6. capacity:
    7. storage: 10Gi
    8. accessModes:
    9. - ReadWriteOnce
    10. persistentVolumeReclaimPolicy: Retain
    11. storageClassName: local-storage
    12. local:
    13. path: /mnt/data
    14. nodeAffinity:
    15. required:
    16. nodeSelectorTerms:
    17. - matchExpressions:
    18. - key: kubernetes.io/hostname
    19. operator: In
    20. values:
    21. - node01 # 指定节点名称
     
    

    4. 创建NFS PV

    1. apiVersion: v1
    2. kind: PersistentVolume
    3. metadata:
    4. name: nfs-pv-example
    5. spec:
    6. capacity:
    7. storage: 10Gi
    8. accessModes:
    9. - ReadWriteMany
    10. persistentVolumeReclaimPolicy: Recycle
    11. storageClassName: nfs
    12. nfs:
    13. server: <nfs-server-ip> # nfs服务ip
    14. path: "/exports/data" # nfs共享目录
     
    

    5. 列出所有PVC:

    kubectl get pvc

    6. 查看PVC详细信息:

    kubectl describe pvc <pvc-name>

    7. 创建PVC

    1. apiVersion: v1
    2. kind: PersistentVolumeClaim
    3. metadata:
    4. name: myclaim
    5. spec:
    6. accessModes:
    7. - ReadWriteOnce
    8. resources:
    9. requests:
    10. storage: 5Gi
    11. storageClassName: local-storage # 或 nfs,需与PV的storageClassName匹配
     
    

    ConfigMap管理

    用来存储配置数据,如应用的配置文件,以键值对形式挂载到Pod中,方便应用程序读取和分离配置与代码。

    1. 创建ConfigMap:

    kubectl create configmap <my-configmap> --from-literal=KEY1=VALUE1

    2. 查看ConfigMap

    kubectl get configmaps

    3. 删除ConfigMap:

    kubectl delete configmap  <my-configmap>

  • 相关阅读:
    基于Solidworks的三维光路结构示意图绘制实例演示
    骰子涂色(Cube painting, UVa 253)rust解法
    leetcode298周赛记录
    Tensor数据转换为稀疏矩阵
    每日一题 LCP 06. 拿硬币
    Java中如何计算一个HashSet对象的大小呢?
    oracle 数据库实验三
    Java 中关于多线程的知识点
    最后一个单词的长度
    你绝对没想到的GPT的底层意义
  • 原文地址:https://blog.csdn.net/WXF_Sir/article/details/139854666