一、为部署管道创建一个新的 ClusterRole 并将其绑定到范围为特定 namespace 的特定 ServiceAccount
任务:
- 创建一个名字为
deployment-clusterrole且仅允许创建以下资源类型的新ClusterRole:-
Deployment -
StatefulSet -
DaemonSet
-
- 在现有的 namespace
app-team1中创建一个名为cicd-token的新ServiceAccount。 - 限于 namespace
app-team1,将新的 ClusterRoledeployment-clusterrole绑定到新的 ServiceAccountcicd-token。
答案:
kubectl create clusterrole deployment-clusterrole --verb=create --resource=Deployment,StatefulSet,DaemonSet创建clusterrole
kubectl create clusterrole :这是使用kubectl 命令行工具创建集群角色的语法。
deployment-clusterrole : 这是指定要创建的集群角色的名称。
--verb=create : 这是定义集群角色的权限动作,这是创建(create)。这就意味这,这个用户或服务账号将能够创建指定资源类型对象。
--resource=Deployment,StatefulSet,DaemonSet: 这是指定集群角色控制的资源类型
创建
ServiceAccountkubectl --namespace app-team1 create serviceaccount cicd-tokenkubectl --namespace app-team1:指定使用哪个命名空间,在命名空间里操作。
create serviceaccount :指定命名空间里创建一个账号。
cicd-token : 指定要创建的服务账号名称。
绑定 rolebinding
kubectl create rolebinding cicd-token-deployment-clusterrole --clusterrole=deployment-clusterrolr --serviceaccount=app-team1:cicd-token --namespace=app-team1在
app-team1命名空间中创建一个名为cicd-token-deployment-clusterrole的
RoleBinding资源,将deployment-clusterroleClusterRole绑定到app-team1命名空间中的cicd-token服务账号。验证
kubectl -n app-team1 describe rolebindings cicd-token-deployment-clusterrole
二、任务:
将名为 k8s-worker1 的 node 设置为不可用, 并重新调度该 node 上所有运行的 pods
答案:
先查看节点
kiosk@k8s-master:~$ kubectl get nodes NAME STATUS ROLES AGE VERSION k8s-master Ready control-plane 167d v1.24.1 k8s-worker1 Ready <none> 167d v1.24.1 k8s-worker2 Ready <none> 167d v1.24.1
驱离节点
kiosk@k8s-master:~$ kubectl drain k8s-woker1驱离k8s-master节点
kubectl drain k8s-woker1 --ignore-daemonsets --delete-emptydir-data将会驱逐"k8s-master"节点上的Pod,但会忽略DaemonSet类型的Pod,并删除挂载在EmptyDir卷上的数据。这样可以在维护节点时确保Pod的平稳迁移,并清理临时数据。
检查:
kiosk@k8s-master:~$ kubectl get nodes NAME STATUS ROLES AGE VERSION k8s-master Ready control-plane 167d v1.24.1 k8s-worker1 Ready,SchedulingDisabl <none> 167d v1.24.1 k8s-worker2 Ready <none> 167d v1.24.1
557

被折叠的 条评论
为什么被折叠?



