2023年7月6日发(作者:)
k8s-cka考试题库本次测试的所有问题都必须在指定的cluster配置环境中完成。为尽量减少切换,系统已对问题进⾏分组,同⼀cluster内的所有问题将连续显⽰。开启TAB补全做题前先配置k8s⾃动补齐功能,否则⽆法TAB补全命令:1. 登陆管理节点2.
kubectl --help | grep bash,此步是为了找关键词completion3.
sudo vim /etc/profile4. 添加source <(kubectl completion bash)5.保存退出,source /etc/profile1.4% k8s- 设置配置环境 kubectl config use-context k8s
Context- 为部署管道创建⼀个新的 ClusterRole 并将其绑定到范围为特定 namespace 的特定 ServiceAccount创建⼀个名字为 deployment-clusterrole 且仅允许创建以下资源类型的新ClusterRole:DeploymentStatefulSetDaemonSet在现有的 namespace app-team1 中创建有个名为 cicd-token 的新 ServiceAccount。限 于 namespace app-team1 , 将 新 的 ClusterRole deployment-clusterrole 绑 定 到 新 的 ServiceAccount cicd-token。解答:l create clusterrole deployment-clusterrole --verb=create --resource=Deployment,StatefulSet,l create serviceaccount cicd-token -n l create rolebinding xxx(随便起名字) --clusterrole=deployment-clusterrole --serviceaccount=cicd-token:app-team1 -n app-team12.4% ek8s- 设置配置环境 kubectl config use-context ek8s
- 将名为 ek8s-node-0 (vms25)的 node 设置为不可⽤,并重新调度该 node 上所有运⾏的 pods
解答:kubectl drain --ignore-daemonsets3.7% mk8s- 设置配置环境 kubectl config use-context mk8s
- 现有的 kubernetes 集群正在运⾏的版本是 1.21.0。仅将主节点上的所有 kubernetes 控制平⾯ 和节点组件升级到版本 1.21.1。- 另外,在主节点上升级 kubelet 和 kubectl。
[start-plane type="4"]确保在升级前 drain 主节点,并在升级后 uncordon 主节点。请不要升级⼯作节点,etcd,container管理器,CNI 插件,DNS服务或任何其他插件。[/start-plane]--etcd-upgrade=false
kubeadm upgrade apply 1.21.1 --etcd-upgrade=false
解答:1.登陆官⽹,可以右上⾓更换语⾔,点击Learn Kubernetes Basics2.搜索upgrade3.开始升级,步骤官⽅⽂档中都有步骤,步骤如下:kubectl config use-context mk8skubectl get nodesssh vms28(28为mk8s的控制平⾯节点)sudo su - (需⽤root⽤户执⾏下⽅命令)apt-get update && apt-get install -y --allow-change-held-packages kubeadm=1.21.1-00 (安装kubeadm包)kubeadm upgrade apply v1.21.1 –etcd-upgrade=false(题中提⽰etcd不被升级,所以加后⾯的参数)kubectl drain --ignore-daemonsets (升级kubelet和kubectl前腾空节点,官⽅⽂档中流程都有,看着修改就好)apt-get update && apt-get install -y --allow-change-held-packages kubelet=1.21.1-00 kubectl=1.21.1-00(安装kubelet和kubectl包)systemctl daemon-reloadsystemctl restart kubeletkubectl uncordon 4.7%此项⽬⽆需更改配置环境⾸ 先 为 运 ⾏ 在 127.0.0.1:2379 上 的 现 有 etcd 实 例 创 建 快 照 并 将 快 照 保 存 到 /srv/data/。为给定实例创建快照预计能在⼏秒钟内完成。如果该操作似乎挂起,则命令可能有问题。⽤ ctrl+c 来取消操作,然后重试。然后还原位于/srv/data/ 的现有先前快照.提供了⼀下 TLS 证书和密钥,以通过 etcdctl 连接到服务器。 CA 证书:/opt/KUIN00601/ 客户端证书: /opt/KUIN00601/ 客户端密钥:/opt/KUIN00601/解答:使⽤root账户操作etcdctl –help 查看是否有snapshot命令,有是版本3⽆为版本2若是2.则⼿动导⼊3export ETCDCTL_API=3不知道命令怎么写可以etcdctl snapshot save --help主要三个参数为:-–cacert,–cert,–key1.保存etcd实例快照:考试环境:#etcdctl snapshot save -–cacert=”/opt/KUIN00601/” --cert=” /opt/KUIN00601/” --key=”/opt/KUIN00601/” -- /srv/data/练习环境:#etcdctl snapshot save /srv/data/2.还原快照考试环境:#etcdctl snapshot restore –cacert=”/opt/KUIN00601/” --cert=” /opt/KUIN00601/” --key=”/opt/KUIN00601/” /srv/data/练习环境:#etcdctl snapshot restore /srv/data/5.7% k8s设置配置环境 kubectl config use-context k8s在 internal 命名空间创建⼀个名为 allow-port-from-namespace 的确保新的 NetworkPolicy 允 许 namespace internal 中的Pods 来连接到 namespace big-corp 中的端⼝ 9200。确保新的 NetworkPolicy:不允许对没有在监听端⼝ 9200 的 pods 访问不允许不来⾃ namespace internal 的 pods 的访问解答:1.先创建题中的命名空间(Namespace)kubectl configuse-context k8skubectl get namespacekubectl create namespace internalkubectl create namespace big-corpkubectl label namespace big-corp name=big-corp2.打开官⽹,搜索ingress或egress或networkpolicy,然后第⼀个⽹络策略3.复制上⽅yaml代码,新建yaml⽂件,例如,名字随意起4.将复制的代码按照题意改为下图所⽰:kubectl apply -f bectl get -n internal6.7% k8s√设置配置环境 kubectl config use-context k8s请重新配置现有的部署 front-end 以及添加名为 http 的端⼝规范来公开现有容器 nginx 的端 ⼝ 80/tcp。创建⼀个名为 front-end-svc 的新服务,以公开容器端⼝ http。 配置此服务,以通过在排定的节点上的 NodePort 来公开各个pods。解答:kubectl config use-context k8skubectl get bectl edit front-end (edit编辑时只能使⽤空格,不要TAB否则保存不了)ports:- name: http containePort: 80 protocol: TCP创建front-end-svc服务:kubectl expose –-name=front-end-svc deployment front-end -–port=80 –-target-port=80 –-type=NodePort7.7% k8s√设置配置环境 kubectl config use-context k8s如下创建⼀个新的 nginx ingress 资源:名称:pongnamespace: ing-internal使⽤服务端⼝ 5678 在路径/hello 上公开服务 hello可以使⽤⼀下命令检查服务 hello 的可⽤性,该命令返回 hello: curl -kL < INTERNAL_IP>/hello/解答:l config use-context k8s2.打开官⽅⽂档,搜索ingress,选择第⼀个结果即可,进⼊后复制yaml模板并新建⼀个yaml⽂件 l apply -f l get ing -n ing-internal
8.4% k8s√设置配置环境 kubectl config use-context k8s将 deployment 从 webserver 扩展⾄ 6pods解答:kubectl config use-context k8skubectl get deploykubectl scale deployment webserver –-replicas=6kubectl get deploy9.4% k8s√设置配置环境 kubectl config use-context k8s按如下要求调度⼀个 pod:名称:nginx-kusc00401image: nginxNode selector: disk=ssd解答:kubectl run nginx-kusc00401 --image=nginx --image-pull-policy=IfNotPresent --dry-run=client -o yaml > 加⼊如下标红代码kubectl apply -f bectl get pods10.4% k8s√设置配置环境 kubectl config use-context k8s检查有多少个 worker nodes 已准备就绪(不包括被打上 Taint: NoSchedule 的节点),并将数 量写⼊/opt/KUSC00402/解答:Kubectl get nodes查看节点是否有污点kubectl describe nodes []() | grep Taintkubectl describe nodes []() | grep Taintecho 1 > /opt/KUSC00402/11.4% k8s√设置配置环境 kubectl config use-context k8s创建⼀个名字为kucc4的pod,在pod⾥⾯分别为以下每个images单独运⾏⼀个app container (可能会有 1-4 个 images):nginx+redis+memcached+consul解答:kubectl run kucc4 1–image=nginx –1image-pull-policy=IfNotPresent –1dry-run=client -o yaml > m (将图中标红项复制3次并修改pod名字即可)kubectl apply -f bectl get pod12.4% k8s√设置配置环境 kubectl config use-context k8s创建名为 app-data 的 persistent volume,容量为 1Gi,访问模式为 ReadWriteMany。volume 类型为 hostPath,位于/srv/app-data解答:1.官⽅⽂档中搜索persistent volume,第⼀个案例即可 ,按照题意修改l apply -f l get pv13.7% k8s√设置配置环境 kubectl config use-context k8s创建⼀个新的 PersistentVolumeClaim:名称:pvvolumeclass:csi-hostpath-sc容量:10Mi创建⼀个新的 pod,此 pod 将作为 volume 挂载到PersistentVolumeClaim:名称:web-serverimage: nginx挂载路径: /usr/share/nginx/html配置新的 pod,以对 volume 具有 ReadWriteOnce 权限。最后,使⽤ kubectl edit 或者 kubectl patch 将 PersistentVolumeClaim 的容量扩展为 70Mi,并 记录此次更改。解答:kubectl config use-context k8s继续在上题中的官⽅⽂档中找到下⽅案例:vim ,讲案例复制,注意更改标红项,其他项删除(此步⽬的:创建新的 PersistentVolumeClaim)kubectl apply -f 继续在上题的官⽅⽂档中下滑找到下⽅案例:vim ,将案例复制(此步⽬的:创建⼀个新的 pod,此 pod并挂载到PersistentVolumeClaim)kubectl apply -f bectl edit pvc pvvolume –-record,将10Mi改为70Mi(–record⽬的为记录此次更改,不加–record的话第三⼩题没有分数)14.5% k8s √设置配置环境 kubectl config use-context k8s监控 pod foo 的⽇志并:提取与错误 unable-to-access-website 相对应的⽇志⾏将这些⽇志⾏写⼊到/opt/KUTR00101/foo解答:$ kubectl config use-context k8s$ kubectl logs foo | grpe unable-to-access-website > /opt/KUTR00101/foo15.7% k8s设置配置环境 kubectl config use-context k8s在不更改其现有容器的情况下,需要将⼀个现有的 pod 集成到 kubernetes 的内置⽇志记录 体系结构中(例如 kubectl logs)。添加 streamimg sidecar 容器是实现此要求的⼀种好⽅法。将⼀个 busybox sidecar 容器添加到现有的 pod legacy-app。新的 sidecar 容器必须运⾏⼀下命令:/bin/sh -c tail -n+1 -f /var/log/使⽤名为 logs 的 volume mount 来让⽂件/var/log/ 可⽤于 sidecar 容器。不要更改现有容器。不要修改⽇志⽂件的路径,两个容器必须通过/var/log/ 来访问该⽂件解答:kubectl config use-context k8skubectl get pod legacy-app -o yaml > m 1.添加pod及vomuleMount挂载点2.添加volumes3.修改挂载⽬录及名称l apply -f 5.删除legacy-app,否则再运⾏yaml时会提⽰legacy-app已存在kubectl delete pod legacy-app -–force16.5% k8s√设置配置环境 kubectl config use-context k8s通过 pod label name=cpu-user,找到运⾏时占⽤⼤量 CPU 的 pod,并将占⽤ CPU 最⾼的 pod 名称写⼊到⽂件/opt/KUTR000401/(已存在)解答:kubectl top pods -l name=cpu-userecho “占⽐最⾼的机器名” > /opt/KUTR000401/17.13% ek8s设置配置环境 kubectl config use-context ek8s名为wk8s-node-0(练习环境使⽤ )的 kubernetes worker node 处于 Not Ready状态。调查发⽣这种情况的原因,并采取相应措施将 node 恢复为Ready状态,确保所做的任何更改永久⽣效。可使⽤以下命令通过ssh连接到故障node:ssh wk8s-node-0 ()可使⽤以下命令在该node上获取更⾼权限:sudo -i解答:kubectl get nodesssh -isystemctl start kubelet ; systemctl enable kubectlExit退出$kubectl get nodes
发布者:admin,转转请注明出处:http://www.yc00.com/xiaochengxu/1688594524a153215.html
评论列表(0条)