[转帖]CKA 真题

cka · 浏览次数 : 0

小编点评

**1. 列出pod并排序kubectl get pod --sort-by .metadata.name** ```bash kubectl get pods -n default --sort-by .metadata.name ``` **2.找出pod中的错误日志** ```bash kubectl logs heapster-798fcd9949-lk9rc | grep error > xx.txt ``` **3.创建一个pod,并调度到某个节点上命令行创建pod** ```bash kubectl create -f pod.yaml ``` **4. 列出正常节点的个数** ```bash kubectl get node ``` **5.pod中挂载volume** ```yaml apiVersion: v1kind: Podmetadata: name: static-web labels: role: myrolespec: containers: - name: web image: nginx ports: - name: web containerPort: 80 protocol: TCP17 ``` **6.创建servicepod的模板使用前几题留下的yaml,改下就行了** ```yaml service: nodePortType: NodePort template: metadata: labels: role: myrolespec: spec: containers: - name: web image: nginx ports: - name: web containerPort: 80 protocol: TCP17 ``` **7.创建一个pod引用该secret,一个用env ,一个用volume来调用这个文档里面全都有** ```yaml apiVersion: v1kind: Podmetadata: name: nginx labels: role: myrolespec: containers: - name: web image: nginx imagePullPolicy: IfNotPresent env: - name: SECRET_NAME value: mysecretvalue volumeMounts: - name: workdir mountPath: /usr/nginx/html ``` **8.使用ns lookup 查看service 和pod的dnsservice和pod的创建用之前的yaml查看dns** ```bash kubectl run -it --image busybox:1.28.4 dnstest --rm /bin/shsevice:nslookup svc-demo.kube-system.svc.cluster.localpod:nslookup 1-2-3-4.default.pod.cluster.local ``` **9.备份etcdETCDCTL_API=3** ```bash etcdctl --endpoints ....snapshot save ``` **10. static pod的使用文档地址** ```bash https://kubernetes.io/docs/tasks/administer-cluster/static-pod/ ```

正文

https://segmentfault.com/a/1190000021380185

 

  • 1.列出pod并排序
kubectl get pod --sort-by .metadata.name

题目一般都是按名字排序
  • 2.找出pod中的错误日志
kubectl logs heapster-798fcd9949-lk9rc | grep error > xx.txt

要求是把错误内容输出到某个文件中,可以粘贴,也可以直接重定向文件
  • 3.创建一个pod ,并调度到某个节点上
命令行创建pod的方法可以参考攻略的pdf,主要参数是--restart=Never,否则就会是deployment

kubectl run nginx-pod --image=nginx --port=80 --restart=Never --dry-run -o yaml > pod.yaml

先导出一份示例yaml出来,记得保存好这份yaml,后面也要用的

在yaml的spec属性中增加 nodeName: xxx

创建pod:kubectl create -f pod.yaml
  • 4.列出正常节点的个数
kubectl get node 

如何判断正常节点:一般都是not ready

get或者describe node排查node信息,把可用数写到一个文件中,文件里写一个数字就行了,不要多写空格换行之类的,谨记
  • 5.pod中挂载volume
  直接使用这个文档的示例就行,不用改啥东西
  文档地址:https://kubernetes.io/docs/concepts/storage/volumes/
  • 6.提供一个pod,添加init-container ,在container中添加一个空文件,启动的时候。在另一个containre中检测是否有这个文件,否则退出

文档地址:https://kubernetes.io/docs/co...

apiVersion: v1
kind: Pod
metadata:
  creationTimestamp: null
  labels:
    run: nginx-pod
  name: nginx-pod
spec:
  containers:
  - image: nginx
    name: nginx-pod
    command: ['sh','-c','if [ -f "a.txt" ]; then  echo xx ;fi']
    ports:
    - containerPort: 80
    resources: {}
    volumeMounts:
    - name: workdir
      mountPath: /usr/nginx/html
  dnsPolicy: ClusterFirst
  initContainers:
  - image: busybox
    name: initcheck
    command: ['sh','-c','touch /tmp/index.html']
    volumeMounts:
    - name: workdir
      mountPath: /tmp
  volumes:
  - name: workdir
    emptyDir: {}
  • 7.创建pod,再创建一个service
pod的模板使用前几题留下的yaml,改下就行了

   service的nodePort类型:https://kubernetes.io/docs/concepts/services-networking/service/
   
   注意:校验nodePort是否通,不要在中控机上校验,登录到node去校验
   
   也有可能让你建cluster-ip类型
   
  • 8.在一个pod中创建2个容器,如redis+nginx
apiVersion: v1
kind: Pod
metadata:
  name: demo
spec:
  containers:
  - image: nginx
    name: nginx
  - image: redis
    name: redis
  • 9.找到指定service下的pod中,cpu利用率按高到底排序

    按selector查找

kubectl get pod --selector="run=demo" | awk '{ print $1}' | grep -v NAME | 

或者找到pod后,一个一个看
kubectl top pod | grep -v NAME | sort -k 3
  • 10.创建一个简单的daemonset
文档地址:https://kubernetes.io/docs/concepts/workloads/controllers/daemonset/

文档中给的yaml内容太多了,volume都可以删掉

daemonset创建好后会发现pod数小于节点数,可以看下节点是不是打了taint
  • 11.deployment的扩容 ,scale命令
kubectl scale --replicas=4 deployment demo
  • 12 创建secret,有一个paasword字段(手动base64加密),创建两个pod引用该secret,一个用env ,一个用volume来调用
这个文档里面全都有,记住链接

https://kubernetes.io/docs/concepts/configuration/secret/
  • 13.先将nginx:1.9的deployment,升级到nginx:1.11,记录下来(—record),然后回滚到1.9

升级

kubectl set image deployments demo demo=nginx:1.11 --record

