企业网站制作找什么人,莱芜新闻联播回放,深圳的网站建设公司 湖南岚鸿,响应式网页设计原理文章目录 第一题#xff1a;RBAC授权访问控制第二题#xff1a;Node节点维护第三题#xff1a;K8S集群版本升级第四题#xff1a;ETCD数据库备份恢复第五题#xff1a;NetworkPolicy网络策略第六题#xff1a;Service四层负载第七题#xff1a;Ingress七层负载第八题RBAC授权访问控制第二题Node节点维护第三题K8S集群版本升级第四题ETCD数据库备份恢复第五题NetworkPolicy网络策略第六题Service四层负载第七题Ingress七层负载第八题DeployMent管理Pod扩容(送分题)第九题Pod指定调度节点第十题检查可用Node节点数量第十一题Pod封装多容器(送分题)第十二题PersistentVolume持久化存储卷第十三题PersistentVolumeClaim第十四题Pod日志查看(送分题)第十五题Sidecar代理第十六题Pod CPU资源使用率第十七题K8S集群故障排查(送分题) 第一题RBAC授权访问控制
官方参考地址https://kubernetes.io/zh-cn/docs/reference/access-authn-authz/rbac/
考题创建一个名为deploy-role的clusterrole该clusterrole只允许对deployment、daemonset、statefulset具有create权限基于现有的名称空间 topic-1中创建一个名为cicd-token-user的 serviceaccount。
限于名称空间 topic-1中将clusterrole deploy-role绑定到serviceaccount cicd-token-user。
解题
1、创建ClusteRrole角色
kubectl create clusterrole deploy-role --verbcreate --resourcedeployments,daemonsets,statefulsets2、创建ServiceAccount账户
kubectl create serviceaccount cicd-token-user -n topic-13、创建RoleBinding将角色与账户绑定
kubectl create rolebinding cicd-token-bind --clusterroledeploy-role --serviceaccounttopic-1:cicd-token-user -n topic-14、验证绑定信息
kubectl describe rolebinding cicd-token-bind -n topic-1第二题Node节点维护
官方参考地址https://kubernetes.io/docs/tasks/administer-cluster/safely-drain-node/
考题将k8s-node-1节点设置为不可用然后重新调度该节点上的所有Pod
解题
1、设置节点不可调度
kubectl cordon k8s-node-12、驱除k8s-node-1节点上Pod
kubectl drain k8s-node-1 --ignore-daemonsets --delete-emptydir-data --force第三题K8S集群版本升级
官方参考地址https://kubernetes.io/zh-cn/docs/tasks/administer-cluster/kubeadm/kubeadm-upgrade/
考题现有的Kubernetes 集群正在运行版本1.23.1。仅将master节点上的所有 Kubernetes控制平面和节点组件升级到版本1.23.2。
确保在升级之前 drain k8s-master-1节点并在升级后 uncordon k8s-master-1节点。
另外在主节点上升级kubelet和kubectl请不要升级工作节点etcdcontainer 管理器CNI插件 DNS服务或任何其他插件。
解题
1、驱除节点pod
kubectl cordon k8s-master-1
kubectl drain k8s-master-1 --delete-emptydir-data --ignore-daemonsets --force2、将kubeadm升级到1.23.2版本
apt-cache show kubeadm|grep 1.23.2
apt-get update
apt-get install kubeadm1.23.2-00
Do you want to continue? [Y/n] y3、验证升级计划
kubeadm version
kubeadm upgrade plan5、选择升级的版本 v1.23.2忽略etcd升级
kubeadm upgrade apply v1.23.2 --etcd-upgrade
[upgrade/confirm] Are you sure you want to proceed with the upgrade? [y/N]: y正确升级完成后会显示下图 5、升级kubelet、kubectl
apt-get install kubelet1.23.2-00 kubectl1.23.2-00
Do you want to continue? [Y/n] y
kubelet --version
kubectl version6、设置节点可调度
kubectl uncordon k8s-master-1
kubectl get nodes第四题ETCD数据库备份恢复
官方参考地址https://kubernetes.io/zh-cn/docs/tasks/administer-cluster/configure-upgrade-etcd/
考题首先为运行在https://127.0.0.1:2379上的现有 etcd 实例创建快照并将快照保存到 /tmp/etcd-snapshot.db文件
然后还原位于/tmp/etcd-snapshot-previous.db的现有先前快照。
提供了以下TLS证书和密钥以通过etcdctl连接到服务器。
CA 证书: /etc/kubernetes/pki/etcd/ca.crt客户端证书: /etc/kubernetes/pki/etcd/server.crt客户端密钥: /etc/kubernetes/pki/etcd/server.key
解题
1、备份ETCD数据
export ETCDCTL_API3etcdctl --endpointshttps://127.0.0.1:2379 --cacert/etc/kubernetes/pki/etcd/ca.crt --cert/etc/kubernetes/pki/etcd/server.crt --key/etc/kubernetes/pki/etcd/server.key snapshot save /tmp/etcd-snapshot.db2、恢复ETCD数据
etcdctl --endpointshttps://127.0.0.1:2379 --cacert/etc/kubernetes/pki/etcd/ca.crt --cert/etc/kubernetes/pki/etcd/server.crt --key/etc/kubernetes/pki/etcd/server.key snapshot restore /tmp/etcd-snapshot-previous.db第五题NetworkPolicy网络策略
官方参考地址https://kubernetes.io/docs/concepts/services-networking/network-policies/
考题基于已经存在的 topic-5 名称空间中创建一个名为allow-port的新NetworkPolicy。
确保新的NetworkPolicy允许echo名称空间中的Pods连接到名称空间topic-5中的Pods的9900端口。
进一步确保新的NetworkPolicy
不允许对没有在监听端口9900的Pods的访问不允许非来自名称空间echo中的Pods的访问
解题
1、给echo名称空间打一个标签
kubectl label ns echo projectecho2、编写资源清单 执行资源清单
vim networkpolicy.yaml
---
apiVersion: networking.k8s.io/v1
kind: NetworkPolicy
metadata:name: allow-portnamespace: topic-5
spec:podSelector:matchLabels: {}policyTypes:- Ingressingress:- from:- namespaceSelector:matchLabels:project: echoports:- protocol: TCPport: 9900kubectl apply -f networkpolicy.yaml第六题Service四层负载
官网参考地址http://kubernetes.io/docs/concepts/workloads/controllers/deployment
https://kubernetes.io/zh-cn/docs/concepts/services-networking/service/
考题重新配置一个已经存在的front-end的deployment在名字为nginx的容器里面添加一个端口配置名字为http暴露端口号为80然后创建一个service名字为front-svc暴露该deployment的http端口并且service的类型为NodePort。
解题
1、添加deployment暴露端口配置
kubectl edit deployment front-end2、编写service资源清单 执行资源清单
vim front-svc.yml
---
apiVersion: v1
kind: Service
metadata:name: front-svc
spec:type: NodePortselector:app: nginxports:- port: 80targetPort: httpkubectl apply -f front-svc.yml 3、验证service是否关联到Pod
kubectl describe svc front-svc第七题Ingress七层负载
官网参考地址http://kubernetes.io/docs/concepts/services-networking/ingress/#the-ingress-resource
考题如下创建一个nginx Ingress资源满足一下要求 名称ingress-topic-7 名称空间topic-7 使用服务端口 6686在路径 /go 上公开服务 go
解题
1、创建 ingressclass 执行
vim ingressclass.yml
---
apiVersion: networking.k8s.io/v1
kind: IngressClass
metadata:labels:app.kubernetes.io/component: controllername: nginx-examplenamespace: topic-7annotations:ingressclass.kubernetes.io/is-default-class: true
spec:controller: k8s.io/ingress-nginxkubectl apply -f ingressclass.yml 2、创建ingress规则 执行
vim ingress.yml
---
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:name: ingress.yml namespace: topic-7annotations:nginx.ingress.kubernetes.io/rewrite-target: /
spec:ingressClassName: nginx-examplerules:- http:paths:- path: /gopathType: Prefixbackend:service:name: goport:number: 6686第八题DeployMent管理Pod扩容(送分题)
考题将loadbalancer的deployment管理的Pod的副本数扩容成6个
解题
1、修改副本为6
kubectl edit deployment loadbalancer外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传
2、验证副本数
kubectl get deployment loadbalancer第九题Pod指定调度节点
官方参考地址https://kubernetes.io/docs/tasks/configure-pod-container/assign-pods-nodes/
考题创建一个Pod名字为topic-9镜像地址是nginx调度到具有envuat标签的节点上
解题
vim topic-9-pods.yml
---
apiVersion: v1
kind: Pod
metadata:name: topic-9
spec:containers:- name: nginximage: nginxnodeSelector:env: uatkubectl apply -f topic-9-pods.yml 第十题检查可用Node节点数量
考题检查集群中有多少节点为Ready状态不包括被打上 TaintNoSchedule 的节点之后将数量写到/tmp/kube-node.txt文件中。
解题
k8s_ready$(kubectl get node|grep -w Ready|wc -l)
k8s_noschedule$(kubectl describe node|grep -w Taints|grep NoSchedule |wc -l)
k8s_sum$(( ${k8s_ready} - ${k8s_noschedule} ))
echo ${k8s_sum} /tmp/kube-node.txt第十一题Pod封装多容器(送分题)
考题创建一个Pod名字为topic-11这个Pod包含4容器为nginx、redis、memcached、consul
解题
1、创建Pods
cat topic-11-pods.yml
---
apiVersion: v1
kind: Pod
metadata:name: topic-11
spec:containers:- name: nginximage: nginx- name: redisimage: redis- name: memcachedimage: memcached- name: consulimage: consulkubectl apply -f topic-11-pods.yml 2、验证Pods
kubectl get pods topic-11第十二题PersistentVolume持久化存储卷
官方参考地址https://kubernetes.io/docs/tasks/configure-pod-container/configure-persistent-volume-storage/#create-a-persistentvolume
考题创建一个persistentvolume名字为nginx-config大小为1Gi访问权限为ReadWriteMany。Volume的类型为hostPath路径为/tmp/nginx-config
解题
cat pv.yaml
---
apiVersion: v1
kind: PersistentVolume
metadata:name: nginx-config
spec:capacity:storage: 1GiaccessModes:- ReadWriteManyhostPath:path: /tmp/nginx-configkubectl apply -f pv.yaml第十三题PersistentVolumeClaim
官方参考地址https://kubernetes.io/docs/tasks/configure-pod-container/configure-persistent-volume-storage/#%E5%88%9B%E5%BB%BA-persistentvolumeclaim
考题创建一个名字为pvc-volume的pvc指定storageClass为csi-hostpath-sc大小为20Mi
然后创建一个Pod名字为web-server镜像为nginx并且挂载该PVC至/usr/share/nginx/html挂载的权限为ReadWriteOnce。之后通过kubectl edit或者kubectl path将pvc改成70Mi并且记录修改记录。
解题
1、编写PVC资源清单 执行
vim pvc.yaml
---
apiVersion: v1
kind: PersistentVolumeClaim
metadata:name: pvc-volume
spec:accessModes:- ReadWriteOnceresources:requests:storage: 20MistorageClassName: csi-hostpath-sckubectl apply -f pvc.yaml2、创建Pod挂载PV
cat pod-pvc.yaml
---
apiVersion: v1
kind: Pod
metadata:name: web-server
spec:volumes:- name: pvc-volumepersistentVolumeClaim:claimName: pv-volumecontainers:- name: nginximage: nginxvolumeMounts:- mountPath: /usr/share/nginx/htmlname: pvc-volumekubectl apply -f pvc-pods.yaml3、修改PVC容量为70Mi 第十四题Pod日志查看(送分题)
考题监控名为foobar的Pod的日志并过滤出具有unable-access-website 信息的行然后将写入到 /tmp/foobar.txt
解题
kubectl logs foobar|grep unable-access-website /tmp/foobar.txt第十五题Sidecar代理
官方参考地址http://kubernetes.io/docs/concepts/cluster-administration/logging
考题使用busybox Image来将名为sidecar的sidecar容器添加到现有的Pod legacy-app上新的sidecar容器必须运行以下命令
/bin/sh -c tail -n1 -f /var/log/legacy-app.log使用volume挂载/var/log/目录确保sidecar能访问/var/log/legacy-app.log文件
解题
1、基于legacy-appPod添加新的sidecar容器
kubectl get pods legacy-app -o yaml legacy-app.yml
vim legacy-app.yml编辑后需要修改以下几个步骤
第一步添加卷(没有则添加)
第二步添加自带容器的卷挂着配置 第三步添加新的容器 2、删除已存在的Pod执行上面更改完成的配置清单
kubectl delete pod legacy-app --force --grace-period0
kubectl apply -f legacy-app.yml3、验证正常1s会输出一条日志
kubectl logs -f legacy-app -c sidecar第十六题Pod CPU资源使用率
官方参考地址https://kubernetes.io/docs/reference/kubectl/cheatsheet/#%E4%B8%8E%E8%BF%90%E8%A1%8C%E4%B8%AD%E7%9A%84-pods-%E8%BF%9B%E8%A1%8C%E4%BA%A4%E4%BA%92
考题找出标签是namecpu-user的Pod并过滤出使用CPU最高的Pod然后把它的名字写在已经存在的/tmp/cpu.txt文件里
解题
1、查看CPU使用率最高的Pod(namecpu-user)
kubectl top pod -l namecpu-user --sort-bycpu -A2、将查看到Pod名称输出到 /opt/KUTR00401/KUTR00401.txt
echo kube-apiserver-k8s-master-1 /tmp/cpu.txt第十七题K8S集群故障排查(送分题)
考题一个名为k8s-node-1的节点状态为NotReady让其他恢复至正常状态并确认所有的更改开机自动完成。
可以使用以下命令通过ssh连接到wk8s-node-0节点
ssh qinztk8s-node-1可以使用以下命令在该节点上获取更高权限
sudo -i解题
1、进入故障节点
ssh qinztk8s-node-1
sudo -i2、重启kubelet 加入开机自启动
systemctl status kubelet
systemctl restart kubelet
systemctl enable kubelet3、退出到原终端
exit
exit