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

简介: 云原生|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

修改admin/logging/two-files-counter-pod-streaming-sidecar.yaml  这个文件即可

解答:

验证:

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服务是否正常即可。

相关实践学习
容器服务Serverless版ACK Serverless 快速入门:在线魔方应用部署和监控
通过本实验,您将了解到容器服务Serverless版ACK Serverless 的基本产品能力,即可以实现快速部署一个在线魔方应用,并借助阿里云容器服务成熟的产品生态,实现在线应用的企业级监控,提升应用稳定性。
云原生实践公开课
课程大纲 开篇:如何学习并实践云原生技术 基础篇: 5 步上手 Kubernetes 进阶篇:生产环境下的 K8s 实践 相关的阿里云产品:容器服务&nbsp;ACK 容器服务&nbsp;Kubernetes&nbsp;版(简称&nbsp;ACK)提供高性能可伸缩的容器应用管理能力,支持企业级容器化应用的全生命周期管理。整合阿里云虚拟化、存储、网络和安全能力,打造云端最佳容器化应用运行环境。 了解产品详情:&nbsp;https://www.aliyun.com/product/kubernetes
目录
相关文章
|
2月前
|
消息中间件 Cloud Native Java
【Spring云原生系列】SpringBoot+Spring Cloud Stream:消息驱动架构(MDA)解析,实现异步处理与解耦合
【Spring云原生系列】SpringBoot+Spring Cloud Stream:消息驱动架构(MDA)解析,实现异步处理与解耦合
|
17天前
|
Kubernetes 监控 Cloud Native
构建高效云原生应用:基于Kubernetes的微服务治理实践
【4月更文挑战第13天】 在当今数字化转型的浪潮中,企业纷纷将目光投向了云原生技术以支持其业务敏捷性和可扩展性。本文深入探讨了利用Kubernetes作为容器编排平台,实现微服务架构的有效治理,旨在为开发者和运维团队提供一套优化策略,以确保云原生应用的高性能和稳定性。通过分析微服务设计原则、Kubernetes的核心组件以及实际案例,本文揭示了在多变的业务需求下,如何确保系统的高可用性、弹性和安全性。
18 4
|
2月前
|
Kubernetes Cloud Native Docker
【云原生】kubeadm快速搭建K8s集群Kubernetes1.19.0
Kubernetes 是一个开源平台,用于管理容器化工作负载和服务,提供声明式配置和自动化。源自 Google 的大规模运维经验,它拥有广泛的生态支持。本文档详细介绍了 Kubernetes 集群的搭建过程,包括服务器配置、Docker 和 Kubernetes 组件的安装,以及 Master 和 Node 的部署。此外,还提到了使用 Calico 作为 CNI 网络插件,并提供了集群功能的测试步骤。
222 0
|
2月前
|
Kubernetes Cloud Native Devops
云原生技术落地实现之二KubeSphere DevOps 系统在 Kubernetes 集群上实现springboot项目的自动部署和管理 CI/CD (2/2)
云原生技术落地实现之二KubeSphere DevOps 系统在 Kubernetes 集群上实现springboot项目的自动部署和管理 CI/CD (2/2)
55 1
|
2月前
|
Kubernetes Linux Docker
深度解析:Kubernetes 1.28.2集群安装过程中的关键步骤
本文旨在为读者提供一份详尽的Kubernetes 1.28.2集群安装指南,帮助您从零开始构建稳定、高效的Kubernetes集群。我们将从环境准备、软件安装、集群初始化到节点添加等各个环节进行逐步讲解,确保您能够顺利完成集群的搭建。
|
2月前
|
消息中间件 存储 Cloud Native
深度剖析 RocketMQ 5.0,架构解析:云原生架构如何支撑多元化场景?
了解 RocketMQ 5.0 的核心概念和架构概览;然后我们会从集群角度出发,从宏观视角学习 RocketMQ 的管控链路、数据链路、客户端和服务端如何交互;学习 RocketMQ 如何实现数据的存储,数据的高可用,如何利用云原生存储进一步提升竞争力。
140075 2
|
2月前
|
弹性计算 运维 Kubernetes
云原生K8S场景自动化响应ECS系统事件
客户云原生K8S场景下,通过社区开源NPD+Draino+Autoscaler零开发,对接响应ECS主动运维事件,通过自动响应事件减少非预期宕机。
|
2月前
|
人工智能 监控 Cloud Native
iLogtail 2.0 来了;通义灵码下载量破百万丨阿里云云原生 2 月产品月报
iLogtail 2.0 来了;通义灵码下载量破百万丨阿里云云原生 2 月产品月报
|
3月前
阿里云云原生恭祝大家新年快乐!
阿里云云原生恭祝大家新年快乐!
|
4月前
|
Cloud Native 关系型数据库 分布式数据库
阿里云瑶池助力九州通B2B电商平台,完成100%云原生架构升级
九州通数字化转型,通过引入阿里云云原生数据库PolarDB,云原生内存数据库Tair等产品,完美支撑了医药电商平台数据库100%云原生化,实现了统一、高效、标准化和可跟踪的B2B医药平台。
385 4

推荐镜像

更多