云原生|kubernetes|CKA真题解析-------(11-17题)

第十一题:

创建多容器的pod
题目要求:

解析:

多容器pod的创建,先创建一个单容器的pod,然后在此基础上修改即可

解答:

先创建单容器的pod

kubectl run kucc1 --image=nginx --dry-run=client -oyaml >11.yaml

修改11.yaml如下:

 cat 11.yaml 
apiVersion: v1
kind: Pod
metadata:
  creationTimestamp: null
  labels:
    run: kucc1
  name: kucc1
spec:
  containers:
  - image: nginx
    name: nginx
  - image: memcached
    name: memcached
    resources: {}
  dnsPolicy: ClusterFirst
  restartPolicy: Always
status: {}

 验证:

root@k8s-master:~# kubectl apply -f 11.yaml 
pod/kucc1 created
root@k8s-master:~# kubectl get po kucc1 
NAME    READY   STATUS    RESTARTS   AGE
kucc1   2/2     Running   0          43s

对应的官网文档:https://kubernetes.io/zh/docs/concepts/workloads/pods/  

第十二题:

按要求创建PV

解析:

pv的创建不能使用命令直接创建,因此,需要到官网找模板,官网模板地址:配置 Pod 以使用 PersistentVolume 作为存储 | Kubernetes 

解答:

拷贝官网第一个模板,模板原文如下:

apiVersion: v1
kind: PersistentVolume
metadata:
  name: task-pv-volume
  labels:
    type: local
spec:
  storageClassName: manual
  capacity:
    storage: 10Gi
  accessModes:
    - ReadWriteOnce
  hostPath:
    path: "/mnt/data"

按题意修改成下面这个样子:

去掉StorageClassName这一行,修改存储路径,存储容量

apiVersion: v1
kind: PersistentVolume
metadata:
  name: app-config
  labels:
    type: local
spec:
  capacity:
    storage: 2Gi
  accessModes:
    - ReadWriteOnce
  hostPath:
    path: "/srv/app-config"

 测试:

由于此pv还没有被任何pvc绑定,因此,现在的状态是available,名称,容量大小,访问模式都和题目对上即可。

root@k8s-master:~# kubectl apply -f 12-pv.yaml 
persistentvolume/app-config created
root@k8s-master:~# kubectl get pv -A
NAME         CAPACITY   ACCESS MODES   RECLAIM POLICY   STATUS      CLAIM   STORAGECLASS   REASON   AGE
app-config   2Gi        RWO            Retain           Available                                   16s

第十三题:

创建和使⽤PVC

解析:

仍然还是上一题的官网地址:配置 Pod 以使用 PersistentVolume 作为存储 | Kubernetes 

按题意要求创建一个pvc使用storageClass,sc名称是应用到名称为web-server的pod上面。

解答:

从官方文档拷贝模板文件:

apiVersion: v1
kind: PersistentVolumeClaim
metadata:
  name: task-pv-claim
spec:
  storageClassName: manual
  accessModes:
    - ReadWriteOnce
  resources:
    requests:
      storage: 3Gi

 pvc的创建-----按照题意修改容量为10Mi,修改为如下:

apiVersion: v1
kind: PersistentVolumeClaim
metadata:
  name: pv-volume
spec:
  storageClassName: csi-hostpath-sc
  accessModes:
    - ReadWriteOnce
  resources:
    requests:
      storage: 10Mi

 pod的创建----仍然是从官网文档拷贝:

apiVersion: v1
kind: Pod
metadata:
  name: task-pv-pod
spec:
  volumes:
    - name: task-pv-storage
      persistentVolumeClaim:
        claimName: task-pv-claim
  containers:
    - name: task-pv-container
      image: nginx
      ports:
        - containerPort: 80
          name: "http-server"
      volumeMounts:
        - mountPath: "/usr/share/nginx/html"
          name: task-pv-storage

修改成如下:

apiVersion: v1
kind: Pod
metadata:
  name: web-server
spec:
  volumes:
    - name: pv-volume
      persistentVolumeClaim:
        claimName: pv-volume
  containers:
    - name: web-server
      image: nginx
      volumeMounts:
        - mountPath: "/usr/share/nginx/html"
          name: pv-volume

 pvc的扩容:

首先查看sc是否支持扩容:

可以看到ALLOWVOLUMEEXPANSION是true,表示此sc是支持扩容的

