题库
<h1>基于角色的访问控制-RBAC</h1>
<p>kubectl create clusterrole -h
kubectl create clusterrole NAME --verb=verb --resource=resource.group [--resource-name=resourcename] [--dry-run=server|client|none] [options]
--verb=create (权限)
--resource=deployments,statefulsets,daemonsets #(记住要加s,要不然会报错)</p>
<p>一定要先指命名空间
-n app-team1 先指命令空间
kubectl -n app-team1 create serviceaccount -h #可以加-h 查看命令帮助
例子:
Usage:
kubectl create serviceaccount NAME [--dry-run=server|client|none] [options]</p>
<p>kubectl -n app-team1 create rolebinding -h #已经指明rolebinding 如果没有就classrole</p>
<p>Usage:
kubectl create rolebinding NAME --clusterrole=NAME|--role=NAME [--user=username] [--group=groupname]
[--serviceaccount=namespace:serviceaccountname] [--dry-run=server|client|none] [options]</p>
<p>kubectl -n app-team1 create rolebinding cicd-token-binding --clusterrole=deployment-clusterrole --serviceaccount=app-team1:cicd-token</p>
<h1>创建rolebinding NAME</h1>
<h1>指定clusterrole</h1>
<p>--cluster=deployment-clusterrole </p>
<p>--serviceaccount=app-team1:cicd-token</p>
<p>kubectl describe -n app-team1 rolebindings.rbac.authorization.k8s.io cicd-token-binding</p>
<h1>注意点</h1>
<p>命名空间一定要跟上</p>
<h2>kubectl create role</h2>
<p>创建Role对象,定义在某一名字空间中的权限。例如:
创建名称为“pod-reader”的Role对象,允许用户对 Pods执行get、watch和list操作:
kubectl create role pod-reader --verb=get --verb=list --verb=watch --resource=pods</p>
<h2>kubectl create clusterrole</h2>
<p>创建ClusterRole对象。例如:
创建名为“pod-reader”的ClusterRole对象,允许用户对Pods对象执行get、watch和list操作:
kubectl create ClusterRole pod-reader --verb=get,list,watch --resource=pods</p>
<h2>kubectl create rolebinding</h2>
<p>在特定的名字空间中对Role或ClusterRole授权,例如:
在名字空间“acme”中,将名为 admin 的ClusterRole中权限授予名称“bob”的用户:
kubectl create rolebinding bob-admin-binding --clusterrole=admin --user=bob --namespace=acme</p>
<h2>kubectl create clusterrolebinding</h2>
<p>在整个集群(所有名字空间)中用ClusterRole授权。例如:
在整个集群范围,将名为 cluster-admin 的ClusterRole中定义的权限授予名为root的用户:
kybectl create clusterrolebinding root-cluster-admin-binging --clusterrole=cluster-admin --user=root
<img src="https://www.showdoc.com.cn/server/api/attachment/visitFile?sign=db65a3133548e04717123c876d0dfdff&amp;file=file.png" alt="" />
检查
kubectl -n app-team1 describe rolebinding cicd-token</p>
<h1>节点维护-指定node节点不可用</h1>
<p>首先,确定想要清空的节点名称,可以用以下命令列出集群中所有节点:
kubectl get nodes
清空节点:
kubectl drain <node name></p>
<h1>腾空节点</h1>
<p>通过将节点标记为不可调度并腾空节点为节点做升级准备:
将<node-to-drain> 替换为你要腾空的控制面节点名称
kubectl drain <node-to-drain> --ignore-daemonsets
升级第一个控制面节点</p>
<ul>
<li>升级kubeadm:
用最新的补丁版本号替换1.23.x-00中的x
apt-mark unhold kubeadm && \
apt-get update && apt-get install -y kubeadm=1.23.x-00 && \
apt-mark hold kubeadm
验证下载操作正常,并且kubeadm版本正确:
kubeadm version
验证升级计划:
kubeadm upgrade plan
选择要升级到的目标版本,运行合适的命令。例如:
将x替换为你为此次升级所选择的补丁版本号
sudo kubeadm upgrade apply v1.23.x
注意添加 --etcd-upgrade=false 可以使用-h帮助,来查找--etcd-upgrade字段</li>
<li>升级kubelet和kubectl
用最新的补丁版本替换1.23.x-00中的x
apt-mark unhold kubelet kubectl && \
apt-get update && apt-get install -y kubelete=1.23.x-00 kubectl=1.23.x-00 && \
apt-mark hold kubelet kubectl</li>
<li>解除节点的保护:
将节点标记为可调度,让其重新上线:
将<node-to-drain>替换为你的节点名称
kubectl uncordon <node-to-drain>
<h1>Etcd数据库</h1></li>
</ul>