1.列出pod并排序
1 | # 题目一般都是按名字排序 |
2.找出pod中的错误日志
1 | # 要求是把错误内容输出到某个文件中,可以粘贴,也可以直接重定向文件 |
3.创建一个pod ,并调度到某个节点上
1 | $ cat > pod.yaml << EOF |
4.列出正常节点的个数
1 | $ kubectl get node | grep -w Ready |
5.pod中挂载volume
1 | apiVersion: v1 |
更详细用法参考官方文档:https://kubernetes.io/docs/concepts/storage/volumes/
6.提供一个pod,添加init-container ,在container中添加一个空文件,启动的时候。在另一个containre中检测是否有这个文件,否则退出
1 | apiVersion: v1 |
7.创建pod,再创建一个service
1 | apiVersion: v1 |
8.在一个pod中创建2个容器,如redis+nginx
1 | apiVersion: v1 |
9.找到指定service下的pod中,cpu利用率按高到底排序
1 | $ kubectl top pods --selector="app=demo" | grep -v NAME | sort -k 2 -nr |
10.创建一个简单的daemonset
1 | apiVersion: apps/v1 |
11.deployment的扩容 ,scale命令
1 | $ kubectl scale --replicas=4 deployment demo |
12 创建secret,有一个paasword字段(手动base64加密),创建两个pod引用该secret,一个用env ,一个用volume来调用
1 | $ echo -n 'admin' | base64 |
现在可以像这样写一个 secret
对象:
1 | apiVersion: v1 |
使用 kubectl apply 创建 secret:
1 | $ kubectl apply -f ./secret.yaml |
Pod
中使用 Secret
作为环境变量
的示例:
1 | apiVersion: v1 |
Pod
中使用 volume
挂在 secret
的例子:
1 | apiVersion: v1 |
官方链接:https://kubernetes.io/docs/concepts/configuration/secret/
13.先将nginx:1.9的deployment,升级到nginx:1.11,记录下来(—record),然后回滚到1.9
升级
1 | $ kubectl set image deployments demo demo=nginx:1.11 --record |
回滚
1 | $ kubectl rollout undo deployment demo |
14.使用 nslookup 查看service 和pod的dns
service 和pod 的创建用之前的 yaml
1 | # 查看 dns |
参考文档:https://kubernetes.io/docs/concepts/services-networking/dns-pod-service/
15.etcdctl 来 备份etcd
1 | # 先声明环境变量ETCDCTL_API=3 ,不然etcdctl 是v2版本 |
参考文档地址:https://kubernetes.io/docs/tasks/administer-cluster/configure-upgrade-etcd/
16.static pod 的使用
找到 --pod-manifest-path=/etc/kubelet.d/
配置的位置,然后把 pod 的 yaml 放进去
1 | apiVersion: v1 |
参考文档地址:https://kubernetes.io/docs/tasks/administer-cluster/static-pod/
17.在一个新的namespace创建pod
先创建 ns
1 | # 创建 ns |
再创建 pod
1 | apiVersion: v1 |
18.pv 类型 hostpath 位置在/data,大小为1G, readonly 模式
1 | apiVersion: v1 |
参考文档地址:https://kubernetes.io/docs/concepts/storage/persistent-volumes/
20.给pod创建service
Pod 配置文件
1 | apiVersion: v1 |
service 配置文件,通过 labels app=nginx
关联 pod
1 | apiVersion: v1 |
21.使用node selector,选择disk为ssd的机器调度
1 | apiVersion: v1 |
22.排查apiserver连接不上问题:
下面例举一些可能导致的原因:
- 1、apiserver 有负载均衡,负载均衡服务有问题,或者负载均衡服务连接不上后端apiserver
- 2、TLS证书过期,分两种情况:
- 2.1、整个集群证书过期
- 2.2、ETCD证书和K8S集群证书分开颁发,只有ETCD集群证书过期,或者k8s内部证书过期
- 3、apiserver 服务连接过多,导致连接不上
- 4、k8s集群规则大,导致etcd集群响应慢,apiserver接口服务也受到影响(因为 apiserver 是k8s集群唯一数据查询与写入口)
还有其它原因,本文只例举这些。
23.把一个node弄成unavailable 并且把上边的pod重新调度去新的node上
1 | $ kubectl drain ${node-name} --delete-local-data=true --ignore-daemonsets=true |
真题日期
- 日期:2019年5月
- 版本:k8s 1.13
参考链接
---本文结束感谢您的阅读。微信扫描二维码,关注我的公众号---
本文链接: https://www.yp14.cn/2020/04/12/CKA真题/
版权声明: 本作品采用 知识共享署名-非商业性使用-相同方式共享 4.0 国际许可协议 进行许可。转载请注明出处!