CKA
互联网最全cka真题解析-2022.9.9
目录
[toc]
我的CKA证书
1、CKA真题解析
kubectl自动补全及帮助信息
1、配置kubectl自动补全aptinstallbash-completionsource<(kubectlcompletion bash)2、kubectlexplans帮助信息3、kubectl命令-h帮助信息4、官网https:kubectlconfiguse-contextkubernetes2、配置kubectlcreateclusterroledeployment-clusterrole--verb=create--resource=deployments,daemonsets,statefulsetskubectlcreateserviceaccountcicd-token-napp-team1# 题目中写了“限于 namespace app-team1 中”,则创建 rolebinding。没有写的话,则创建 clusterrolebinding。kubectlcreaterolebindingcicd-token-rolebinding--serviceaccount=app-team1:cicd-token--clusterrole=deployment-clusterrole-napp-team1# rolebinding 后面的名字 cicd-token-rolebinding 随便起的,因为题目中没有要求,如果题目中有要求,就不能随便起了。3、验证#稍微验证下kubectldescriberolebindingcicd-token-rolebinding-napp-team1
注意:我们可以用describle
命令看下刚才新建的rolebinding
来验证下:
- 答题技巧
#说明:解题三步骤:1.创建clusterrole2.创建serviceaccount3.将新的clusterrole绑定到新的serviceaccount:rolebinding1.之前我们是通过yaml文件进行创建的,这次通过命令行进行创建;(直接强制记忆就好;)2.从书签链接可以找到一些命令,但是尽量建议熟悉记忆上面3条命令,直接敲出来即可;(直接搜索`一些命令行工具`关键字即可)此题注意事项:一般来水,如下是对应绑定的:(但是也可以rolebinding和clusterrole对应)role-->rolebinding有ns之说clusterrole-->clusterrolebinding无ns之说serviceaccount有ns之说
第2题 统计使用 CPU 最高的 Pod(强制记忆,送分题
)
考点:kubectl top -l 命令的使用
考题
参考链接
没必要参考网址,使用-h 帮助更方便。
kubectl top pod -h
- 答题技巧
metric-server已经准备好了,我们不用管;
第3题 网络策略(拷贝yaml)📍(注意yaml位置)
(考题知识点:kubernetes安全章节/网络策略)7'
考题
双重否定就是肯定,所以最后两句话的意思就是: 仅允许端口为 8080 的 pod 访问。 仅允许 my-app命名空间中的 pod 访问。
码的,这个翻译起来真的有点别扭。。。。。
参考链接
解答
- 原课件答案
1、切换环境kubectl config use-context hk8s2、配置#如果访问者的 namespace 没有标签 label,则需要手动打一个。如果有一个独特的标签 label,则也可以直接使用。给命名空间打标签:kubectl label namespace big-corp name=big-corp编写一个 yaml 文件vim networkpolicy.yaml#注意 :set paste,防止 yaml 文件空格错序。apiVersion:networking.kubernetes.io/v1kind:NetworkPolicymetadata:name:allow-port-from-namespacenamespace:my-app#被访问者的命名空间spec:podSelector:{}policyTypes:- Ingressingress:- from:- namespaceSelector:matchLabels:name:big-corp#访问者的命名空间的标签ports:- protocol:TCPport:8080#被访问者公开的端口kubectl apply -f networkpolicy.yaml3、验证kubectl get networkpolicy -nmy-app
- 答题技巧
这个题也是争议比较大,这个题目翻译后比较模糊,先按照下面答案来做就行。这个题一直也没变过;直接从官方yaml拷贝过来,删除没用的,修改为题目要求的,就好;
- 官方yaml
apiVersion:networking.kubernetes.io/v1kind:NetworkPolicymetadata:name:test-network-policynamespace:defaultspec:podSelector:matchLabels:role:dbpolicyTypes:- Ingress- Egressingress:- from:- ipBlock:cidr:172.17.0.0/16except:- 172.17.1.0/24- namespaceSelector:matchLabels:project:myproject- podSelector:matchLabels:role:frontendports:- protocol:TCPport:6379egress:- to:- ipBlock:cidr:10.0.0.0/24ports:- protocol:TCPport:5978
删除egress,ingress里的ipBlock,podSelector部分,修改spec.podSelector后面为空。
📍 另一个版本
检查:
第4题 SVC 暴露应用(强制记忆)
考点:将现有的 deploy 暴露成 nodeport 的 service。
考题
参考链接
强制记忆即可。
解答
- 解题
1、切换环境kubectlconfiguse-contextkubernetes2、配置kubectleditdeploymentfront-end…containers:-image:nginximagePullPolicy:Alwaysname:nginxports:-name:http#额额,这里要加一个-横杠的。。。protocol:TCP#protocol不写也是可以的,因为默认就是TCPcontainerPort:80…kubectlexposedeploymentfront-end--port=80--target-port=80--type=NodePort--name=front-end-svc#注意:这里--name(不要忘记了。。。。)svc类型:NodePort/ClusterIP; --port是svc的端口号,--target-port是deployment里pod的容器的端口号#验证:(看下他们的SELECTOR标签是否一致)kubectlgetsvcfront-end-svc-owidekubectlgetdeploymentfront-end-owidecurl节点名/节点ip:NodePortcurlsvcIP:port
- 答题技巧
无链接,理解记忆即可;
📍 另一个版本(知道即可)
第5题 Ingress创建(拷贝yaml)📍(注意yaml位置)
考点:Ingress 的创建
考题
-k:跳过SSL证书检测 -L:跟随跳转,比如网站做了重定向,不加这个选项的话只会看到一个302的访问代码就结束了,加上的话会看到完整的跳转情况
参考链接
yaml路径:
- 答题技巧
1.直接从官方代码复制过来修改下即可;2.如果测试结果没有hello输出,则可以尝试删除annotations字段内容;3.注意,一般自己的学习环境是看不到这个ingress的IP地址的,而考试环境是可以的;
- 官方yaml代码需要修改的地方
注意:ingress资源还要加上一个namesapce的。
apiVersion:networking.k8s.io/v1kind:Ingressmetadata:name:pongnamespace:ing-internalannotations:nginx.ingress.kubernetes.io/rewrite-target:/spec:rules:- http:paths:- path:/hellopathType:Prefixbackend:service:name:helloport:number:5678
📍 另一版本
暂时忽略。。。
第6题 扩容 deployment 副本数量(强制记忆,送分题
)
(考题知识点:kubernetes管理应用声明周期pod)4'
考题
参考链接
没必要参考网址,使用-h 帮助更方便。
kubectl scale deployment -h