当前位置: 首页 > news >正文

帝国cms门户网站模板今天发生了什么重大新闻

帝国cms门户网站模板,今天发生了什么重大新闻,网站制作在哪里的,网站分哪几种2023年CKA考试真题及注意事项 注意事项考试题目原题解析1.RBAC2.节点维护3.K8S组件升级 1.28.0升级到1.28.14.Etcd备份与恢复5.NetworkPolicy6.Service7.Ingress8.指定节点部署9.检查Node节点健康状态10.一个Pod多个容器11.监控Pod度量指标12.监控Pod日志13.PersistentVolumeCl… 2023年CKA考试真题及注意事项 注意事项考试题目原题解析1.RBAC2.节点维护3.K8S组件升级 1.28.0升级到1.28.14.Etcd备份与恢复5.NetworkPolicy6.Service7.Ingress8.指定节点部署9.检查Node节点健康状态10.一个Pod多个容器11.监控Pod度量指标12.监控Pod日志13.PersistentVolumeClaim14.Sidecar15.集群故障排查——kubelet故障 注意事项 1.黑色星期五或Cyber Monday时购买考试是全年价格最低的时候推荐预算充足的同学购买CKACKS性价比最高相关课程不推荐买video和课件都是纯英语对英语一般的人不够友好买后用处不大。 2.规定的是考试购买后1个月内需要兑换考试券我超过1个月后兑换的虽然也成功了但不建议卡时间。 3.考试时间的选择最好选择凌晨和清晨比如早上6点左右亲测网络不会卡顿。本人亲测在凌晨5-7点网络不卡。 4.浏览器和PSI插件按照指南说明准备考前最好多测试多运行几次确保系统环境一定没问题比如我考时windows系统不能用win10企业版所以需要重装系统或换个电脑。 5.关于网络不建议在办公室等有公司防火墙的WiFi环境考试很可能会看不到题目可以选择在家或酒店或者自己手机开热点这些方式。 考试题目 原题解析 1.RBAC 中文解释 创建一个名为deployment-clusterrole的clusterrole该clusterrole只允许创建Deployment、Daemonset、Statefulset的create操作 在名字为app-team1的namespace下创建一个名为cicd-token的serviceAccount并且将上一步创建clusterrole的权限绑定到该serviceAccount 参考 https://kubernetes.io/zh/docs/reference/access-authn-authz/rbac/ https://kubernetes.io/zh-cn/docs/tasks/configure-pod-container/configure-service-account/解题 # 创建clusterrole kubectl create clusterrole deployment-clusterrole --verbcreate --resourcedeployments,statefulsets,daemonsets# 或者 [rootk8s-master01 ~]# cat dp-clusterrole.yaml apiVersion: rbac.authorization.k8s.io/v1 kind: ClusterRole metadata:name: deployment-clusterrole rules: - apiGroups: [extensions, apps]resources: [deployments,statefulsets,daemonsets]verbs: [create] [rootk8s-master01 ~]# kubectl create -f dp-clusterrole.yaml clusterrole.rbac.authorization.k8s.io/deployment-clusterrole created# 创建serviceAccount kubectl create sa cicd-token -n app-team1 serviceaccount/cicd-token created# 绑定权限推荐节省时间 kubectl create rolebinding deployment-rolebinding --clusterroledeployment-clusterrole --serviceaccountapp-team1:cicd-token -n app-team1或者 apiVersion: rbac.authorization.k8s.io/v1 kind: RoleBinding metadata:name: deployment-rolebindingnamespace: app-team1 roleRef:apiGroup: rbac.authorization.k8s.iokind: ClusterRolename: deployment-clusterrole subjects: - kind: ServiceAccountname: cicd-tokennamespace: app-team1# 验证 [rootk8smaster /opt/cka]# kubectl auth can-i create deployment --as system:serviceaccount:app-team1:cicd-token -n app-team1 yes [rootk8smaster /opt/cka]# kubectl auth can-i create daemonset --as system:serviceaccount:app-team1:cicd-token -n app-team1 yes [rootk8smaster /opt/cka]# kubectl auth can-i create statefulset --as system:serviceaccount:app-team1:cicd-token -n app-team1 yes [rootk8smaster /opt/cka]# kubectl auth can-i create pod --as system:serviceaccount:app-team1:cicd-token -n app-team1 no 2.节点维护 中文解释 将ek8s-node-1节点设置为不可用然后重新调度该节点上的所有Pod 参考 https://kubernetes.io/zh/docs/tasks/configure-pod-container/ https://kubernetes.io/zh-cn/docs/tasks/administer-cluster/kubeadm/kubeadm-upgrade/ https://kubernetes.io/docs/reference/generated/kubectl/kubectl-commands#drain解题 kubectl config use-context ek8s kubectl cordon ek8s-node-1 # 测试执行 kubectl drain ek8s-node-1 --delete-emptydir-data --ignore-daemonsets --force --dry-runserver # 腾空节点 kubectl drain ek8s-node-1 --delete-emptydir-data --ignore-daemonsets --force3.K8S组件升级 1.28.0升级到1.28.1 参考 https://kubernetes.io/zh/docs/tasks/administer-cluster/kubeadm/kubeadm-upgrade/解题 首先腾空节点 # 设置为维护状态 kubectl cordon k8s-master # 驱逐Pod kubectl drain k8s-master --delete-emptydir-data --ignore-daemonsets --force # 之后需要按照题目提示ssh到一个master节点 apt update apt-cache policy kubeadm | grep 1.28.1 # 注意版本的差异有可能并非1.20.1升级到1.28.1 apt-get install kubeadm1.28.1-00 # 验证升级计划 kubeadm upgrade plan # 看到如下信息可升级到指定版本# 开始升级Master节点注意看题需不需要升级etcd kubeadm upgrade apply v1.28.1 --etcd-upgradefalse -f# 升级kubectl和kubelet apt-get install -y kubelet1.28.1-00 kubectl1.28.1-00 systemctl daemon-reload systemctl restart kubelet # 恢复master可调度 kubectl uncordon k8s-master node/k8s-master uncordonedkubectl get node NAME STATUS ROLES AGE VERSION k8s-master01 Ready control-plane,master 11d v1.28.1 k8s-node01 Ready none 8d v1.28.0 k8s-node02 Ready none 11d v1.28.04.Etcd备份与恢复 中文解释 针对etcd实例https://127.0.0.1:2379创建一个快照保存到 /srv/data/etcd-snapshot.db。在创建快照的过程中如果卡住了就键入ctrlc终止然后重试。 然后恢复一个已经存在的快照/var/lib/backup/etcd-snapshot-previous.db 执行etcdctl命令的证书存放在 ca证书/opt/KUIN00601/ca.crt 客户端证书/opt/KUIN00601/etcd-client.crt 客户端密钥/opt/KUIN00601/etcd-client.key 参考 https://kubernetes.io/zh/docs/tasks/administer-cluster/configure-upgrade-etcd/解题 kubernetes的所有数据记录在etcd中对etcd进行备份就是对集群进行备份。连接etcd需要证书证书可以从apiserver获取因为apiserver可以去连etcd。新版本的apiserver都是以static pod方式运行证书通过volume挂载到pod中。 具体的证书路径和备份到的路径按题目要求设置。ssh到master节点很快长时间没连上可以中断重连。 恢复部分据说很容易卡住不要花太多时间。# 路径不存在的话要提前建出来 export ETCDCTL_API3 etcdctl --endpointshttps://127.0.0.1:2379 --cacert/opt/KUIN000601/ca.crt --cert/opt/KUIN000601/etcd-client.crt --key/opt/KUIN000601/etcd-client.key snapshot save /srv/data/etcd-snapshot.db# 还原 还原前最好关掉etcd服务还原后重新开启etcd服务 还原后etcd的状态可能有问题最好不要去赌失分可能性很大。 systemctl stop etcdmkdir /opt/backup/ -p cd /etc/kubernetes/manifests mv kube-* /opt/backupexport ETCDCTL_API3 etcdctl --endpointshttps://127.0.0.1:2379 --cacert/opt/KUIN000601/ca.crt --cert/opt/KUIN000601/etcd-client.crt --key/opt/KUIN000601/etcd-client.key snapshot restore /var/lib/backup/etcd-snapshot-previous.db --data-dir/var/lib/etcd-restorevim /etc/kubernetes/manifests/etcd.yaml # 将volume配置的path: /var/lib/etcd改成/var/lib/etcd-restorevolumes:- hostPath:path: /etc/kubernetes/pki/etcdtype: DirectoryOrCreatename: etcd-certs- hostPath:path: /var/lib/etcd-restore# 修改数据目录权限 chown -R etcd.etcd /var/lib/etcd-restore# 还原k8s组件 mv /opt/backup/* /etc/kubernetes/manifests systemctl restart kubeletsystemctl start etcd# 其他答案 # 不需要进行集群的切换etcdctl 工具主机上已存在无需进行安装 ETCDCTL_API3 etcdctl --endpointshttps://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_API3 etcdctl --endpointshttps://127.0.0.1:2379 --cacert/opt/KUIN00601/ca.crt --cert/opt/KUIN00601/etcd-client.crt --key/opt/KUIN00601/etcd-client.key snapshot restore /var/lib/backup/etcd-snapshot-previous.db 注意 如果是二进制安装的etcd考试环境的etcd可能并非root用户启动的所以可以先切换到root用户sudo su - 然后使用ps aux | grep etcd查看启动用户是谁和启动的配置文件是谁config-file字段指定假设用户是etcd。所以如果是二进制安装的etcd执行恢复时需要root权限所以在恢复数据时可以使用root用户恢复之后更改恢复目录的权限sudo chown -R etcd.etcd /var/lib/etcd-restore 然后通过systemctl status etcd或者ps aux | grep etcd找到它的配置文件 如果没有配置文件就可以直接在etcd的service 通过systemctl status etcd即可看到文件中找到data-dir的配置然后更改data-dir配置后执行systemctl daemon-reload最后使用etcd用户systemctl restart etcd即可。 5.NetworkPolicy 中文解释 创建一个名字为allow-port-from-namespace的NetworkPolicy这个NetworkPolicy允许internal命名空间下的Pod访问该命名空间下的9000端口。 并且不允许不是internal命令空间的下的Pod访问 不允许访问没有监听9000端口的Pod。 参考 https://kubernetes.io/zh/docs/concepts/services-networking/network-policies/解题 apiVersion: networking.k8s.io/v1 kind: NetworkPolicy metadata:name: allow-port-from-namespacenamespace: internal spec:ingress:- from:- podSelector: {}ports:- port: 9000protocol: TCPpodSelector: {}policyTypes:- Ingress6.Service 中文解释 重新配置一个已经存在的deployment front-end在名字为nginx的容器里面添加一个端口配置名字为http暴露端口号为80/TCP然后创建一个service名字为front-end-svc暴露该deployment的http端口并且service的类型为NodePort。 解题 kubectl edit deploy front-endspec:containers:- name: nginximage: nginx# 需要加这四行ports:- name: httpcontainerPort: 80protocol: TCP# 或者命令行添加service kubectl expose deploy front-end --namefront-end-svc --port80 --target-porthttp --typeNodePort# 或者通过文件方式创建service apiVersion: v1 kind: Service metadata:name: front-end-svclabels:app: front-end spec:type: NodePortselector:app: front-end # label需要匹配否则访问不到。ports:- name: httpprotocol: TCPport: 80targetPort: 80 7.Ingress 中文解释 在ing-internal 命名空间下创建一个ingress名字为pong代理的service hi端口为5678配置路径/hi。 验证访问curl -kL INTERNAL_IP/hi会返回hi。 解题 # ingressClassName需指定为nginx apiVersion: networking.k8s.io/v1 kind: Ingress metadata:name: pongnamespace: ing-internal spec:ingressClassName: nginxrules:- http:paths:- path: /hipathType: Prefixbackend:service:name: hiport:number: 5678kubectl get ingress -n ing-internal 获取ip后curl验证# 如果考试环境没出ip需要在annotations下加一行 cat ingress.yaml apiVersion: networking.k8s.io/v1 kind: Ingress metadata:name: pongnamespace: ing-internalannotations:nginx.ingress.kubernetes.ionginx.ingress.kubernetes.io/rewrite-target: / spec:rules:- http:paths:- path: /hipathType: Prefixbackend:service:name: hiport:number: 5678ingressclassname如果不指定则会使用集群默认的指定的ingress。 Deployment扩缩容(4分 解题 kubectl config use-context k8s kubectl scale --replicas6 deployment loadbalancer kubectl edit deploy loadbalancer8.指定节点部署 解题 vim pod-ns.yaml apiVersion: v1 kind: Pod metadata:name: nginx-kusc00401labels:role: nginx-kusc00401 spec:nodeSelector:disk: spinningcontainers:- name: nginximage: nginxkubectl create -f pod-ns.yaml# 省时 kubectl run nginx-kusc00401 --imagenginx --dry-runclient -o yaml 9.yaml9.检查Node节点健康状态 解题; kubectl config use-context k8s # 记录总数为A kubectl get node|grep -i ready|wc -l # 记录总数为B kubectl describe node|grep Taints|grep NoSchedule|wc -l # 将A减B的值x导入到/opt/KUSC00402/kusc00402.txt echo x /opt/KUSC00402/kusc00402.txt# 切换到指定集群 kubectl config use-context [NAME] # Ready 状态的节点数减去 NoSchedule 状态的节点数 kubectl get node |grep -i ready kubectl describe node |grep -i taints echo 2 /opt/KUSC00402/kusc00402.txt10.一个Pod多个容器 中文解释 创建一个Pod名字为kucc1这个Pod可能包含1-4容器该题为四个nginxredismemcachedconsul 解题 apiVersion: v1 kind: Pod metadata:name: kucc1 spec:containers:- image: nginxname: nginx- image: redisname: redis- image: memchachedname: memcached- image: consulname: consul# 或者用dry-runclient的命令快速生成yaml模板修改yaml加入新容器进去 kubectl run kucc1 --imagenginx --dry-runclient -o yaml 11.yaml apiVersion: v1 kind: Pod metadata:labels:run: kucc1name: kucc1 spec:containers:- image: nginxname: nginx- image: redisname: redis- image: memcachedname: memcached- image: consulname: consuldnsPolicy: ClusterFirstrestartPolicy: AlwaysPersistentVolume(4分 中文解释 创建一个pv名字为app-config大小为2Gi访问权限为ReadWriteMany。Volume的类型为hostPath路径为/srv/app-config apiVersion: v1 kind: PersistentVolume metadata:name: app-configlabels:type: local spec:storageClassName: manual # 需要有这一项吗题目没有要求可以不写volumeMode: Filesystemcapacity:storage: 2GiaccessModes:- ReadWriteManyhostPath:path: /srv/app-configkubectl get pv app-config11.监控Pod度量指标 中文解释 找出具有namecpu-user的Pod并过滤出使用CPU最高的Pod然后把它的名字写在已经存在的 /opt/KUTR00401/KUTR00401.txt文件里注意他没有说指定namespace。所以需要使用-A指定所以namespace 解题 kubectl config use-context k8s kubectl top pod -A -l namecpu-user NAMESPACE NAME CPU(cores) MEMORY(bytes) kube-system coredns-54d67798b7-hl8xc 7m 8Mi kube-system coredns-54d67798b7-m4m2q 6m 8Mi# 注意这里的pod名字以实际名字为准按照CPU那一列进行选择一个最大的Pod另外如果CPU的数值是1 2 3这样的。是大于带m这样的因为1颗CPU等于1000m 注意要用而不是 echo coredns-54d67798b7-hl8xc /opt/KUTR00401/KUTR00401.txt# 其他解法 kubectl get pods -A --show-labels kubectl top pods -A -l namecpu-user --sort-bycpu echo [podname] /opt/KUTR00401/KUTR00401.txt 12.监控Pod日志 中文解释 监控名为foobar的Pod的日志并过滤出具有unable-access-website信息的行然后将写入到 /opt/KUTR00101/foobar 解题 kubectl config use-context k8s kubectl logs foobar|grep unable-access-website /opt/KUTR00101/foobar13.PersistentVolumeClaim 中文翻译 创建一个名字为pv-volume的pvc指定storageClass为csi-hostpath-sc大小为10Mi 然后创建一个Pod名字为web-server镜像为nginx并且挂载该PVC至/usr/share/nginx/html挂载的权限为ReadWriteOnce。之后通过 kubectl edit或者 kubectl path将pvc改成70Mi并且记录修改记录。 解题 # 创建PVC apiVersion: v1 kind: PersistentVolumeClaim metadata:name: pv-volume spec:accessModes:- ReadWriteOncevolumeMode: Filesystemresources:requests:storage: 10MistorageClassName: csi-hostpath-sc# 创建Pod apiVersion: v1 kind: Pod metadata:name: web-server spec:containers:- name: nginximage: nginxvolumeMounts:- mountPath: /usr/share/nginx/htmlname: pv-volume # 名字不是必须和pvc一直也可以为my-volumevolumes:- name: pv-volume # 名字不是必须和pvc一直也可以为my-volumepersistentVolumeClaim:claimName: pv-volume# 扩容 # 方式一patch命令 kubectl patch pvc pv-volume -p {spec:{resources:{requests:{storage: 70Mi}}}} --record# 方式二edit kubectl edit pvc pv-volume # 记录修改记录需要加--record参数或--save-config kubectl edit pvc pv-volume --record kubectl edit pvc pv-volume --save-config 将两处10Mi都改为70Mi如果是nfs会因为不支持动态扩容而失败。 edit完需要稍等一会儿容量才会变为70Mi14.Sidecar 添加一个名为busybox且镜像为busybox的sidecar到一个已经存在的名为legacy-app的Pod上这个sidecar的启动命令为 /bin/sh, -c, ‘tail -n1 -f /var/log/legacy-app.log’。 并且这个sidecar和原有的镜像挂载一个名为logs的volume挂载的目录为/var/log/。 解题 kubectl get pod legacy-app -o yaml c-sidecar.yaml apiVersion: v1 kind: Pod metadata:name: legacy-app spec:containers:- name: countimage: busyboxargs:- /bin/sh- -c- i0;while true;doecho $(date) INFO $i /var/log/legacy-ap.log;i$((i1));sleep 1;done # 在此yaml中添加sidecar和volume vim c-sidecar.yaml apiVersion: v1 kind: Pod metadata:name: legacy-app spec:containers:- name: countimage: busyboxargs:- /bin/sh- -c- i0;while true;doecho $(date) INFO $i /var/log/legacy-ap.log;i$((i1));sleep 1;done # 加上下面部分volumeMounts:- name: logsmountPath: /var/log- name: busyboximage: busyboxargs: [/bin/sh, -c, tail -n1 -f /var/log/legacy-ap.log]volumeMounts:- name: logsmountPath: /var/logvolumes:- name: logsemptyDir: {}kubectl delete -f c-sidecar.yaml kubectl create -f c-sidecar.yaml# 检查 [rootk8smaster /opt/cka]# kubectl logs legacy-app -c busybox 15.集群故障排查——kubelet故障 中文解释 一个名为wk8s-node-0的节点状态为NotReady让其他恢复至正常状态并确认所有的更改开机自动完成 解题 # 检查wk8s-node-0 kubelet服务状态 ssh wk8s-node-0 sudo su - systemctl status kubelet systemctl start kubelet systemctl enable kubelet其实这题没这么简单一般启动kubelet后大概率是启动失败的 可能的原因 1.kubelet二进制文件路径不对which kubelet后和服务启动文件kubelet systemd service做个对比看是否是这个原因 2.service文件路径和它启动的路径不一致在启动目录下找不到service文件可以全局搜下并做个软链接。 3.其他原因。# 再次检查wk8s-node-0是否在ready ssh master01 kubectl get nodes
http://www.hkea.cn/news/14567035/

