【k8s系列】(202212) cka考试必备命令大全及注意事项

必备命令

主机层面

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
# bash completion
apt install bash-completion
source <(kubectl completion bash)


# vim ~/.bahsrc
alias k=kubectl
alias kgn="kubectl get node -owide"
alias kgp="kubectl get pod -owide"
alias kgs="kubectl get svc -owide"
alias kg="kubectl get -owide "
alias kd="kubectl delete "
alias kaf="kubectl apply -f "
alias kdf="kubectl delete -f "
# source ~/.bahsrc

k8s命令

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106

# 清空某一个节点上的pod
kubectl cordon xxx
kubectl drain xxx --ignore-daemonsets
kubectl drain xxx --ignore-daemonsets --delete-emptydir-data --force # 报错的话可以加上


# kubeadm升级master节点
## 01.清空升级的节点
kubectl cordon xxx
kubectl drain xxx --ignore-daemonsets
## 02.升级主机安装包
apt-get upgrade
## 03.升级k8s相关组件
apt-mark unhold kubeadm kubelet kubectl
apt-get install -y kubeadm=1.22.4-00 kubelet=1.22.4-00 kubectl=1.22.4-00
apt-mark hold kubeadm kubelet kubectl
## 04.升级集群
kubeadm upgrade plan
kubeadm upgrade apply v1.22.4 --etcd-upgrade=false
## 05.重启kubelet
systemctl daemon-reload
systemctl restart kubelet
## 06.取消节点的不可调度
kubectl uncordon xxx
## 07.查看节点状态以及版本
kubectl get node


# etcd备份还原
## 01.备份
ETCDCTL_API=3 etcdctl --endpoints=https://127.0.0.1:2379 --cacert=xxx --cert=xxx --key=xxx snapshot save xxx.db
## 02.移除etcd和api
mv /etc/kubernetes/manifests /etc/kubernetes/manifests.bak
## 03.备份原来etcd文件夹
mv /var/lib/etcd /var/lib/etcd.bak
## 04.etcd还原
ETCDCTL_API=3 etcdctl --endpoints=https://127.0.0.1:2379 --cacert=xxx --cert=xxx --key=xxx snapshot restore xxx.db --data-dir=/var/lib/etcd
## 05.移回静态pod
mv /etc/kubernetes/manifests.bak /etc/kubernetes/manifests
## 06.验证集群资源状态
kubectl get node
kubectl get pod -A


kubectl label ns my-app name=my-app
kubetcl get ns --show-labels

# svc
apiVersion:
kind: Deployment
metadata:
name:
spec:
template:
spec:
containers:
- image: xxx
name: nginx
ports:
- name: http
containerPort: 80
protocol: TCP
kubectl expose deployment xxx -n xxx --name xxx --port xxx --target-port xxx --type=ClusterIP/NodePort/LoadBalancer


kubectl get deployment -owide #找到SELECTOR下面的内容(app=nginx)
kubectl get pod -l app=nginx

kubectl scale deployment xxx --replicas=3


# 创建一个pod,镜像nginx,调度pod到disk=ssd的节点
## 01.使用命令创建一个pod的模板,比从官网找快很多
kubectl run pod-test --image=nginx --dry-run=client -oyaml > 11.yaml
## 02.更改pod的模板
apiVersion: v1
kind: Pod
metadata:
name: pod-test
spec:
containers:
- image: nginx
name: pod-test
nodeSelector:
disk: ssd


# 记录pvc的更改
kubectl edit pvc xxx --record
kubectl edit pvc xxx --save-config


# 统计ready的node数量
kubectl describe node
grep -i # 忽略大小写
grep -v # 排除在外
grep -c # 统计查出来的条数


# 查看cpu使用率最高的pod
kubectl top pod -A -l name=cpu-loader --sort-by="cpu"


# 强制删除pod(补充)
kubectl delete pod xxx -n xxx --grace-period=0 --force

命令详细输出

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
# kubectl run pod-test --image=nginx --dry-run=client -oyaml
apiVersion: v1
kind: Pod
metadata:
creationTimestamp: null
labels:
run: pod-test
name: pod-test
spec:
containers:
- image: nginx
name: pod-test
resources: {}
dnsPolicy: ClusterFirst
restartPolicy: Always
status: {}

题目分值占比

第1题 RBAC授权(4%)
第2题 节点设置不可用(4%)
第3题 升级k8s版本(7%)
第4题 etcd备份与恢复(7%)
第5题 网络策略(7%)
第6题 svc暴露应用(7%)
第7题 ingress(7%)
第8题 扩容pod数量(4%)
第9题 nodeSelector(4%)
第10题 统计准备就绪节点数量(4%)
第11题 Pod 配置多容器(4%)
第12题 创建 PV(4%)
第13题 Pod 使用 PVC(7%)
第14题 获取 Pod 错误日志(5%)
第15题 给 Pod 增加一个容器(边车)(7%)
第16题 统计使用 CPU 最高的 Pod(5%)
第17题 节点 NotReady 处理(13%)

注意事项

You must return to the base node (hostname node-1) after completing each task.

For your convenience, all environments, in other words, the base system and the cluster nodes, have the following additional command-line tools pre-installed and pre-configured:

  • kubectl with kalias and Bash autocompletion
  • jq for YAML/JSON processing
  • tmux for terminal multiplexing
  • curl and wget for testing web services
  • man and man pages for further documentation

自动补全有问题
deployment和svc那块 需要注意这两个的SELECTOR是否一致,svc这块可能是none,需要调整一下
ingress这块,如果ingress没有ip,需要检查hello服务的type是否是ClusterIP,不是的话需要修改


【k8s系列】(202212) cka考试必备命令大全及注意事项
http://example.com/2022/12/18/k8s/【k8s系列】(202212) cka考试必备命令大全及注意事项/
作者
ningan123
发布于
2022年12月18日
许可协议