20 Dec 2021 cka注意事项

2023-10-17 10:33:59 浏览数 (2)

  • 设置kubectl

代码语言:javascript复制
source <(kubectl completion bash) # setup autocomplete in bash into the current shell, bash-completion package should be installed first.
echo "source <(kubectl completion bash)" >> ~/.bashrc # add autocomplete permanently to your bash shel
alias k=kubectl
complete -F __start_kubectl k
export do="--dry-run=client -o yaml"    # k get pod x $do
export now="--force --grace-period 0"   # k delete pod x $now
  • 每个考题切记切换到正确的cluster
代码语言:javascript复制
kubectl config use-context target-cluster
  • 手动调度的pod切记使用k replace –force -f pod.yaml
  • 遇到不会的题目,直接在官方文档中搜索关键字,一般会有相应例子
  • 能直接参考官方例子的,直接copy官方例子,不要自己写
  • 在相应的obj文档页面直接查询kubectl create直接使用命令行创建相应obj
  • 常用知识点直接设置成书签,一键直达
  • 在官方文档搜索时,结果有可能并不是在 https://kubernetes.io/docs/ 和 https://kubernetes.io/blog/ 子域下,不能在考试中点开
  • 考试中需要登录到节点操作,但是需要创建的答案文件不能在集群节点上,记得退出后再创建相应的文件
  • 关于升级和备份的考题直接参考官方kubeadm文档,命令太多记不住
  • 注意考题中资源的ns,不要把obj创建在错误的ns
  • killer模拟考试全部过一遍
  • 考题中答案切记不要把kubectl写成k
  • 登录节点修改服务配置文件,记得执行以下命令
代码语言:javascript复制
systemctl daemon-reload && systemctl restart kubelet

systemctl status kubelet
  • 所有namespace级别的obj
代码语言:javascript复制
k api-resources --namespaced -o name
  • 常用的kubectl选项
代码语言:javascript复制
-o name
--no-headers
-o wide
  • 静态pod相关知识点,创建的目录、后缀等
  • 登录节点操作docker的命令是crictl,语法和docker一样的
  • 节点上网络插件配置目录位于/etc/cni/net.d
  • 看清题目答案是需要提供命令行还是命令行结果,提供命令行的文件一般是xxx.sh
  • 常用kubectl命令,请参考官方kubectl cheat sheet页面
  • 快速创建资源的命令,参考kubectl help和官方kubectl cheat sheet页面
代码语言:javascript复制
kubectl run --help | grep "kubectl run"
  kubectl run nginx --image=nginx
  kubectl run hazelcast --image=hazelcast/hazelcast --port=5701
  kubectl run hazelcast --image=hazelcast/hazelcast --env="DNS_DOMAIN=cluster" --env="POD_NAMESPACE=default"
  kubectl run hazelcast --image=hazelcast/hazelcast --labels="app=hazelcast,env=prod"
  kubectl run nginx --image=nginx --dry-run=client
  kubectl run nginx --image=nginx --overrides='{ "apiVersion": "v1", "spec": { ... } }'
  kubectl run -i -t busybox --image=busybox --restart=Never
  kubectl run nginx --image=nginx -- <arg1> <arg2> ... <argN>
  kubectl run nginx --image=nginx --command -- <cmd> <arg1> ... <argN>
  kubectl run NAME --image=image [--env="key=value"] [--port=port] [--dry-run=server|client] [--overrides=inline-json] [--command] -- [COMMAND] [args...] [options]

kubectl create deployment nginx --image=nginx  # start a single instance of nginx

# create a Job which prints "Hello World"
kubectl create job hello --image=busybox -- echo "Hello World" 

# create a CronJob that prints "Hello World" every minute
kubectl create cronjob hello --image=busybox   --schedule="*/1 * * * *" -- echo "Hello World" 
  • 不会或者需要消耗太多的时间题目标记后,后面有时间在做
  • 通过cat创建文件
代码语言:javascript复制
cat << EOF > test.log
line1
line2
EOF
  • 通过cat创建文件直接apply
代码语言:javascript复制
cat << EOF | kubectl apply -f -
apiVersion: v1
kind: Pod
metadata:
  name: busybox-sleep
spec:
  containers:
  - name: busybox
    image: busybox
    args:
    - sleep
    - "1000000"
---
apiVersion: v1
kind: Secret
metadata:
  name: mysecret
type: Opaque
data:
  password: $(echo -n "s33msi4" | base64 -w0)
  username: $(echo -n "jane" | base64 -w0)
EOF

:) 未完待续……

LEo at 00:12

0 人点赞