k8s认证CKA考试内容分享
(kubectl config use-context为本人测试环境中用来切换集群环境)
第一题
‘’’
k8s环境
设置配置环境
kubectl config use-context k8s
context
为部署管道创建一个新的ClusterRole并将其绑定到范围为特定namespace的特定ServiceAccount
Task
创建一个名字为deployment-clusterrole且仅允许创建以下资源类型的新ClusterRole
Deployment
StatefulSet
DaemonSet
在现有的namespace app-team1中创建一个名为cicd-token的新ServiceAccount
限于 namespace app-team1,将新的ClusterRole deployment-clusterrole绑定到新的ServiceAccount cicd-token
答:
kubectl config use-context k8s #将环境设置为k8s集群的
kubectl create clusterrole --help #查看创建clusterrole的帮助
#kubectl create clusterrole pod-reader --verb=get,list,watch --resource=pods
kubectl create clusterrole deployment-clusterrole --verb=create --resource=deployments,statefulSets,daemonsets #创建一个叫deployment-clusterrole的clusterrole,定义有创建权限,可以创建的资源类型为deployments,statefulSets,daemonsets
kubectl create sa cicd-token -n app-team1 #在命名空间app-team1创建sa叫cicd-token
kubectl create clusterrolebinding --help #查看创建clusterrolebinding的帮助
#kubectl create clusterrolebinding cluster-admin --clusterrole=cluster-admin --user=user1 --user=user2 --group=group1
kubectl create clusterrolebinding abc --clusterrole=deployment-clusterrole --serviceaccount=app-team1:cicd-token #创建clusterrolebinding名为abc,clusterrole为deployment-clusterrole,绑定的sa为app-team1命名空间下的cicd-token
‘’’
第二题
‘’’
ek8s环境
设置配置环境kubectl config use-context ek8s
Task
将名为ek8s-node-0的node设置为不可用,并重新调度该node上所有运行的pods
kubectl config use-context ek8s
[tom@vms20 ~]$ kubectl get nodes
NAME STATUS ROLES AGE VERSION
vms24.rhce.cc Ready master 34d v1.19.2
vms25.rhce.cc Ready 34d v1.19.2 #发现要设置的节点为vms25.rhce.cc(模拟环境为vms25.rhce.cc,与虚拟环境不同)
vms26.rhce.cc NotReady 34d v1.19.2
kubectl drain vms25.rhce.cc #将此节点设置为drain(如果一个节点被设置为drain,则此节点不再被调度pod, 且此节点上已经运行的pod会被驱逐(evicted)到其他节点)
kubectl uncordon vms25.rhce.cc #取消此设置
kubectl drain vms25.rhce.cc --ignore-daemonsets --force #重新设置,drain,并加上正确的参数
[tom@vms20 ~]$ kubectl get nodes
NAME STATUS ROLES AGE VERSION
vms24.rhce.cc Ready master 34d v1.19.2
vms25.rhce.cc Ready,SchedulingDisabled 34d v1.19.2 #看到此节点状态已经变为SchedulingDisabled
vms26.rhce.cc NotReady 34d v1.19.2
‘’’
第三题
‘’’
设置配置环境kubectl config use-context mk8s
Task
现有的kubernetes 集群正在运行的版本是1.18.8.仅将主节点上的所有kubernetes控制平面和节点组件升级到版本1.19.2
另外,在主节点上升级到kubelete和kubectl
*确保在升级前drain主节点,并在升级后uncordon主节点。请不要升级工作节点,etcd,container管理器,CNI插件,DNS服务器或者任何其他插件
答:
去kubernetes官方文档搜索upgrade(联系环境为centos,但是考试环境为ubuntu)
ssh vms28.rhce.cc #切到主节点
sudo -i #切到root用户
yum install -y kubeadm-1.19.2-0 --disableexcludes=kubernetes #安装kubeadm1.19.2版本
kubeadm version #查看kubeamd版本
exit #切回主控端
kubectl drain vms28.rhce.cc --ignore-daemonsets #对主节点设置为维护模式
[tom@vms20 ~]$ kubectl get nodes #查看发现设置成功
NAME STATUS ROLES AGE VERSION
vms28.rhce.cc Ready,SchedulingDisabled master 32d v1.18.8
vms29.rhce.cc Ready 32d v1.18.8
ssh vms28.rhce.cc #切到主节点
kubeadm upgrade plan #查看节点组件可升级版本
kubeadm upgrade apply v1.19.2 #将节点组件升级到题目要求的1.19.2
exit #切回主控端
kubectl uncordon vms28.rhce.cc #对主节点取消维护模式
kubectl get nodes #查看节点现在状态
ssh vms28.rhce.cc #切到主节点
yum install -y kubelet-1.19.2-0 kubectl-1.19.2-0 --disableexcludes=kubernetes #安装1.19.2版本的kubelete和kubebctl
systemctl daemon-reload #重启kubelete
systemctl restart kubelet
[root@vms28 ~]# kubectl get nodes
NAME STATUS ROLES AGE VERSION
vms28.rhce.cc Ready master 32d v1.19.2 #再次查看已经升级为1.19.2
vms29.rhce.cc Ready 32d v1.18.8
ssh vms29.rhce.cc #ssh到worker上
sudo -i #切到root用户
yum install -y kubeadm-1.19.2-0 --disableexcludes=kubernetes
exit #切回主控端
kubectl drain vms29.rhce.cc --ignore-daemonsets #对worker点设置为维护模式
ssh vms29.rhce.cc #ssh到worker上
kubeadm upgrade node #升级节点组件
exit #切回主控端
[tom@vms20 ~]$ kubectl get nodes
NAME STATUS ROLES AGE VERSION
vms28.rhce.cc Ready master 32d v1.19.2
vms29.rhce.cc Ready,SchedulingDisabled 32d v1.18.8
[tom@vms20 ~]$ kubectl uncordon vms29.rhce.cc #对worker取消维护模式
node/vms29.rhce.cc uncordoned
[tom@vms20 ~]$ kubectl get nodes
NA