2022年CKA 考试题 2022年3月1日刚过
好久好久没写文章了,回顾这一年,虽然做管理工作,但是从前端,后端,售前售后到运维。。。感觉什么都干了个遍,感谢公司能给我报销CKA考试,现在凭记忆就把题目给大家分享下,在网上搜了很多,跟去年的题都很像的,我考了90分,从去年陆陆续续的准备,还是学到了很多,有一点就是考试的时候网一定要好啊~我前半个小时就是和考官在折腾环境,一直都卡,后来重新计时了,也就是说我考了2个半小时,考官会一直跟你chat,
好久好久没写文章了,回顾这一年,虽然做管理工作,但是从前端,后端,售前售后到运维。。。感觉什么都干了个遍,感谢公司能给我报销CKA考试,现在凭记忆就把题目给大家分享下,在网上搜了很多,跟去年的题都很像的,我考了90分,从去年陆陆续续的准备,还是学到了很多,有一点就是考试的时候网一定要好啊~我前半个小时就是和考官在折腾环境,一直都卡,后来重新计时了,也就是说我考了2个半小时,考官会一直跟你chat,连咳嗽多了都不行,我带的手链也要求摘下来。。。不过还是比较客气的~
原创啊,请勿转载
如果想要更多资料,欢迎打赏,嘿嘿,从来没收到过打赏~不打赏看到了可能也还是会给你的,大家加油
1 RBCA
创建一个名为deployment-clusterrole且仅允许创建以下资源类型的新ClusterRole:
Deployment
StatefulSet
DaemonSet
在现有的 namespace app-team1中创建一个名为cicd-token的新 ServiceAccount。
限于 namespace app-team1中,将新的ClusterRole deployment-clusterrole绑定到新的 ServiceAccount cicd-token。
kubectl create clusterrole deployment-clusterrole --verb=create --resource=deployments,statefulsets,daemonsets
kubectl -n app-team1 create serviceaccount cicd-token
kubectl -n app-team1 create rolebinding cicd-token-rolebinding --clusterrole=deployment-clusterrole --serviceaccount=app-team1:cicd-token
2 配置网络策略 NetworkPolicy(注意echo和my-app的名字好像换了)
在现有的namespace echo中创建一个名为allow-port-from-namespace的新NetworkPolicy。
确保新的NetworkPolicy允许命名空间my-app的能访问my-app的所有pod的5768端口。
进一步确保新的NetworkPolicy:
不允许对没有在监听 端口5768的Pods的访问
不允许非来自 namespace my-app中的Pods的访问
apiVersion: networking.k8s.io/v1
kind: NetworkPolicy
metadata:
name: allow-port-from-namespace
namespace: echo #目的命名空间
spec:
podSelector: {} # 注意这里我敲加matchLabels会出错,删了matchLabels这么写可以过
policyTypes:
- Ingress #策略影响入栈流量
ingress:
- from: #允许流量的来源
- namespaceSelector:
matchLabels:
project: my-app
ports:
- protocol: TCP
port: 5768 #允许访问的端口
3 暴露服务
请重新配置现有的部署front-end以及添加名为http的端口规范来公开现有容器 nginx 的端口80/tcp。
创建一个名为front-end-svc的新服务,以公开容器端口http。
配置此服务,以通过在排定的节点上的 NodePort 来公开各个 Pods。
kubectl get deploy front-end
参考官方文档,按照需要edit deployment,添加端口信息
kubectl edit deployment front-end
spec:
containers:
- image: vicuu/nginx:hello
imagePullPolicy: IfNotPresent
name: nginx
ports:
- name: http
containerPort: 80
protocol: TCP
然后暴露对应端口
kubectl expose deployment front-end --type=NodePort --port=80 --target-port=80 --name=front-end-svc # --name这个不要忘了
4 创建Ingress
如下创建一个新的nginx Ingress资源:
名称: ping
Namespace: ing-internal
使用服务端口 5678在路径 /hello 上公开服务 hello
可以使用以下命令检查服务 hello的可用性,该命令应返回 hello:
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
name: ping
namespace: ing-internal
annotations:
kubernetes.io/ingress.class: "nginx" # 这句要加不然kubctl get ingress 不出来address
nginx.ingress.kubernetes.io/rewrite-target: /
spec:
rules:
- http:
paths:
- path: /hello
pathType: Prefix
backend:
service:
name: hello
port:
number: 5678
5 扩容 deployment副本数量
这么简单不想说了贴个url吧 扩缩 StatefulSet | Kubernetes
6 nodeSelector
7 升级
我是按照升级到1.22.2 升级 kubeadm 集群 | Kubernetes
8 备份还原
export ETCDCTL_API=3
etcdctl --endpoints=https://127.0.0.1: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
etcdctl --endpoints=https://127.0.0.1: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
这里记得要按提示题目exit出去
9 多容器的Pod(就两个好像)
apiVersion: v1
kind: Pod
metadata:
name: kucc8
spec:
containers:
- name: nginx
image: nginx
- name: redis
image: redis
10 创建PV,PVC,及对应的POD
配置 Pod 以使用 PersistentVolume 作为存储 | Kubernetes
以这个链接为参考
11 排查集群中故障节点
ssh node01
sudo -i
检查kubelet服务
systemctl status kubelet
# 启动服务,并设置为开机启动
systemctl restart kubelet
systemctl enable kubelet
检查
systemctl status kubelet
12 drain 节点
kubectl cordon node01
kubectl drain node01 --ignore-daemonsets --delete-emptydir-data --force #我试了下不加delete-emptydir-data会出错
13 找CPU消耗最高的Pod
kubectl top pod -l name=cpu-loader --sort-by=cpu -A
14 找日志
kubectl logs foo | grep "要搜的内容"
更多推荐
所有评论(0)