root@k8s-master:~# kubectl get sc
NAME              PROVISIONER                                   RECLAIMPOLICY   VOLUMEBINDINGMODE   ALLOWVOLUMEEXPANSION   AGE
csi-hostpath-sc   k8s-sigs.io/nfs-subdir-external-provisioner   Delete          Immediate           true                   362d
kubectl edit pvc pv-volume --record

按题目要求修改后保存即可。 

测试:

查看pvc的状态,是bound绑定状态为正确:

root@k8s-master:~# kubectl get pvc
NAME        STATUS   VOLUME                                     CAPACITY   ACCESS MODES   STORAGECLASS      AGE
pv-volume   Bound    pvc-59909415-e9c2-44c1-9f77-848baa508921   10Mi       RWO            csi-hostpath-sc   6m47s

 查看pod的详情,可以看到正确的挂载pvc:

root@k8s-master:~# kubectl describe pod web-server 
Name:         web-server
Namespace:    default
Priority:     0
Node:         k8s-node2/192.168.123.152
Start Time:   Wed, 21 Dec 2022 17:05:59 +0800
Labels:       <none>
Annotations:  cni.projectcalico.org/containerID: 6636d0358690a5e72617c4537ffdcb5bd22927fa90db11f6b97d074e9eab9d66
              cni.projectcalico.org/podIP: 10.244.169.180/32
              cni.projectcalico.org/podIPs: 10.244.169.180/32
Status:       Running
IP:           10.244.169.180
IPs:
  IP:  10.244.169.180
Containers:
  web-server:
    Container ID:   docker://02fc362221efc4ebdb95b5b9c4dd74e1f6ca69f4d9cb34f553261538b8a76530
    Image:          nginx
    Image ID:       docker-pullable://nginx@sha256:0d17b565c37bcbd895e9d92315a05c1c3c9a29f762b011a10c54a66cd53c9b31
    Port:           80/TCP
    Host Port:      0/TCP
    State:          Running
      Started:      Wed, 21 Dec 2022 17:06:17 +0800
    Ready:          True
    Restart Count:  0
    Environment:    <none>
    Mounts:
      /usr/share/nginx/html from pv-volume (rw)

 第十四题:

监控pod的⽇志

解析:

这道题十分简单,输出日志到指定文件内即可

解答:

kubectl logs foobar | grep unable-to-access-website >/opt/KUTR00101/foobar

第十五题:

添加 sidecar 容器并输出⽇志

解析:

通过 kubectl get pod -o yaml 的⽅法备份原始 pod 信息,删除旧的pod 11-factor-app
copy ⼀份新 yaml ⽂件,添加 ⼀个名称为 sidecar 的容器,新建 emptyDir 的卷,确保两个容器都挂载
了 /var/log ⽬录,新建含有 sidecar 的 pod,并通过 kubectl logs 验证
此题主要是根据官方文档来进行; 日志架构 | Kubernetes
解答:

 验证:

kubectl logs 11-factor-app sidecar  #验证⽇志输出
0: Thu Dec 23 15:15:50 UTC 2021
0: Thu Dec 23 15:15:55 UTC 2021
0: Thu Dec 23 15:16:00 UTC 2021
第十六题:
查看 cpu 使⽤率最⾼的 pod

 这个也是送分题了。

解答:

root@k8s-master:~# kubectl top pod -l name=cpu-loader -A --sort-by='cpu'
NAMESPACE     NAME                CPU(cores)   MEMORY(bytes)   
kube-system   calico-node-4l4ll   42m          131Mi           

可以看看这个pod的标签都有哪些:

root@k8s-master:~# kubectl get  pods -n kube-system calico-node-4l4ll --show-labels 
NAME                READY   STATUS    RESTARTS        AGE    LABELS
calico-node-4l4ll   1/1     Running   19 (161m ago)   378d   controller-revision-hash=6b57d9cd54,k8s-app=calico-node,name=cpu-loader,pod-template-generation=1

第十七题:

排查集群中故障节点

解析:

题目说的是一个工作节点down掉了,节点名册是wk8s-node-0 ,那么,造成节点down掉的原因有很多,必须要登录这个节点,然后查看各个服务的状态,当然,首要的服务是kubelet,如果服务正常,那么,还需要查看系统日志来进一步判断。

解答:

登陆wk8s-node-0 节点后,发现kubelet服务停止了,启动后,查看kubelet服务是否正常即可。

猜你喜欢

转载自blog.csdn.net/alwaysbefine/article/details/128395903
今日推荐