目录
前言
15. sidecar边车容器
16. 升级集群
17.备份还原etcd
17道真题难度等级
一级 rbac cpu 扩容 pod指定节点 pv pod日志 排障 查看可用节点 多容器pod 节点维护
二级 networkpolicy service ingress pvc
三级 sidecar 升级集群 备份还原etcd
本系列有三篇博客,本博客为第三篇,即三级难度篇。
CKA注意事项:CKA考试注意事项--考前必看!_luo_guibin的博客-CSDN博客
第一篇:CKA认证真题(1)-- 必考_luo_guibin的博客-CSDN博客
第二篇:CKA考试真题(2)_luo_guibin的博客-CSDN博客
第三篇:CKA认证真题(3)-- 绝对干货!_luo_guibin的博客-CSDN博客
Context
将一个现有的 Pod 集成到 Kubernetes 的内置日志记录体系结构中(例如 kubectl logs)。
添加 streaming sidecar 容器是实现此要求的一种好方法。
Task
使用 busybox Image 来将名为 sidecar 的 sidecar 容器添加到现有的 Pod big-crop-app 中。
新的 sidecar 容器必须运行以下命令:
/bin/sh -c tail -n+1 -f /var/log/big-crop-app.log
使用挂载在/var/log 的 Volume,使日志文件 big-crop-app.log 可用于 sidecar 容器。
除了添加所需要的 volume mount 以外,请勿更改现有容器的规格。
参考文档:日志架构 | Kubernetes
#总共新增10行
#答案
kubectl get pod big-factor-app -o yaml > varlog.yam
cp varlog.yaml varlog-bak.yaml
vi varlog.yaml
volumeMounts: #在原配置文件,灰色的这段后面添加
- mountPath: /var/run/secrets/kubernetes.io/serviceaccount
name: default-token-4l6w8
readOnly: true
- name: varlog #新加内容
mountPath: /var/log #新加内容
- name: sidecar #新加内容,注意 name 别写错了
image: busybox #新加内容
args: [/bin/sh, -c, 'tail -n+1 -f /var/log/big-crop-app.log'] #新加内容,注意 文件名 别写错了。另外是用逗号分隔的,而题目里是空格。
volumeMounts: #新加内容
- name: varlog #新加内容
mountPath: /var/log #新加内容
dnsPolicy: ClusterFirst
......
- name: varlog #新加内容
emptyDir: {} #新加内容
kubectl delete pod big-factor-app
kubectl apply -f varlog.yaml
#检查
kubectl logs 11-factor-app sidecar
kubectl exec 11-factor-app -c sidecar -- tail -f /var/log/big-factor-app.log
kubectl exec 11-factor-app -c count -- tail -f /var/log/big-factor-app.log
#varlog.yaml更改细节位置
image: busybox
imagePullPolicy: IfNotPresent
name: count
resources: {}
terminationMessagePath: /dev/termination-log
terminationMessagePolicy: File
volumeMounts:
- mountPath: /var/run/secrets/kubernetes.io/serviceaccount
name: kube-api-access-xhzsg
readOnly: true
- name: varlog
mountPath: /var/log
- name: count-log-1
image: busybox:1.28
args: [/bin/sh, -c, 'tail -n+1 -F /var/log/1.log']
volumeMounts:
- name: varlog
mountPath: /var/log
dnsPolicy: ClusterFirst
enableServiceLinks: true
nodeName: node01
......
volumes:
- name: kube-api-access-xhzsg
projected:
defaultMode: 420
sources:
- serviceAccountToken:
expirationSeconds: 3607
path: token
- configMap:
items:
- key: ca.crt
path: ca.crt
name: kube-root-ca.crt
- downwardAPI:
items:
- fieldRef:
apiVersion: v1
fieldPath: metadata.namespace
path: namespace
- name: varlog
emptyDir: {}
Task
现有的 Kubernetes 集群正在运行版本 1.27.1。仅将 master 节点上的所有 Kubernetes 控制平面和节点组件升级到版本 1.27.2。
确保在升级之前 drain master 节点,并在升级后 uncordon ssh mk8s-master-0 节点。
可以使用以下命令,通过 ssh 连接到 master 节点:
ssh mk8s-master-0
可以使用以下命令,在该 master 节点上获取更高权限:
sudo -i
另外,在主节点上升级 kubelet 和 kubectl。
请不要升级工作节点,etcd,container 管理器,CNI 插件, DNS 服务或任何其他插件。
升级顺序:调度节点--kubeadm--plan--集群--kubelet--kubectl
#答案
kubectl get nodes
kubectl cordon ssh mk8s-master-0
kubectl drain ssh mk8s-master-0 --ignore-daemonsets
ssh ssh mk8s-master-0
sudo -i
apt-get update
apt-cache show kubeadm|grep 1.27.2
apt-get install kubeadm=1.27.2-00
kubeadm version
kubeadm upgrade plan
kubeadm upgrade apply v1.27.2 --etcd-upgrade=false
apt-get install kubelet=1.27.2-00
kubelet --version
apt-get install kubectl=1.27.2-00
kubectl version
exit
exit
kubectl get nodes
Task
首先,为运行在 https://127.0.0.1:2379 上的现有 etcd 实例创建快照并将快照保存到 /var/lib/backup/etcd-snapshot.db
为给定实例创建快照预计能在几秒钟内完成。 如果该操作似乎挂起,则命令可能有问题。用 CTRL + C 来取消操作,然后重试。
然后还原位于/data/backup/etcd-snapshot-previous.db 的现有先前快照。
提供了以下 TLS 证书和密钥,以通过 etcdctl 连接到服务器。
CA 证书: /opt/KUIN00601/ca.crt
客户端证书: /opt/KUIN00601/etcd-client.crt
客户端密钥: /opt/KUIN00601/etcd-client.key
#答案
#加载环境
export ETCDCTL_API=3
#备份
etcdctl --endpoints=https://11.0.1.111:2379 --cacert="/opt/KUIN00601/ca.crt" --cert="/opt/KUIN00601/etcd-client.crt" --key="/opt/KUIN00601/etcd-client.key"
snapshot save /var/lib/backup/etcd-snapshot.db
#检查,会出现一个db详情表
etcdctl snapshot status /var/lib/backup/etcd-snapshot.db -wtable
#还原,需要用sudo
sudo etcdctl --endpoints=https://11.0.1.111:2379 --cacert="/opt/KUIN00601/ca.crt" --cert="/opt/KUIN00601/etcd-client.crt" --
key="/opt/KUIN00601/etcd-client.key" snapshot restore /data/backup/etcd-snapshot-previous.db