相关文章:

  • 易读网站建设wordpress 转 jpress
  • 找建站公司营销型企业网站建设价格
  • 个人 网站备案 幕布周村家具行业网站建设
  • 网站建设调查内容有哪些经济师考试时间2023报名时间
  • 目前做网站需要什么cms什么网站做任务可以赚钱
  • 青岛做网站的公司有哪些长春公司建站模板
  • 网站开发和竞价wordpress 标签云集
  • 沧州网站建设优化案例wordpress 好看主题
  • 鄂州网站建设网络公司购物网站开发背景
  • 网站设计规划范文上海服务政策调整
  • 企业网站建设软件需求分析滁州做网站hi444
  • 公司网站建设价格贵吗网站建设mysql数据库
  • 烟台网站开发如何用ae做模板下载网站
  • php网站开发参考书籍成立公司的流程和要求及费用
  • 网站建设概算海南百度推广公司
  • 做的好的家装网站中企动力重庆分公司怎么样
  • 海东营销网站建设公司私人定制网站建设
  • 广州网站建设 讯度网络江苏建设人才网网站
  • 网站建设的公司这个域名网查询
  • php网站管理系统上海网站建设哪
  • 网站备案费用批量外链工具
  • 网站 微信公众号 建设方案小广告内容
  • 重庆市建设工程安全网站网站建设与网页设计从入门到精通 pdf
  • 网站建设四端一体天猫网站是怎么做seo优化的
  • 网站内怎么做搜索中国最早做网站是谁
  • php禁止ip访问网站媒体网站推广法
  • 企业怎么建设自己的网站play字体WordPress
  • 做培训的网站网站营销公司哪家好
  • 什么网站可以做模型挣钱工会网站建设策划书
  • 石家庄企业做网站注册一个设计公司需要多少钱