回滚

kubectl rollout undo deployment demo
  • 14.使用ns lookup 查看service 和pod的dns
service和pod的创建用之前的yaml
查看dns

kubectl run -it --image busybox:1.28.4  dnstest --rm /bin/sh


sevice:

nslookup svc-demo.kube-system.svc.cluster.local


pod:

nslookup 1-2-3-4.default.pod.cluster.local


查看pod ip时,要把1.2.3.4换成1-2-3-4,否则会报错

对应的文档:https://kubernetes.io/docs/concepts/services-networking/dns-pod-service/
  • 15.etcdctl 来 备份etcd
ETCDCTL_API=3 etcdctl --endpoints ....snapshot save  xxx 根据-h提示写就行了

先声明环境变量ETCDCTL_API=3 ,不然etcdctl 是v2版本

这个文档:

文档地址:https://kubernetes.io/docs/tasks/administer-cluster/configure-upgrade-etcd/
  • 16.static pod的使用
文档地址:https://kubernetes.io/docs/tasks/administer-cluster/static-pod/


找到--pod-manifest-path=/etc/kubelet.d/配置的位置,然后把pod的yaml放进去

apiVersion: v1
kind: Pod
metadata:
  name: static-web
  labels:
    role: myrole
spec:
  containers:
    - name: web
      image: nginx
      ports:
        - name: web
          containerPort: 80
          protocol: TCP
  • 17.在一个新的namespace创建pod

    先创建ns,在创建pod,和前面步骤类似

  • 18.pv 类型hostpath 位置在/data , 大小为1G , readonly模式
文档地址:

https://kubernetes.io/docs/concepts/storage/persistent-volumes/
  • 20.给pod创建service
  • 21.使用node selector,选择disk为ssd的机器调度
apiVersion: v1
kind: Pod
metadata:
  name: nginx
  labels:
    env: test
spec:
  containers:
  - name: nginx
    image: nginx
    imagePullPolicy: IfNotPresent
  nodeSelector:
    disktype: ssd

22.排查apiserver连接不上问题:

用的kubeadmin安装的,是kubelet的配置中目录地址有问题
  • 23.把一个node弄成unavailable 并且把上边的pod重新调度去新的node上

    应该是直接drain,需要注意daemonset要强制删除,或者给节点打污点,taint,再去删掉

  • 24.tls bootstrap加入节点(题目超长,时间一般都是不够用的。可以选择性放弃,这题8分)

参考作答:https://lingxiankong.github.i...

文档地址:https://kubernetes.io/docs/re...

与[转帖]CKA 真题相似的内容:

[转帖]CKA 真题

https://segmentfault.com/a/1190000021380185 1.列出pod并排序 kubectl get pod --sort-by .metadata.name 题目一般都是按名字排序 2.找出pod中的错误日志 kubectl logs heapster-798fcd

[转帖]

Linux ubuntu20.04 网络配置(图文教程) 因为我是刚装好的最小系统,所以很多东西都没有,在开始配置之前需要做下准备 环境准备 系统:ubuntu20.04网卡:双网卡 网卡一:供连接互联网使用网卡二:供连接内网使用(看情况,如果一张网卡足够,没必要做第二张网卡) 工具: net-to

[转帖]

https://cloud.tencent.com/developer/article/2168105?areaSource=104001.13&traceId=zcVNsKTUApF9rNJSkcCbB 前言 Redis作为高性能的内存数据库,在大数据量的情况下也会遇到性能瓶颈,日常开发中只有时刻

[转帖]ISV 、OSV、 SIG 概念

ISV 、OSV、 SIG 概念 2022-10-14 12:29530原创大杂烩 本文链接:https://www.cndba.cn/dave/article/108699 1. ISV: Independent Software Vendors “独立软件开发商”,特指专门从事软件的开发、生产、

[转帖]Redis 7 参数 修改 说明

2022-06-16 14:491800原创Redis 本文链接:https://www.cndba.cn/dave/article/108066 在之前的博客我们介绍了Redis 7 的安装和配置,如下: Linux 7.8 平台 Redis 7 安装并配置开机自启动 操作手册https://ww

[转帖]HTTPS中间人攻击原理

https://www.zhihu.com/people/bei-ji-85/posts 背景 前一段时间,公司北京地区上线了一个HTTPS防火墙,用来监听HTTPS流量。防火墙上线之前,邮件通知给管理层,我从我老大那里听说这个事情的时候,说这个有风险,然后意外地发现,很多人原来都不知道HTTPS防

[转帖]关于字节序(大小端)的一点想法

https://www.zhihu.com/people/bei-ji-85/posts 今天在一个技术群里有人问起来了,当时有一些讨论(不完全都是我个人的观点),整理一下: 为什么网络字节序(多数情况下)是大端? 早年设备的缓存很小,先接收高字节能快速的判断报文信息:包长度(需要准备多大缓存)、地

[转帖]awk提取某一行某一列的数据

https://www.jianshu.com/p/dbcb7fe2da56 1、提取文件中第1列数据 awk '{print $1}' filename > out.txt 2、提取前2列的文件 awk `{print $1,$2}' filename > out.txt 3、打印完第一列,然后打

[转帖]awk 中 FS的用法

https://www.cnblogs.com/rohens-hbg/p/5510890.html 在openwrt文件 ar71xx.sh中 查询设备类型时,有这么一句, machine=$(awk 'BEGIN{FS="[ \t]+:[ \t]"} /machine/ {print $2}' /

[转帖]Windows Server 2022 简体中文版、英文版下载 (updated Oct 2022)

https://sysin.org/blog/windows-server-2022/ Windows Server 2022 正式版,2022 年 10 月更新,VLSC Posted by sysin on 2022-10-27 Estimated Reading Time 8 Minutes