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

本文涉及的产品
全局流量管理 GTM,标准版 1个月
云解析 DNS,旗舰版 1个月
公共DNS(含HTTPDNS解析),每月1000万次HTTP解析
简介: 云原生|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服务是否正常即可。

相关实践学习
通过Ingress进行灰度发布
本场景您将运行一个简单的应用,部署一个新的应用用于新的发布,并通过Ingress能力实现灰度发布。
容器应用与集群管理
欢迎来到《容器应用与集群管理》课程,本课程是“云原生容器Clouder认证“系列中的第二阶段。课程将向您介绍与容器集群相关的概念和技术,这些概念和技术可以帮助您了解阿里云容器服务ACK/ACK Serverless的使用。同时,本课程也会向您介绍可以采取的工具、方法和可操作步骤,以帮助您了解如何基于容器服务ACK Serverless构建和管理企业级应用。 学习完本课程后,您将能够: 掌握容器集群、容器编排的基本概念 掌握Kubernetes的基础概念及核心思想 掌握阿里云容器服务ACK/ACK Serverless概念及使用方法 基于容器服务ACK Serverless搭建和管理企业级网站应用
目录
相关文章
|
17天前
|
缓存 Kubernetes Docker
GitLab Runner 全面解析:Kubernetes 环境下的应用
GitLab Runner 是 GitLab CI/CD 的核心组件,负责执行由 `.gitlab-ci.yml` 定义的任务。它支持多种执行方式(如 Shell、Docker、Kubernetes),可在不同环境中运行作业。本文详细介绍了 GitLab Runner 的基本概念、功能特点及使用方法,重点探讨了流水线缓存(以 Python 项目为例)和构建镜像的应用,特别是在 Kubernetes 环境中的配置与优化。通过合理配置缓存和镜像构建,能够显著提升 CI/CD 流水线的效率和可靠性,助力开发团队实现持续集成与交付的目标。
|
8天前
|
存储 人工智能 Cloud Native
NAS深度解析:面向云原生应用的文件存储
本文深入解析了面向云原生应用的文件存储NAS,由阿里云专家分享。内容涵盖Cloud Native与AI浪潮下的技术创新,包括高性能、弹性伸缩、成本优化及数据安全等方面。针对云原生应用的特点,NAS在Serverless生态中不断演进,提供多种产品规格以满足不同需求,如极速型NAS、归档存储等,确保用户在高并发场景下获得稳定低延时的存储体验。同时,通过优化挂载参数和容器访问策略,提升整体性能与可用性。
31 11
|
17天前
|
Kubernetes Linux 虚拟化
入门级容器技术解析:Docker和K8s的区别与关系
本文介绍了容器技术的发展历程及其重要组成部分Docker和Kubernetes。从传统物理机到虚拟机,再到容器化,每一步都旨在更高效地利用服务器资源并简化应用部署。容器技术通过隔离环境、减少依赖冲突和提高可移植性,解决了传统部署方式中的诸多问题。Docker作为容器化平台,专注于创建和管理容器;而Kubernetes则是一个强大的容器编排系统,用于自动化部署、扩展和管理容器化应用。两者相辅相成,共同推动了现代云原生应用的快速发展。
85 11
|
2月前
|
Kubernetes 监控 API
深入解析Kubernetes及其在生产环境中的最佳实践
深入解析Kubernetes及其在生产环境中的最佳实践
96 1
|
2月前
|
存储 Cloud Native 块存储
EBS深度解析:云原生时代企业级块存储
企业上云的策略,从 Cloud-Hosting 转向 Serverless 架构。块存储作为企业应用上云的核心存储产品,将通过 Serverless 化来加速新的计算范式全面落地。在本话题中,我们将会介绍阿里云块存储企业级能力的创新,深入解析背后的技术细节,分享对未来趋势的判断。
210 2
|
存储 运维 Kubernetes
阿里云数字新基建系列:云原生操作系统Kubernetes-第1章(4)
阿里云数字新基建系列包括5本书,题材涉及Kubernetes、混合云架构、云数据库、CDN原理与流媒体技术、云服务器运维(Windows),囊括了领先的云技术知识与阿里云技术团队独到的实践经验,是国内IT技术图书中又一套重磅作品! 本书是阿里云容器服务产品线上实践的技术沉淀,主要包括理论篇和实践篇两部分内容。理论篇注重理论介绍,核心是Kubernetes on Cloud,即着重介绍Kubernetes和阿里云产品的结合。实践篇是疑难问题的诊断案例,希望通过案例来和读者分享Kubernetes深度问题诊断......
阿里云数字新基建系列:云原生操作系统Kubernetes-第1章(4)
|
运维 Kubernetes Cloud Native
阿里云数字新基建系列:云原生操作系统Kubernetes-第1章(3)
阿里云数字新基建系列包括5本书,题材涉及Kubernetes、混合云架构、云数据库、CDN原理与流媒体技术、云服务器运维(Windows),囊括了领先的云技术知识与阿里云技术团队独到的实践经验,是国内IT技术图书中又一套重磅作品! 本书是阿里云容器服务产品线上实践的技术沉淀,主要包括理论篇和实践篇两部分内容。理论篇注重理论介绍,核心是Kubernetes on Cloud,即着重介绍Kubernetes和阿里云产品的结合。实践篇是疑难问题的诊断案例,希望通过案例来和读者分享Kubernetes深度问题诊断......
阿里云数字新基建系列:云原生操作系统Kubernetes-第1章(3)
|
存储 弹性计算 Kubernetes
阿里云数字新基建系列:云原生操作系统Kubernetes-第1章(2)
阿里云数字新基建系列包括5本书,题材涉及Kubernetes、混合云架构、云数据库、CDN原理与流媒体技术、云服务器运维(Windows),囊括了领先的云技术知识与阿里云技术团队独到的实践经验,是国内IT技术图书中又一套重磅作品! 本书是阿里云容器服务产品线上实践的技术沉淀,主要包括理论篇和实践篇两部分内容。理论篇注重理论介绍,核心是Kubernetes on Cloud,即着重介绍Kubernetes和阿里云产品的结合。实践篇是疑难问题的诊断案例,希望通过案例来和读者分享Kubernetes深度问题诊断......
阿里云数字新基建系列:云原生操作系统Kubernetes-第1章(2)
|
弹性计算 运维 Kubernetes
阿里云数字新基建系列:云原生操作系统Kubernetes-第1章(1)
  阿里云数字新基建系列包括5本书,题材涉及Kubernetes、混合云架构、云数据库、CDN原理与流媒体技术、云服务器运维(Windows),囊括了领先的云技术知识与阿里云技术团队独到的实践经验,是国内IT技术图书中又一套重磅作品! 本书是阿里云容器服务产品线上实践的技术沉淀,主要包括理论篇和实践篇两部分内容。理论篇注重理论介绍,核心是Kubernetes on Cloud,即着重介绍Kubernetes和阿里云产品的结合。实践篇是疑难问题的诊断案例,希望通过案例来和读者分享Kubernetes深度问题诊断......
阿里云数字新基建系列:云原生操作系统Kubernetes-第1章(1)
|
18天前
|
缓存 容灾 网络协议
ACK One多集群网关:实现高效容灾方案
ACK One多集群网关可以帮助您快速构建同城跨AZ多活容灾系统、混合云同城跨AZ多活容灾系统,以及异地容灾系统。

推荐镜像

更多