CKA真题:题目和解析-1

本文涉及的产品
公共DNS(含HTTPDNS解析),每月1000万次HTTP解析
全局流量管理 GTM,标准版 1个月
日志服务 SLS,月写入数据量 50GB 1个月
简介: CKA真题:题目和解析-1


所有命令都验证过,有更好的方式,欢迎留言~~~

CKA 习题和真题汇总

更多CKA资料或交流:可加 wei  xin :wyf19910905


答题技巧

  • 避免手敲yaml,能不手敲yaml的,就别手敲,尽量从文档上复制,手敲的效率太低了,碰上终端响应慢,那是时间的杀手!!

使用命令补全: source <(kubectl completion bash)

使用别名 :

# vim ~/.bashrc
# 添加 
alias k='kubectl'
alias kgp='kubectl get pods'
alias kgs='kubectl get svc'
# source ~/.bashrc

 

  • 环境检查

集群版本:$ kubectl version

集群整体状态:

$ kubectl cluster-info

更多集群信息:

$ kubectl cluster-info dump

集群组件状态:

$ kubectl get componentstatus

集群主控节点判断(ROLES里是否有master信息):

$ kubectl get node

集群安装方式判断(kubeadm还是二进制)

$ 查看/etc/kubernetes/manifests 里有没有etcd、kube-apiserver.yaml、kube-controller-manager.yaml、schedule.yaml,如果有这4个文件,则是以kubeadm方式安装,实现方式为静态Pod方式实现

集群当前上下文:kubectl config current-context

集群上下文切换:kubectl config set-context gce --user=cluster-admin

  • 尽量使用命令创建Pod、deployment、service

#创建Pod

kubectl run <podname> --image=<imagename> --generator=run-pod/v1  -n <namespace>

#创建Deployment

kubectl run <deploymentname> --image=<imagename> --generator=deployment/v1beta1 -n <namespace>

#暴露Service

kubectl expose deployment/<deploymentname> --type="NodePort" --port 8080  --name=<svcname>

  • 搜索文档内容kubeclt结合grep或egrep
$ kubectl get nodes -o yaml | egrep '\sname:|cpu:|memory:'
name: minikube      
cpu: "2"
memory: 2417860Ki
cpu: "2"
memory: 2520260Ki
  • 养成使用--dry-run、kubectl apply -f、kubectl delete -f的习惯,同时将答案和yaml写入到文件里,方便根据命令模板修改yaml,以及后面检查答案时重做题目。举个例子,使用run命令忘记增加namespace了
