• CKA考题[k8s1.24]


    相关链接:
    Containerd【轻量级容器管理工具】:https://blog.csdn.net/qq_41822345/article/details/126677121
    从0开始安装k8s1.25:https://blog.csdn.net/qq_41822345/article/details/126679925
    CKA考题[k8s1.21]:https://blog.csdn.net/qq_41822345/article/details/127038941

    【摘要】 (CKA)认证Kubernetes管理员,由Linux基金会和云原生计算基金会(CNCF)推出,是关于kubernetes技术的官方认证。当前考题考试环境kubernetes1.24。考试共计17道题,线上考试,2小时之内完成。

    注意,官方的 CKA 考试环境是有多套的,考试时,不一定抽到哪套。不同考试环境里面部分题目的内容有很小的变化,但题干都是一样的。另外,每道题都是有步骤分的,不要全空不写。

    《题库》跟《真题》的题干是一样的,区别在于里面的一些 pod、deployment、namespace、ServiceAccount 等参数可能不同而已,因为在真实考试中,也是会时常变换里面的这些变量参数的。注意理解这些变量的含义,而不要死记硬背答案。

    考试时,可以打开考试环境 Ubuntu 20.04 桌面上的火狐浏览器,访问 K8S 官网 https://kubernetes.io/

    kubectl 备忘单:https://kubernetes.io/zh-cn/docs/reference/kubectl/cheatsheet/

    第一题 权限控制 RBAC

    • 考题

    设置配置环境:

    [candidate@node-1] $ kubectl config use-context k8s

    Context

    为部署流水线创建一个新的 ClusterRole 并将其绑定到范围为特定的 namespace 的特定 ServiceAccount。

    Task

    创建一个名为 deployment-clusterrole 且仅允许创建以下资源类型的新 ClusterRole: Deployment 、StatefulSet 、DaemonSet。

    在现有的 namespace app-team1 中创建一个名为 cicd-token 的新 ServiceAccount。

    限于 namespace app-team1 中,将新的 ClusterRole deployment-clusterrole 绑定到新的 ServiceAccount cicd-token。

    • 考点

    k8s RBAC 授权模型。

    kubectl create clusterrole -h

    kubectl create rolebinding -h

    • 解答

    切换到kubectl config use-context k8s。

    kubectl create clusterrole deployment-clusterrole--verb=create--resource=Deployment,StatefulSet,DaemonSet
    
    kubectl -n app-team1 create serviceaccourt cicd-token
    
    kubectl create rolebinding cicd-token --clusterrole=deployment-clusterrole --serviceaccount=app-team1:cicd-token --namespace=app-team1
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 验证
    kubectl describe -n app-team1 rolebindings cicd-bind
    
    • 1

    第二题 查看 pod 的 CPU

    • 考题

    设置配置环境:

    [candidate@node-1] $ kubectl config use-context k8s

    Task

    通过 pod label name=cpu-loader,找到运行时占用大量 CPU 的 pod,

    并将占用 CPU 最高的 pod 名称写入文件 /opt/KUTR000401/KUTR00401.txt(已存在)。

    • 考点

    kubectl top pod -h

    • 解答

    切换到kubectl config use-context ek8s。

    kubectl top pod -l name=cpu-loader --sort-by=cpu -A
    echo "查出来的 Pod Name" > /opt/KUTR000401/KUTR00401.txt
    
    • 1
    • 2
    • 验证
    cat /opt/KUTR000401/KUTR00401.txt
    
    • 1

    第三题 配置网络策略 NetworkPolicy

    • 考题

    设置配置环境:

    [candidate@node-1] $ kubectl config use-context hk8s

    Task

    在现有的 namespace my-app 中创建一个名为 allow-port-from-namespace 的新 NetworkPolicy。

    确保新的 NetworkPolicy 允许 namespace echo 中的 Pods 连接到 namespace my-app 中的 Pods 的 9000 端口。

    进一步确保新的 NetworkPolicy:

    不允许对没有在监听 端口 9000 的 Pods 的访问。

    不允许非来自 namespace echo 中的 Pods 的访问。

    • 考点

    NetworkPolicy 的创建:

    https://kubernetes.io/zh-cn/docs/concepts/services-networking/network-policies/

    • 解答

    切换到kubectl config use-context mk8s

    vim networkpolicy.yaml
    cat networkpolicy.yaml
    apiVersion: networking.k8s.io/v1
    kind: NetworkPolicy
    metadata:
      name: allow-port-from-namespace
      namespace: my-app #被访问者的命名空间
    spec:
      podSelector: #这两行必须要写,或者也可以写成一行为 podSelector: {}
        matchLabels: {} # 注意 matchLabels:与{}之间有一个空格
      policyTypes:
      - Ingress #策略影响入栈流量
      ingress:
      - from: #允许流量的来源
        - namespaceSelector:
            matchLabels:
              project: echo #访问者的命名空间的标签 label
        #- podSelector: {} #注意,这个不写。如果 ingress 里也写了- podSelector: {},则会导致 my-app 中的 pod 可以访问 my-app 中 pod 的 9000 了,这样不满足题目要求不允许非来自 namespace echo 中的 Pods 的访问。
        ports:
        - protocol: TCP
          port: 9000 #被访问者公开的端口
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 验证
    # 创建并验证
    kubectl apply -f networkpolicy.yaml
    kubectl describe networkpolicy -n my-app
    
    • 1
    • 2
    • 3

    第四题 暴露服务 Service

    • 考题

    设置配置环境:

    [candidate@node-1] $ kubectl config use-context k8s

    Task

    请重新配置现有的 deployment front-end 以及添加名为 http 的端口规范来公开现有容器 nginx 的端口 80/tcp。

    创建一个名为 front-end-svc 的新 service,以公开容器端口 http。

    配置此 service,以通过各个 Pod 所在的节点上的 NodePort 来公开他们。

    • 考点

    https://kubernetes.io/zh-cn/docs/concepts/workloads/controllers/deployment/

    • 解答

    切换到kubectl config use-context mk8s

    vim deploy-nginx.yaml
    cat deploy-nginx.yaml
    apiVersion: apps/v1
    kind: Deployment
    metadata:
      name: front-end
    spec:
      selector:
        matchLabels:
          app: nginx
      replicas: 3 # 告知 Deployment 运行 3 个与该模板匹配的 Pod
      template:
        metadata:
          labels:
            app: nginx
        spec:
          containers:
          - name: nginx
            image: nginx:1.14.2
            ports:
            - containerPort: 80
              name: http  # 端口名为 http
              protocol: TCP
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23

    创建 deployment 并暴露端口

    kubectl expose deployment front-end --type=NodePort --port=80 --target-port=80 --name=front-end-svc
    
    • 1
    • 验证
    [root@node-1 mycka]# kubectl get svc
    NAME            TYPE        CLUSTER-IP    EXTERNAL-IP   PORT(S)        AGE
    front-end-svc   NodePort    10.1.16.135   <none>        80:31365/TCP   72m
    [root@node-1 mycka]# curl node-1:31365
    Hello world!
    
    • 1
    • 2
    • 3
    • 4
    • 5

    第五题 创建 Ingress

    • 考题

    设置配置环境:

    [candidate@node-1] $ kubectl config use-context k8s

    Task

    如下创建一个新的 nginx Ingress 资源:

    名称: ping

    Namespace: ing-internal

    使用服务端口 5678 在路径 /hello 上公开服务 hello

    可以使用以下命令检查服务 hello 的可用性,该命令应返回 hello:

    curl -kL /hello

    • 考点

    Ingress 的创建:https://kubernetes.io/zh-cn/docs/concepts/services-networking/ingress/

    • 解答

    切换到kubectl config use-context hk8s。

    vim ingress-min.yaml
    cat ingress-min.yaml
    apiVersion: networking.k8s.io/v1
    kind: Ingress
    metadata:
      name: ping
      namespace: ing-internal
      #annotations:
         #kubernetes.io/ingress.class: "nginx"
         #nginx.ingress.kubernetes.io/rewrite-target: /
    spec:
      rules:
      - http:
         paths:
          - path: /hello
            pathType: Prefix
            backend:
              service:
                name: hello
                port:
                  number: 5678
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21

    创建ingress:

    kubectl apply -f ingress-min.yaml
    
    • 1
    • 验证
    kubectl get ingress -n ing-internal
    
    • 1

    第六题 扩容 deployment 副本数

    • 考题

    设置配置环境:

    [candidate@node-1] $ kubectl config use-context k8s

    Task

    将 deployment presentation 扩展至 4 个 pods

    • 考点

    kubectl scale deployment -h

    • 解答

    切换到kubectl config use-context k8s。

    kubectl scale deployment presentation --replicas=4
    
    • 1
    • 验证
    kubectl get deployments presentation -o wide
    kubectl get pod -l app=presentation
    
    • 1
    • 2

    第七题 调度 pod 到指定节点

    • 考题

    设置配置环境:

    [candidate@node-1] $ kubectl config use-context k8s

    Task

    按如下要求调度一个 pod:

    名称:nginx-kusc00401

    Image:nginx

    Node selector:disk=ssd

    • 考点

    nodeSelect 属性的使用。

    • 解答

    切换到kubectl config use-context k8s。

    Vim node-selector.yaml
    cat node-selector.yaml
    apiVersion: v1
    kind: Pod
    metadata:
      name: nginx-kusc00401
    spec:
      containers:
      - name: nginx
        image: nginx
        imagePullPolicy: IfNotPresent #这句的意思是,如果此 image 已经有了,则不重新下载。考试时写不写这个都是可以的。
      nodeSelector:
        disk: ssd
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 验证
    kubectl apply -f node-selector.yaml
    kubectl get pod nginx-kusc00401 -owide
    
    • 1
    • 2

    第八题 查看可用node数量

    • 考题

    设置配置环境:

    [candidate@node-1] $ kubectl config use-context k8s

    Task

    检查有多少 nodes 已准备就绪(不包括被打上 Taint:NoSchedule 的节点),

    并将数量写入 /opt/KUSC00402/kusc00402.txt

    • 考点

    kubectl -h

    • 解答

    切换到kubectl config use-context k8s。

    # grep 的-i 是忽略大小写,grep -v 是排除在外,grep -c 是统计查出来的条数。
    kubectl describe nodes | grep -i Taints | grep -vc NoSchedule
    echo "查出来的数字" > /opt/KUSC00402/kusc00402.txt
    
    • 1
    • 2
    • 3
    • 验证
    cat opt/KUSC00402/kusc00402.txt
    
    • 1

    第九题 创建多容器的pod

    • 考题

    设置配置环境:

    [candidate@node-1] $ kubectl config use-context k8s

    Task

    创建一个名字为kucc8的pod,里面包含2个容器redis和consul。

    • 考点

    pod 概念

    • 解答

    切换到kubectl config use-context k8s。

    vim pod-two-containers.yaml
    cat pod-two-containers.yaml
    apiVersion: v1
    kind: Pod
    metadata:
      name: kucc8
    spec:
      containers:
       - name: nginx
         image: nginx
         imagePullPolicy: IfNotPresent
       - name: consul
         image: consul
         imagePullPolicy: IfNotPresent
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 验证
    kubectl apply -f pod-two-containers.yaml 
    pod/kucc8 created
    kubectl get pod
    
    • 1
    • 2
    • 3

    第十题 创建 PV

    • 考题

    设置配置环境:

    [candidate@node-1] $ kubectl config use-context hk8s

    Task

    创建名为 app-config 的 persistent volume,容量为 1Gi,访问模式为 ReadWriteMany。

    volume 类型为 hostPath,位于 /srv/app-config

    • 考点

    PV创建:

    https://kubernetes.io/zh-cn/docs/tasks/configure-pod-container/configure-persistent-volume-storage/

    • 解答

    切换到kubectl config use-context k8s。

    vim pv.yaml
    cat pv.yaml 
    apiVersion: v1
    kind: PersistentVolume
    metadata:
      name: app-config
      #labels: #不需要写
      #type: local
    spec:
      capacity:
        storage: 1Gi
      accessModes:
        - ReadWriteMany # 注意,考试时的访问模式可能有 ReadWriteMany 和 ReadOnlyMany 和 ReadWriteOnce,根据题目要求写。
      hostPath:
        path: "/srv/app-config"
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 验证
    kubectl apply -f pv.yaml
    persistentvolume/app-config created
    kubectl get pv
    
    • 1
    • 2
    • 3

    第十一题 创建 PVC

    • 考题

    设置配置环境:

    [candidate@node-1] $ kubectl config use-context ok8s

    Task

    创建一个新的 PersistentVolumeClaim:

    名称: pv-volume

    Class: csi-hostpath-sc

    容量: 10Mi

    创建一个新的 Pod,来将 PersistentVolumeClaim 作为 volume 进行挂载:

    名称:web-server

    Image:nginx:1.16

    挂载路径:/usr/share/nginx/html

    配置新的 Pod,以对 volume 具有 ReadWriteOnce 权限。

    最后,使用 kubectl edit 或 kubectl patch 将 PersistentVolumeClaim 的容量扩展为 70Mi,并记录此更改。

    • 考点

    PVC与pod挂载:

    https://kubernetes.io/zh-cn/docs/tasks/configure-pod-container/configure-persistent-volume-storage/

    • 解答

    切换到kubectl config use-context k8s。

    Vim pvc.yaml
    cat pvc.yaml
    apiVersion: v1
    kind: PersistentVolumeClaim
    metadata:
       name: pv-volume #pvc 名字
    spec:
       storageClassName: csi-hostpath-sc
       accessModes:
          - ReadWriteOnce # 注意,考试时访问模式可能有 ReadWriteMany 和 ReadOnlyMany 和 ReadWriteOnce,根据题目要求写。
       resources:
          requests:
            storage: 10Mi
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13

    创建pvc

    kubectl apply -f pvc.yaml
    
    • 1

    创建pod,绑定pvc

    vim pvc-pod.yaml 
    cat pvc-pod.yaml 
    apiVersion: v1
    kind: Pod
    metadata:
      name: web-server
    spec:
      volumes:
        - name: task-pv-storage
          persistentVolumeClaim:
            claimName: pv-volume #这个要使用上面创建的 pvc 名字
      containers:
        - name: nginx
          image: nginx:1.16
          volumeMounts:
              - mountPath: "/usr/share/nginx/html"
                name: task-pv-storage #要与volumes的name一样。
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 验证
    kubectl apply -f pvc-pod.yaml
    kubectl get pvc
    kubectl get po
    
    • 1
    • 2
    • 3

    第十二题 查看 pod 日志

    • 考题

    设置配置环境:

    [candidate@node-1] $ kubectl config use-context k8s

    Task

    监控 pod foo 的日志并:

    提取与错误 RLIMIT_NOFILE 相对应的日志行

    将这些日志行写入 /opt/KUTR00101/foo

    • 考点

    pod日志输出

    • 解答

    切换到kubectl config use-context hk8s。

    kubectl logs foo | grep "RLIMIT_NOFILE" > /opt/KUTR00101/foo
    
    • 1
    • 验证
    cat /opt/KUTR00101/foo
    
    • 1

    第十三题 使用 sidecar 代理容器日志

    • 考题

    设置配置环境:

    [candidate@node-1] $ kubectl config use-context k8s

    Context

    将一个现有的 Pod 集成到 Kubernetes 的内置日志记录体系结构中(例如 kubectl logs)。

    添加 streaming sidecar 容器是实现此要求的一种好方法。

    Task

    使用 busybox Image 来将名为 sidecar 的 sidecar 容器添加到现有的 Pod 11-factor-app 中。

    新的 sidecar 容器必须运行以下命令:

    /bin/sh -c tail -n+1 -f /var/log/11-factor-app.log

    使用挂载在/var/log 的 Volume,使日志文件 11-factor-app.log 可用于 sidecar 容器。

    除了添加所需要的 volume mount 以外,请勿更改现有容器的规格。

    • 考点

    pod 两个容器共享存储卷

    • 解答

    切换到kubectl config use-context k8s。

    # (输出其yaml文件)
    kubectl get pod 11-factor-app -o yaml > app.yaml
    # (先备份一份,删除managed部分,删除status部分,不删会有问题。)
    vim app.yaml
    # 在container下添加:
    containers:
      - name: sidecar #新加内容,注意 name 别写错了
        image: busybox #新加内容
        args: [/bin/sh, -c, 'tail -n+1 -f /var/log/11-factor-app.log'] #新加内容,注意文件名别写错了。另外是用逗号分隔的,而题目里是空格。
         volumeMounts: #新加内容
         - name: varlog #新加内容
           mountPath: /var/log #新加内容
    
    # 在原容器下添加:
        volumeMounts:
        - name: varlog  #新加内容
          mountPath: /var/log  #新加内容
          
    #注意:在pod的volumes为emptyDir。
        volumes:
        - name: varlog
          emptyDir: {}
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22

    重新创建pod应用

    kubectl delete pod 11-factor-app
    kubectl apply -f app.yaml
    kubectl logs 11-factor-app sidecar
    
    • 1
    • 2
    • 3
    • 验证
    kubectl logs 11-factor-app sidecar
    
    • 1

    第十四题 升级集群

    • 考题

    设置配置环境:

    [candidate@node-1] $ kubectl config use-context mk8s

    Task

    现有的 Kubernetes 集群正在运行版本 1.24.2。仅将 master 节点上的所有 Kubernetes 控制平面和节点组件升级到版本 1.24.3。

    确保在升级之前 drain master 节点,并在升级后 uncordon master 节点。

    可以使用以下命令,通过 ssh 连接到 master 节点:

    ssh master01

    可以使用以下命令,在该 master 节点上获取更高权限:

    sudo -i

    另外,在主节点上升级 kubelet 和 kubectl。

    请不要升级工作节点,etcd,container 管理器,CNI 插件, DNS 服务或任何其他插件。

    • 考点

    如何离线主机,并升级控制面板和升级节点

    • 解答

    切换到kubectl config use-context k8s。

    kubectl get nodes
    kubectl cordon master01
    kubectl drain master01 --ignore-daemonsets
    
    apt-cache show kubeadm|grep 1.24.3
    apt-get update
    apt-get install kubeadm=1.24.3-00
    
    # 检查 kubeadm 升级后的版本
    kubeadm version
    # 验证升级计划
    kubeadm upgrade plan
    # 排除 etcd,升级其他的,提示时,输入 y。
    kubeadm upgrade apply v1.24.3 --etcd-upgrade=false
    
    # 升级 kubelet
    apt-get install kubelet=1.24.3-00
    kubelet --version
    
    # 升级 kubectl
    apt-get install kubectl=1.24.3-00
    kubectl version
    
    # 恢复 master01 调度
    kubectl uncordon master01
    #检查 master01 是否为 Ready
    kubectl get node
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27

    第十五题 备份还原 etcd

    • 考题

    设置配置环境

    此项目无需更改配置环境。但是,在执行此项目之前,请确保您已返回初始节点。

    [candidate@master01] $ exit #注意,这个之前是在 master01 上,所以要 exit 退到 node01,如果已经是 node01 了,就不要再 exit 了。

    Task

    首先,为运行在 https://11.0.1.111:2379 上的现有 etcd 实例创建快照并将快照保存到 /var/lib/backup/etcd-snapshot.db

    (注意,真实考试中,这里写的是 https://127.0.0.1:2379)

    为给定实例创建快照预计能在几秒钟内完成。 如果该操作似乎挂起,则命令可能有问题。用 CTRL + C 来取消操作,然后重试。

    然后还原位于/data/backup/etcd-snapshot-previous.db 的现有先前快照。

    提供了以下 TLS 证书和密钥,以通过 etcdctl 连接到服务器。

    CA 证书: /opt/KUIN00601/ca.crt

    客户端证书: /opt/KUIN00601/etcd-client.crt

    客户端密钥: /opt/KUIN00601/etcd-client.key

    • 考点

    etcd 的备份和恢复

    • 解答

    切换到kubectl config use-context k8s。

    # 备份:
    # 如果不使用 export ETCDCTL_API=3,而使用 ETCDCTL_API=3,则下面每条 etcdctl 命令前都要加 ETCDCTL_API=3。 # 如果执行时,提示 permission denied,则是权限不够,命令最前面加 sudo 即可。
    export ETCDCTL_API=3
    etcdctl --endpoints=https://11.0.1.111:2379 --cacert="/opt/KUIN00601/ca.crt" --cert="/opt/KUIN00601/etcd-client.crt" --key="/opt/KUIN00601/etcd-client.key" 
    snapshot save /var/lib/backup/etcd-snapshot.db
    
    # 检查:(考试时,这些检查动作,都可以不做)
    etcdctl snapshot status /var/lib/backup/etcd-snapshot.db -wtable
     
    # 恢复 
    # 不加 sudo 会报错 permission denied
    sudo ETCDCTL_API=3 etcdctl --endpoints=https://11.0.1.111:2379 --cacert="/opt/KUIN00601/ca.crt" --cert="/opt/KUIN00601/etcd-client.crt" --
    key="/opt/KUIN00601/etcd-client.key" snapshot restore /data/backup/etcd-snapshot-previous.db
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13

    第十六题 排查集群中故障节点

    • 考题

    设置配置环境:

    [candidate@node-1] $ kubectl config use-context wk8s

    Task

    名为 node02 的 Kubernetes worker node 处于 NotReady 状态。

    调查发生这种情况的原因,并采取相应的措施将 node 恢复为 Ready 状态,确保所做的任何更改永久生效。

    可以使用以下命令,通过 ssh 连接到 node02 节点:

    ssh node02

    可以使用以下命令,在该节点上获取更高权限:

    sudo -i

    • 考点

    控制面组件故障排查【api-server、etcd、scheduler、controller、kubelet、docker等】

    • 解答

    切换到kubectl config use-context k8s。

    # (查看kubelet为啥没起来,按需修复)
    systemctl status kubelet
    systemctl start kubelt
    systemctl enable kubelet
    
    • 1
    • 2
    • 3
    • 4
    • 验证
    # (状态为Ready)
    kubectl get node
    
    • 1
    • 2

    第十七题 节点维护

    • 考题

    设置配置环境:

    [candidate@node-1] $ kubectl config use-context ek8s

    Task

    将名为 node02 的 node 设置为不可用,并重新调度该 node 上所有运行的 pods。

    • 考点

    cordon 和 drain 命令的使用

    • 解答

    切换到kubectl config use-context k8s。

    kubectl get node
    kubectl cordon node02
    kubectl get node
    kubectl drain node02 --ignore-daemonsets
    # 注意,还有一个参数--delete-emptydir-data --force,这个考试时不用加,就可以正常 draini node02 的。 
    # 但如果执行后,有跟测试环境一样的报错(如下截图),则需要加上--delete-emptydir-data --force,会强制将 pod 移除。 
    # kubectl drain node02 --ignore-daemonsets --delete-emptydir-data --force
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 验证
    kubectl get node
    
    • 1
  • 相关阅读:
    Python入门教程之基本语法详解,收藏慢慢学~
    java 基础5道题
    基于零代码搭建你自己的设备管理系统
    【python】18行代码带你采集国外网小姐姐绝美图片
    SpringCloud Alibaba学习
    java计算机毕业设计在线考试系统源码+系统+lw+数据库+调试运行
    Python自动化测试面试题精选(一)
    GraphQL+Koa2实现服务端API结合Apollo+Vue
    JavaScript-操作表单和前端加密
    【10.27】【VP】Codeforces Round #746 (Div. 2)
  • 原文地址:https://blog.csdn.net/qq_41822345/article/details/127136171