#初次生成
kubectl run <podname> --image=<imagename> --restart=Never --dry-run -o yaml > <题目名称>.yaml
#应用yaml
kubectl apply -f  <题目名称>.yaml
#审题错了,删除之前做的结果
kubectl delete -f  <题目名称>.yaml
#修改命令或修改yaml重新执行kubectl apply -f
  • 见到不懂或忘记的命令参数,甭管什么kubectl,etcdctl的命令,盘他 -h,-h是万能的。里面有示例。(还有kubectl explain
  • 最后,考试环境中一定要留意k8s环境和尤其是主机名和用户名,默认可以使用ssh 进入 node, 进入node做完题目后记得退出(exit),不然节点内是无法ssh到下一个题目的node当中去的,节点内终端一般显示student@<worknodename>


考试注意:

注意:考试中一共有24题,

除“给出一个集群,把一个节点以TLS方式加入到集群(最长的那题)”以外(难度较大建议放弃), 其他23题全部按这个题型排列,一题一题做下去即可。


考试集群

注意切换集群上下文,每道题目都会给出提示

k8s集群:

k8s-master-0

k8s-node-0

k8s-node-1

 

wk8s集群:

wk8s-master-0

wk8s-node-0

wk8s-node-1


1、统计pod错误日志

Set configuration context $ kubectl config use-context k8s

Monitor the logs of Pod foobar and Extract log lines corresponding to error unable-to-access-website Write them to /opt/KULM00201/foobar

监控Pod名称为foobar 的日志,并提取与无法访问错误对应的日志行,将它们写入/opt/KULM00201/foobar

答:

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


扩展示例

1.1 监控 foobar Pod 的日志,提取 pod 相应的行'error'写入到/logs 文件中

kubectl logs foobar | grep error > /log


2、排序

Set configuration context $ kubectl config use-context k8s

List all PVs sorted by name,saving the full kubectl output to /opt/kUCC0010/my_volumes. Use kubectl‘s own functionally for sorting the output,and do not mainpulate it any further

列出所有按名称排序的pv,将完整的kubectl输出保存到a。使用kubectl函数对输出进行排序,并且不再进一步操作它。

答:

kubectl get pv  --sort-by=.metadata.name > /opt/KUCC0010/my_volumes


3、Daemonset

Set configuration context $ kubectl config use-context k8s

  • Ensure a single instance of Pod nginx is running on each node of the kubernetes cluster where nginx also represents the image name which has to be used.
  • Do no override any taints currently in place.
  • Use Daemonset to complete this task and use ds.kusc00201 as Daemonset name.

确保在kubernetes集群的每个节点上运行一个Pod nginx实例,其中nginx还表示必须使用的镜像名称。

不要覆盖任何当前存在的污点( 不要有tolerations)

使用Daemonset 完成此任务,并使用ds.kusc00201作为Daemonset名称

答:

如何调度 Daemon Pod

正常情况下,Pod 运行在哪个机器上是由 Kubernetes 调度器来选择的。然而,由 Daemon Controller 创建的 Pod 已经确定了在哪个机器上(Pod 创建时指定了 .spec.nodeName),因此:

  • DaemonSet Controller 并不关心一个节点的 unschedulable 字段。
  • DaemonSet Controller 可以创建 Pod,即使调度器还没有启动,这对集群启动是非常有帮助的。

Daemon Pod 关心 Taint 和 Toleration,它们会为没有指定 tolerationSecondsnode.kubernetes.io/not-readynode.alpha.kubernetes.io/unreachable 的 Taint创建具有 NoExecute 的 Toleration

这确保了当 alpha 特性的 TaintBasedEvictions 被启用时,发生节点故障,比如网络分区,这时它们将不会被清除掉(当 TaintBasedEvictions特性没有启用,在这些场景下也不会被清除,但会因为 NodeController 的硬编码行为而被清除,而不会因为 Toleration 导致被清除)


方法1

vim.3daemonset.yaml

apiVersion: apps/v1
kind: DaemonSet
metadata:
  name: ds.kusc00201
spec:
  selector:
    matchLabels:
      run: nginx
  template:
    metadata:
      labels:
        run: nginx
    spec:
      containers:
      - name: nginx
        image: nginx

 

kubectl apply -f 3daemonset.yaml


方法2

手写yaml太麻烦,由于damonSet的格式和Deployment格式差不多,可以先创建Deploy,再修改,这样速度会快一点

#先创建一个deployment的yaml模板
kubectl run nginx --image=nginx --dry-run -o yaml > 3.yaml
#将yaml改成DaemonSet
vi 3.yaml
#修改apiVersion和kind
#apiVersion: extensions/v1beta1
#kind: Deployment
apiVersion:apps/v1
kind: DaemonSet
metadata:
  creationTimestamp: null
  labels:
    run: nginx
  name: nginx
spec:
#去掉replicas
# replicas: 1
  selector:
    matchLabels:
      run: nginx
 # 去掉strategy
 # strategy: {}
  template:
    metadata:
      creationTimestamp: null
      labels:
        run: nginx
    spec:
      containers:
      - image: nginx
        name: nginx
        resources: {}
# 去掉status
#status: {}

 

官网参考链接:https://kubernetes.io/docs/concepts/workloads/controllers/daemonset/


4、init容器

Set configuration context $ kubectl config use-context k8s

Perform the following tasks Add an init container to lumpy-koala (which has been defined in spec file /opt/kucc00100/pod-sepc-KUCC00100.yaml)

The init container should create an empty file named /workdir/calm.txt

If /workdir/calm.txt is not be detected,the Pod should exit.Once the spec file has been updated  with the init container definition, the Pod should be created.

执行以下任务,

向lumpy—koala添加一个init容器(已在/opt/kucc00100/pod-spec-kucc00100.yaml中定义)

init容器应该创建一个名为/workdir/calm.txt的空文件

如果/workdir/calm.txt没有检测到,Pod应该退出

一旦使用init容器定义更新了 spec文件,就应该创建Pod

考点:init Container。要用到livenessProbes

答:

vim /opt/kucc00100/pod-spec-KUCC00100.yaml

在最后加上

  initContainers:
  - name: init-c
    image: busybox
    command: ["/bin/sh", "-c", "touch /workdir/calm.txt"]

cat pod-sepc-KUCC00100.yaml

apiVersion: v1
kind: Pod
metadata:
  name: lumpy-koala
spec:
  volumes:
  - name: workdir
    emptyDir: {}
  containers:
  - name: checker
    image: nginx
    livenessProbe:
      exec:
        command: ["test","-e","/workdir/calm.txt"]
    volumeMounts:
    - name: workdir
      mountPath: /workdir
  initContainers:
  - name: init-busybox
    image: busybox
    command: ["/bin/sh", "-c", "touch /workdir/calm.txt"]
    volumeMounts:
    - name: workdir
      mountPath: /workdir

没有livenessProbe的写法

apiVersion: v1
kind: Pod
metadata:
  name: kumpy-koala
spec:
  volumes:
  - name: workdir
    emptyDir: {}
  containers:
  - name: checker
    image: alpine
  command: ["/bin/sh", "-c", "if [ -f /workdir/calm.txt ];then sleep 100000;else exit 1;fi"]
  volumeMounts:
  - name: workdir  
    mountPath: /workdir
  initContainers:
  - name: busybox
    image: busybox  
  command: ['/bin/sh', '-c', 'touch /workdir/calm.txt']
  volumeMounts:
  - name: workdir  
    mountPath: /workdir


kubectl apply -f /opt/kucc00100/pod-spec-KUCC00100.yaml

  • sh -c 它可以让 bash 将一个字串作为完整的命令来执行,这样就可以将 sudo 的影响范围扩展到整条命令。
  • test -e 该『文件名』是否存在?(常用)

官网参考链接:https://kubernetes.io/docs/concepts/workloads/pods/init-containers/



目录
相关文章
|
3月前
|
网络协议 PHP
软件设计师软考题目解析21 --每日五题
每日五题解析,包括海明码纠错、POP3协议通信模式、中断处理、HTML邮件链接创建和结构化开发方法中的接口设计等知识点。
21 1
|
3月前
|
算法 测试技术
软件设计师软考题目解析24 --每日五题
这篇文章提供了软件设计师软考的每日五题解析,包括测试用例设计、软件维护类型、路径覆盖测试、软件维护工具和系统改进等知识点。
40 0
软件设计师软考题目解析24 --每日五题
|
3月前
|
项目管理
软件设计师软考题目解析20之英语题
软件设计师软考中英语题目的解析和答题技巧,帮助考生攻克英语部分的题目。
32 0
软件设计师软考题目解析20之英语题
|
3月前
|
存储 数据安全/隐私保护
软件设计师软考题目解析下午题01
这篇文章提供了对软件设计师软考下午题目的解析,涉及农业基地信息化管理服务平台的人员管理、基地管理、种植管理、投入品管理和信息服务功能,并要求考生根据上下文描述和数据流图来回答问题。
36 0
软件设计师软考题目解析下午题01
|
3月前
|
前端开发 数据处理
软件设计师软考题目解析23 --每日五题
每日五题解析,涉及结构化开发方法的特点、数据流图的基本加工、MVC体系结构的优点以及模块间耦合类型的判断等知识点。
27 0
|
3月前
|
算法 数据建模 数据库
软件设计师软考题目解析22 --每日五题
每日五题解析,涉及结构化开发方法中的接口设计依据、数据结构和算法设计、数据流图的使用场景、外部实体的识别以及决策树在数据流图中表示复杂条件逻辑的应用。
28 0
|
3月前
|
测试技术
软件设计师软考题目解析19 --每日五题
这篇文章提供了软件设计师软考的每日五题解析,包括白盒测试方法、回归测试、面向对象开发方法、总线复用方式和海明码纠错等知识点。
22 0
|
3月前
|
算法 Ruby
软件设计师软考题目解析18 --每日五题
这篇文章提供了软件设计师软考的每日五题解析,包括计算机指令周期、软件设计阶段、模块化原则、程序控制结构和软件项目规模确定等知识点。
40 0
|
3月前
|
存储
软件设计师软考题目解析17 --每日五题
这篇文章提供了软件设计师软考的每日五题解析,包括页面变换、段页式存储管理、可变式分区分配、虚拟页式存储管理和I/O接口编址等计算机系统相关题目。
144 0
|
3月前
|
索引 Windows
软件设计师软考题目解析16 --每日五题
这篇文章提供了软件设计师软考的每日五题解析,涵盖了文件系统崩溃影响、多级索引结构、位示图大小计算、文件关联以及位示图大小需求等知识点。
101 0

热门文章

最新文章

推荐镜像

更多