k8s-demo集群搭建详细步骤10:部署kube-apiserver v1.23.5到3个master节点(3个无状态实例)

540 阅读12分钟

本文已参与「新人创作礼」活动,一起开启掘金创作之路

kube-apiserver是无状态的,部署到3个Master节点,通过nginx进行代理访问,从而保证服务高可用
后续的部署都涉及到参数配置,apiVersion 和 kind 取值参考 kubernetes.io/docs/refere…

一、下载并分发二进制文件到3个master节点

[root@master1 ~]# cd /opt/install/
[root@master1 install]# wget https://dl.k8s.io/v1.23.5/bin/linux/amd64/kube-apiserver
[root@master1 install]# chmod +x kube-apiserver
[root@master1 install]# mv kube-apiserver /opt/k8s/bin/
[root@master1 install]# for node_ip in ${MASTER_IPS[@]}
  do
    echo ">>> ${node_ip}"
    scp /opt/k8s/bin/kube-apiserver root@${node_ip}:/opt/k8s/bin/
    ssh root@${node_ip} "chmod +x /opt/k8s/bin/kube-apiserver"
  done
>>> 192.168.66.131
kube-apiserver          100%  125MB 216.7MB/s   00:00
>>> 192.168.66.132
kube-apiserver          100%  125MB 152.6MB/s   00:00
>>> 192.168.66.133
kube-apiserver          100%  125MB 156.9MB/s   00:00
[root@master1 install]#

二、创建加密配置文件

[root@master1 ~]# cd /opt/install/kubeconfig
[root@master1 kubeconfig]# export ENCRYPTION_KEY=$(head -c 32 /dev/urandom | base64)
[root@master1 kubeconfig]# echo $ENCRYPTION_KEY
GIiTvJ0fyGBdB+Gh+FXzMh5T2FBPRPKVN+7nFVJwhBM=
[root@master1 kubeconfig]# cat > encryption-config.yaml <<EOF
kind: EncryptionConfig
apiVersion: v1
resources:
  - resources:
      - secrets
    providers:
      - aescbc:
          keys:
            - name: key1
              secret: ${ENCRYPTION_KEY}
      - identity: {}
EOF
[root@master1 kubeconfig]# for node_ip in ${MASTER_IPS[@]}
  do
    echo ">>> ${node_ip}"
    scp encryption-config.yaml root@${node_ip}:/opt/k8s/etc/encryption-config.yaml
  done
>>> 192.168.66.131
encryption-config.yaml            100%  240   315.5KB/s   00:00
>>> 192.168.66.132
encryption-config.yaml            100%  240   103.6KB/s   00:00
>>> 192.168.66.133
encryption-config.yaml            100%  240   203.2KB/s   00:00
[root@master1 kubeconfig]#

三、创建并分发审计策略

1、创建审计策略文件 audit-policy.yaml

[root@master1 ~]# cd /opt/install/kubeconfig
[root@master1 kubeconfig]# cat > audit-policy.yaml <<EOF
apiVersion: audit.k8s.io/v1
kind: Policy
rules:
  # The following requests were manually identified as high-volume and low-risk, so drop them.
  - level: None
    resources:
      - group: ""
        resources:
          - endpoints
          - services
          - services/status
    users:
      - 'k8s-demo-kube-proxy'
    verbs:
      - watch

  - level: None
    resources:
      - group: ""
        resources:
          - nodes
          - nodes/status
    userGroups:
      - 'system:nodes'
    verbs:
      - get

  - level: None
    namespaces:
      - kube-system
    resources:
      - group: ""
        resources:
          - endpoints
    users:
      - 'k8s-demo-ctrl-mgr'
      - 'k8s-demo-scheduler'
      - 'system:serviceaccounts'
      - 'kube-system:endpoint-controller'
    verbs:
      - get
      - update

  - level: None
    resources:
      - group: ""
        resources:
          - namespaces
          - namespaces/status
          - namespaces/finalize
    users:
      - 'k8s-demo-apiserver'
    verbs:
      - get

  # Don't log HPA fetching metrics.
  - level: None
    resources:
      - group: metrics.k8s.io
    users:
      - 'k8s-demo-ctrl-mgr'
    verbs:
      - get
      - list

  # Don't log these read-only URLs.
  - level: None
    nonResourceURLs:
      - '/healthz*'
      - /version
      - '/swagger*'

  # Don't log events requests.
  - level: None
    resources:
      - group: ""
        resources:
          - events

  # node and pod status calls from nodes are high-volume and can be large, don't log responses
  # for expected updates from nodes
  - level: Request
    omitStages:
      - RequestReceived
    resources:
      - group: ""
        resources:
          - nodes/status
          - pods/status
    users:
      - kubelet
      - 'system:node-problem-detector'
      - 'system:serviceaccount:kube-system:node-problem-detector'
    verbs:
      - update
      - patch

  - level: Request
    omitStages:
      - RequestReceived
    resources:
      - group: ""
        resources:
          - nodes/status
          - pods/status
    userGroups:
      - 'system:nodes'
    verbs:
      - update
      - patch

  # deletecollection calls can be large, don't log responses for expected namespace deletions
  - level: Request
    omitStages:
      - RequestReceived
    users:
      - 'system:serviceaccount:kube-system:namespace-controller'
    verbs:
      - deletecollection

  # Secrets, ConfigMaps, and TokenReviews can contain sensitive & binary data,
  # so only log at the Metadata level.
  - level: Metadata
    omitStages:
      - RequestReceived
    resources:
      - group: ""
        resources:
          - secrets
          - configmaps
      - group: authentication.k8s.io
        resources:
          - tokenreviews
  # Get repsonses can be large; skip them.
  - level: Request
    omitStages:
      - RequestReceived
    resources:
      - group: ""
      - group: admissionregistration.k8s.io
      - group: apiextensions.k8s.io
      - group: apiregistration.k8s.io
      - group: apps
      - group: authentication.k8s.io
      - group: authorization.k8s.io
      - group: autoscaling
      - group: batch
      - group: certificates.k8s.io
      - group: extensions
      - group: metrics.k8s.io
      - group: networking.k8s.io
      - group: policy
      - group: rbac.authorization.k8s.io
      - group: scheduling.k8s.io
      - group: settings.k8s.io
      - group: storage.k8s.io
    verbs:
      - get
      - list
      - watch

  # Default level for known APIs
  - level: RequestResponse
    omitStages:
      - RequestReceived
    resources:
      - group: ""
      - group: admissionregistration.k8s.io
      - group: apiextensions.k8s.io
      - group: apiregistration.k8s.io
      - group: apps
      - group: authentication.k8s.io
      - group: authorization.k8s.io
      - group: autoscaling
      - group: batch
      - group: certificates.k8s.io
      - group: extensions
      - group: metrics.k8s.io
      - group: networking.k8s.io
      - group: policy
      - group: rbac.authorization.k8s.io
      - group: scheduling.k8s.io
      - group: settings.k8s.io
      - group: storage.k8s.io
      
  # Default level for all other requests.
  - level: Metadata
    omitStages:
      - RequestReceived
EOF
[root@master1 kubeconfig]# ll
总用量 20
-rw-r--r-- 1 root root 4297 4月   9 11:08 audit-policy.yaml
-rw-r--r-- 1 root root  240 4月   9 11:04 encryption-config.yaml
-rw------- 1 root root 6427 4月   9 10:26 kubectl.kubeconfig
[root@master1 kubeconfig]#

k8s-demo-kube-proxy、k8s-demo-ctrl-mgr、'k8s-demo-schedulerk8s-demo-ctrl-mgr等这些用户名在前面的生成证书的时候确定的,可以根据自己的环境修改

2、分发审计策略文件到3个master节点

[root@master1 ~]# cd /opt/install/kubeconfig
[root@master1 kubeconfig]# for node_ip in ${MASTER_IPS[@]}
  do
    echo ">>> ${node_ip}"
    scp audit-policy.yaml root@${node_ip}:/opt/k8s/etc/audit-policy.yaml
  done
>>> 192.168.66.131
audit-policy.yaml           100% 4297     3.5MB/s   00:00
>>> 192.168.66.132
audit-policy.yaml           100% 4297     3.4MB/s   00:00
>>> 192.168.66.133
audit-policy.yaml           100% 4297     2.8MB/s   00:00
[root@master1 kubeconfig]#

四、部署kube-apiserver服务

1、创建kube-apiserver systemd unit模板文件

[root@master1 ~]# cd /opt/install/service
[root@master1 service]# cat > apiserver.service.template <<EOF
[Unit]
Description=Kubernetes API Server
Documentation=https://github.com/GoogleCloudPlatform/kubernetes
After=network.target

[Service]
WorkingDirectory=${K8S_DIR}/kube-apiserver
ExecStart=${K8S_DIR}/bin/kube-apiserver \\
  --advertise-address=##NODE_IP## \\
  --default-not-ready-toleration-seconds=360 \\
  --default-unreachable-toleration-seconds=360 \\
  --max-mutating-requests-inflight=2000 \\
  --max-requests-inflight=4000 \\
  --default-watch-cache-size=200 \\
  --delete-collection-workers=2 \\
  --encryption-provider-config=${K8S_DIR}/etc/encryption-config.yaml \\
  --etcd-cafile=${K8S_DIR}/etc/cert/ca.pem \\
  --etcd-certfile=${K8S_DIR}/etc/cert/apiserver.pem \\
  --etcd-keyfile=${K8S_DIR}/etc/cert/apiserver-key.pem \\
  --etcd-servers=${ETCD_ENDPOINTS} \\
  --bind-address=##NODE_IP## \\
  --secure-port=6443 \\
  --tls-cert-file=${K8S_DIR}/etc/cert/apiserver.pem \\
  --tls-private-key-file=${K8S_DIR}/etc/cert/apiserver-key.pem \\
  --audit-log-maxage=15 \\
  --audit-log-maxbackup=3 \\
  --audit-log-maxsize=100 \\
  --audit-log-truncate-enabled \\
  --audit-log-path=${K8S_DIR}/kube-apiserver/audit.log \\
  --audit-policy-file=/opt/k8s/etc/audit-policy.yaml \\
  --profiling \\
  --client-ca-file=${K8S_DIR}/etc/cert/ca.pem \\
  --enable-bootstrap-token-auth \\
  --requestheader-allowed-names="k8s-demo-aggregator" \\
  --requestheader-client-ca-file=${K8S_DIR}/etc/cert/ca.pem \\
  --requestheader-extra-headers-prefix="X-Remote-Extra-" \\
  --requestheader-group-headers=X-Remote-Group \\
  --requestheader-username-headers=X-Remote-User \\
  --service-account-key-file=/opt/k8s/etc/cert/ca.pem \\
  --authorization-mode=Node,RBAC \\
  --anonymous-auth=false \\
  --runtime-config=api/all=true \\
  --enable-admission-plugins=NodeRestriction \\
  --allow-privileged=true \\
  --apiserver-count=3 \\
  --event-ttl=168h \\
  --kubelet-certificate-authority=${K8S_DIR}/etc/cert/ca.pem \\
  --kubelet-client-certificate=${K8S_DIR}/etc/cert/apiserver.pem \\
  --kubelet-client-key=${K8S_DIR}/etc/cert/apiserver-key.pem \\
  --kubelet-timeout=10s \\
  --proxy-client-cert-file=${K8S_DIR}/etc/cert/aggregator-client.pem \\
  --proxy-client-key-file=${K8S_DIR}/etc/cert/aggregator-client-key.pem \\
  --service-cluster-ip-range=${SERVICE_CIDR} \\
  --service-node-port-range=${NODE_PORT_RANGE} \\
  --service-account-issuer=api \\
  --service-account-key-file=${K8S_DIR}/etc/cert/service-account.pub \\
  --service-account-signing-key-file=${K8S_DIR}/etc/cert/service-account-key.pem \\
  --v=2
Restart=on-failure
RestartSec=10
Type=notify
LimitNOFILE=65536

[Install]
WantedBy=multi-user.target
EOF
  • --requestheader-allowed-names:不能为空,值用逗号分割,这里设置为"k8s-demo-aggregator"
  • 在--proxy-client-cert-file证书中配置CN名称为"k8s-demo-aggregator"
  • --secret-port:https监听端口
  • --insecure-port=0:关闭监听 http 非安全端口(8080)
  • --authorization-mode=Node,RBAC 开启Node和RBAC授权模式k8s把用户和组的关系交给认证模块处理,k8s关注的是对资源的操作管控,即Role和ClusterRole
  • --anonymous-auth=false 拒绝未授权的请求
  • --kubelet-*:如果指定,则使用https访问kubelet APIs;需要为证书对应的用户用户定义RBAC规则,否则访问kubelet API时提示未授权
  • 如果kube-apiserver机器没有运行kube-proxy,则还需要添加--enable-aggregator-routing=true参数
  • --audit-log-version string 默认值:"audit.k8s.io/v1"
  • Feature Gates 参考 kubernetes.io/docs/refere…

2、分发kube-apiserver systemd unit文件到3个master节点

[root@master1 ~]# cd /opt/install/service
[root@master1 service]# for (( i=0; i < 3; i++ ))
  do
    sed -e "s/##NODE_NAME##/${MASTER_NAMES[i]}/" -e "s/##NODE_IP##/${MASTER_IPS[i]}/" apiserver.service.template > apiserver-${MASTER_IPS[i]}.service 
  done
[root@master1 service]# ll apiserver*.service
-rw-r--r-- 1 root root 2553 4月   9 11:20 apiserver-192.168.66.131.service
-rw-r--r-- 1 root root 2553 4月   9 11:20 apiserver-192.168.66.132.service
-rw-r--r-- 1 root root 2553 4月   9 11:20 apiserver-192.168.66.133.service
[root@master1 service]# for node_ip in ${MASTER_IPS[@]}
  do
    echo ">>> ${node_ip}"
    ssh root@${node_ip} "mkdir -p ${K8S_DIR}/kube-apiserver"
    scp apiserver-${node_ip}.service root@${node_ip}:/etc/systemd/system/kube-apiserver.service
  done
>>> 192.168.66.131
apiserver-192.168.66.131.service         100% 2553   935.4KB/s   00:00
>>> 192.168.66.132
apiserver-192.168.66.132.service         100% 2553   788.9KB/s   00:00
>>> 192.168.66.133
apiserver-192.168.66.133.service         100% 2553   850.1KB/s   00:00
[root@master1 service]# 

3、启动kube-apiserver服务,并检查服务状态

# 启动kube-apiserver服务
[root@master1 ~]# for node_ip in ${MASTER_IPS[@]}
  do
    echo ">>> ${node_ip}"
    ssh root@${node_ip} "systemctl daemon-reload && systemctl enable kube-apiserver && systemctl restart kube-apiserver"
  done
>>> 192.168.66.131
>>> 192.168.66.132
>>> 192.168.66.133

# 查看进程和端口
[root@master1 ~]# ss -lnpt | grep kube-apiserver
LISTEN     0      4096   192.168.66.131:6443                     *:*                   users:(("kube-apiserver",pid=5463,fd=7))

# 查看服务是否启动成功
[root@master1 ~]# for node_ip in ${MASTER_IPS[@]}
  do
    echo ">>> ${node_ip}"
    ssh root@${node_ip} "systemctl status kube-apiserver |grep 'Active:'"
  done
>>> 192.168.66.131
   Active: active (running) since 六 2022-04-09 12:13:18 CST; 53s ago
>>> 192.168.66.132
   Active: active (running) since 六 2022-04-09 12:13:21 CST; 50s ago
>>> 192.168.66.133
   Active: active (running) since 六 2022-04-09 12:13:23 CST; 48s ago

#查看集群信息
[root@master1 ~]# kubectl cluster-info
Kubernetes master is running at https://127.0.0.1:8443

To further debug and diagnose cluster problems, use 'kubectl cluster-info dump'.

#查看所有资源
[root@master1 ~]# kubectl get all --all-namespaces
NAMESPACE   NAME                 TYPE        CLUSTER-IP   EXTERNAL-IP   PORT(S)   AGE
default     service/kubernetes   ClusterIP   10.66.0.1   <none>        443/TCP   62s

# 查看服务
[root@master1 cert]# kubectl get svc --all-namespaces
NAMESPACE   NAME         TYPE        CLUSTER-IP   EXTERNAL-IP   PORT(S)   AGE
default     kubernetes   ClusterIP   10.66.0.1    <none>        443/TCP   2m

# 查看组件状态,可略写为 kubectl get cs
[root@master1 ~]# kubectl get componentstatuses
NAME                 STATUS      MESSAGE                                     ERROR
controller-manager   Unhealthy   Get "https://127.0.0.1:10257/healthz": dial tcp 127.0.0.1:10257: connect: connection refused
scheduler            Unhealthy   Get "https://127.0.0.1:10259/healthz": dial tcp 127.0.0.1:10259: connect: connection refused
etcd-2               Healthy     {"health":"true","reason":""}
etcd-0               Healthy     {"health":"true","reason":""}
etcd-1               Healthy     {"health":"true","reason":""}

[root@master1 ~]# kubectl get ep
NAME         ENDPOINTS                                                     AGE
kubernetes   192.168.66.131:6443,192.168.66.132:6443,192.168.66.133:6443   6m15s

#如果上述状态异常,可以查看日志
[root@master1 ~]# journalctl -u kube-apiserver
  • kube-apiserver审计日志存放路径 /opt/k8s/kube-apiserver/audit.log ,如下所示:

{"kind":"Event","apiVersion":"audit.k8s.io/v1","level":"Metadata","auditID":"b757516b-1a2d-46bb-aa9a-f3f4a5715e9e","stage":"ResponseComplete","requestURI":"/apis/discovery.k8s.io/v1/namespaces/default/endpointslices/kubernetes","verb":"get","user":{"username":"system:apiserver","uid":"fa394460-1716-4bf5-b585-dbbb145970d7","groups":["system:masters"]},"sourceIPs":["192.168.66.131"],"userAgent":"kube-apiserver/v1.23.5 (linux/amd64) kubernetes/c285e78","objectRef":{"resource":"endpointslices","namespace":"default","name":"kubernetes","apiGroup":"discovery.k8s.io","apiVersion":"v1"},"responseStatus":{"metadata":{},"code":200},"requestReceivedTimestamp":"2022-04-09T04:16:40.668360Z","stageTimestamp":"2022-04-09T04:16:40.669994Z","annotations":{"authorization.k8s.io/decision":"allow","authorization.k8s.io/reason":""}}

五、kube-apiserver服务初始化了哪些数据呢?

1、namespace

[root@master1 ~]# kubectl get ns
NAME              STATUS   AGE
default           Active   9m7s
kube-node-lease   Active   9m9s
kube-public       Active   9m9s
kube-system       Active   9m9s

2、Role

[root@master1 ~]# kubectl get Role --all-namespaces
NAMESPACE     NAME                                             CREATED AT
kube-public   system:controller:bootstrap-signer               2022-04-10T10:12:22Z
kube-system   extension-apiserver-authentication-reader        2022-04-10T10:12:22Z
kube-system   system::leader-locking-kube-controller-manager   2022-04-10T10:12:22Z
kube-system   system::leader-locking-kube-scheduler            2022-04-10T10:12:22Z
kube-system   system:controller:bootstrap-signer               2022-04-10T10:12:22Z
kube-system   system:controller:cloud-provider                 2022-04-10T10:12:22Z
kube-system   system:controller:token-cleaner                  2022-04-10T10:12:22Z

3、ClusterRole

[root@master1 ~]# kubectl get ClusterRole
NAME                                                                   CREATED AT
admin                                                                  2022-04-10T10:12:21Z
cluster-admin                                                          2022-04-10T10:12:21Z
edit                                                                   2022-04-10T10:12:21Z
system:aggregate-to-admin                                              2022-04-10T10:12:21Z
system:aggregate-to-edit                                               2022-04-10T10:12:21Z
system:aggregate-to-view                                               2022-04-10T10:12:22Z
system:auth-delegator                                                  2022-04-10T10:12:22Z
system:basic-user                                                      2022-04-10T10:12:21Z
system:certificates.k8s.io:certificatesigningrequests:nodeclient       2022-04-10T10:12:22Z
system:certificates.k8s.io:certificatesigningrequests:selfnodeclient   2022-04-10T10:12:22Z
system:certificates.k8s.io:kube-apiserver-client-approver              2022-04-10T10:12:22Z
system:certificates.k8s.io:kube-apiserver-client-kubelet-approver      2022-04-10T10:12:22Z
system:certificates.k8s.io:kubelet-serving-approver                    2022-04-10T10:12:22Z
system:certificates.k8s.io:legacy-unknown-approver                     2022-04-10T10:12:22Z
system:controller:attachdetach-controller                              2022-04-10T10:12:22Z
system:controller:certificate-controller                               2022-04-10T10:12:22Z
system:controller:clusterrole-aggregation-controller                   2022-04-10T10:12:22Z
system:controller:cronjob-controller                                   2022-04-10T10:12:22Z
system:controller:daemon-set-controller                                2022-04-10T10:12:22Z
system:controller:deployment-controller                                2022-04-10T10:12:22Z
system:controller:disruption-controller                                2022-04-10T10:12:22Z
system:controller:endpoint-controller                                  2022-04-10T10:12:22Z
system:controller:endpointslice-controller                             2022-04-10T10:12:22Z
system:controller:endpointslicemirroring-controller                    2022-04-10T10:12:22Z
system:controller:ephemeral-volume-controller                          2022-04-10T10:12:22Z
system:controller:expand-controller                                    2022-04-10T10:12:22Z
system:controller:generic-garbage-collector                            2022-04-10T10:12:22Z
system:controller:horizontal-pod-autoscaler                            2022-04-10T10:12:22Z
system:controller:job-controller                                       2022-04-10T10:12:22Z
system:controller:namespace-controller                                 2022-04-10T10:12:22Z
system:controller:node-controller                                      2022-04-10T10:12:22Z
system:controller:persistent-volume-binder                             2022-04-10T10:12:22Z
system:controller:pod-garbage-collector                                2022-04-10T10:12:22Z
system:controller:pv-protection-controller                             2022-04-10T10:12:22Z
system:controller:pvc-protection-controller                            2022-04-10T10:12:22Z
system:controller:replicaset-controller                                2022-04-10T10:12:22Z
system:controller:replication-controller                               2022-04-10T10:12:22Z
system:controller:resourcequota-controller                             2022-04-10T10:12:22Z
system:controller:root-ca-cert-publisher                               2022-04-10T10:12:22Z
system:controller:route-controller                                     2022-04-10T10:12:22Z
system:controller:service-account-controller                           2022-04-10T10:12:22Z
system:controller:service-controller                                   2022-04-10T10:12:22Z
system:controller:statefulset-controller                               2022-04-10T10:12:22Z
system:controller:ttl-after-finished-controller                        2022-04-10T10:12:22Z
system:controller:ttl-controller                                       2022-04-10T10:12:22Z
system:discovery                                                       2022-04-10T10:12:21Z
system:heapster                                                        2022-04-10T10:12:22Z
system:kube-aggregator                                                 2022-04-10T10:12:22Z
system:kube-controller-manager                                         2022-04-10T10:12:22Z
system:kube-dns                                                        2022-04-10T10:12:22Z
system:kube-scheduler                                                  2022-04-10T10:12:22Z
system:kubelet-api-admin                                               2022-04-10T10:12:22Z
system:monitoring                                                      2022-04-10T10:12:21Z
system:node                                                            2022-04-10T10:12:22Z
system:node-bootstrapper                                               2022-04-10T10:12:22Z
system:node-problem-detector                                           2022-04-10T10:12:22Z
system:node-proxier                                                    2022-04-10T10:12:22Z
system:persistent-volume-provisioner                                   2022-04-10T10:12:22Z
system:public-info-viewer                                              2022-04-10T10:12:21Z
system:service-account-issuer-discovery                                2022-04-10T10:12:22Z
system:volume-scheduler                                                2022-04-10T10:12:22Z
view                                                                   2022-04-10T10:12:21Z

4、RoleBinding

[root@master1 ~]# kubectl get RoleBinding -o wide -A
NAMESPACE     NAME                                                ROLE                                                  AGE   USERS                                                   GROUPS   SERVICEACCOUNTS
kube-public   system:controller:bootstrap-signer                  Role/system:controller:bootstrap-signer               48m                                                                    kube-system/bootstrap-signer
kube-system   system::extension-apiserver-authentication-reader   Role/extension-apiserver-authentication-reader        48m   system:kube-controller-manager, system:kube-scheduler
kube-system   system::leader-locking-kube-controller-manager      Role/system::leader-locking-kube-controller-manager   48m   system:kube-controller-manager                                   kube-system/kube-controller-manager
kube-system   system::leader-locking-kube-scheduler               Role/system::leader-locking-kube-scheduler            48m   system:kube-scheduler                                            kube-system/kube-scheduler
kube-system   system:controller:bootstrap-signer                  Role/system:controller:bootstrap-signer               48m                                                                    kube-system/bootstrap-signer
kube-system   system:controller:cloud-provider                    Role/system:controller:cloud-provider                 48m                                                                    kube-system/cloud-provider
kube-system   system:controller:token-cleaner                     Role/system:controller:token-cleaner                  48m                                                                    kube-system/token-cleaner

5、ClusterRoleBinding

[root@master1 ~]# kubectl get ClusterRoleBinding -o wide -A
NAME                                                   ROLE                                                               AGE   USERS                            GROUPS                                         SERVICEACCOUNTS
cluster-admin                                          ClusterRole/cluster-admin                                          46m                                    system:masters
system:basic-user                                      ClusterRole/system:basic-user                                      46m                                    system:authenticated
system:controller:attachdetach-controller              ClusterRole/system:controller:attachdetach-controller              46m                                                                                   kube-system/attachdetach-controller
system:controller:certificate-controller               ClusterRole/system:controller:certificate-controller               46m                                                                                   kube-system/certificate-controller
system:controller:clusterrole-aggregation-controller   ClusterRole/system:controller:clusterrole-aggregation-controller   46m                                                                                   kube-system/clusterrole-aggregation-controller
system:controller:cronjob-controller                   ClusterRole/system:controller:cronjob-controller                   46m                                                                                   kube-system/cronjob-controller
system:controller:daemon-set-controller                ClusterRole/system:controller:daemon-set-controller                46m                                                                                   kube-system/daemon-set-controller
system:controller:deployment-controller                ClusterRole/system:controller:deployment-controller                46m                                                                                   kube-system/deployment-controller
system:controller:disruption-controller                ClusterRole/system:controller:disruption-controller                46m                                                                                   kube-system/disruption-controller
system:controller:endpoint-controller                  ClusterRole/system:controller:endpoint-controller                  46m                                                                                   kube-system/endpoint-controller
system:controller:endpointslice-controller             ClusterRole/system:controller:endpointslice-controller             46m                                                                                   kube-system/endpointslice-controller
system:controller:endpointslicemirroring-controller    ClusterRole/system:controller:endpointslicemirroring-controller    46m                                                                                   kube-system/endpointslicemirroring-controller
system:controller:ephemeral-volume-controller          ClusterRole/system:controller:ephemeral-volume-controller          46m                                                                                   kube-system/ephemeral-volume-controller
system:controller:expand-controller                    ClusterRole/system:controller:expand-controller                    46m                                                                                   kube-system/expand-controller
system:controller:generic-garbage-collector            ClusterRole/system:controller:generic-garbage-collector            46m                                                                                   kube-system/generic-garbage-collector
system:controller:horizontal-pod-autoscaler            ClusterRole/system:controller:horizontal-pod-autoscaler            46m                                                                                   kube-system/horizontal-pod-autoscaler
system:controller:job-controller                       ClusterRole/system:controller:job-controller                       46m                                                                                   kube-system/job-controller
system:controller:namespace-controller                 ClusterRole/system:controller:namespace-controller                 46m                                                                                   kube-system/namespace-controller
system:controller:node-controller                      ClusterRole/system:controller:node-controller                      46m                                                                                   kube-system/node-controller
system:controller:persistent-volume-binder             ClusterRole/system:controller:persistent-volume-binder             46m                                                                                   kube-system/persistent-volume-binder
system:controller:pod-garbage-collector                ClusterRole/system:controller:pod-garbage-collector                46m                                                                                   kube-system/pod-garbage-collector
system:controller:pv-protection-controller             ClusterRole/system:controller:pv-protection-controller             46m                                                                                   kube-system/pv-protection-controller
system:controller:pvc-protection-controller            ClusterRole/system:controller:pvc-protection-controller            46m                                                                                   kube-system/pvc-protection-controller
system:controller:replicaset-controller                ClusterRole/system:controller:replicaset-controller                46m                                                                                   kube-system/replicaset-controller
system:controller:replication-controller               ClusterRole/system:controller:replication-controller               46m                                                                                   kube-system/replication-controller
system:controller:resourcequota-controller             ClusterRole/system:controller:resourcequota-controller             46m                                                                                   kube-system/resourcequota-controller
system:controller:root-ca-cert-publisher               ClusterRole/system:controller:root-ca-cert-publisher               46m                                                                                   kube-system/root-ca-cert-publisher
system:controller:route-controller                     ClusterRole/system:controller:route-controller                     46m                                                                                   kube-system/route-controller
system:controller:service-account-controller           ClusterRole/system:controller:service-account-controller           46m                                                                                   kube-system/service-account-controller
system:controller:service-controller                   ClusterRole/system:controller:service-controller                   46m                                                                                   kube-system/service-controller
system:controller:statefulset-controller               ClusterRole/system:controller:statefulset-controller               46m                                                                                   kube-system/statefulset-controller
system:controller:ttl-after-finished-controller        ClusterRole/system:controller:ttl-after-finished-controller        46m                                                                                   kube-system/ttl-after-finished-controller
system:controller:ttl-controller                       ClusterRole/system:controller:ttl-controller                       46m                                                                                   kube-system/ttl-controller
system:discovery                                       ClusterRole/system:discovery                                       46m                                    system:authenticated
system:kube-controller-manager                         ClusterRole/system:kube-controller-manager                         46m   system:kube-controller-manager
system:kube-dns                                        ClusterRole/system:kube-dns                                        46m                                                                                   kube-system/kube-dns
system:kube-scheduler                                  ClusterRole/system:kube-scheduler                                  46m   system:kube-scheduler
system:monitoring                                      ClusterRole/system:monitoring                                      46m                                    system:monitoring
system:node                                            ClusterRole/system:node                                            46m
system:node-proxier                                    ClusterRole/system:node-proxier                                    46m   system:kube-proxy
system:public-info-viewer                              ClusterRole/system:public-info-viewer                              46m                                    system:authenticated, system:unauthenticated
system:service-account-issuer-discovery                ClusterRole/system:service-account-issuer-discovery                46m                                    system:serviceaccounts
system:volume-scheduler                                ClusterRole/system:volume-scheduler                                46m   system:kube-scheduler

6、api-resources

[root@master1 install]# kubectl api-resources
NAME                              SHORTNAMES   APIVERSION                             NAMESPACED   KIND
bindings                                       v1                                     true         Binding
componentstatuses                 cs           v1                                     false        ComponentStatus
configmaps                        cm           v1                                     true         ConfigMap
endpoints                         ep           v1                                     true         Endpoints
events                            ev           v1                                     true         Event
limitranges                       limits       v1                                     true         LimitRange
namespaces                        ns           v1                                     false        Namespace
nodes                             no           v1                                     false        Node
persistentvolumeclaims            pvc          v1                                     true         PersistentVolumeClaim
persistentvolumes                 pv           v1                                     false        PersistentVolume
pods                              po           v1                                     true         Pod
podtemplates                                   v1                                     true         PodTemplate
replicationcontrollers            rc           v1                                     true         ReplicationController
resourcequotas                    quota        v1                                     true         ResourceQuota
secrets                                        v1                                     true         Secret
serviceaccounts                   sa           v1                                     true         ServiceAccount
services                          svc          v1                                     true         Service
mutatingwebhookconfigurations                  admissionregistration.k8s.io/v1        false        MutatingWebhookConfiguration
validatingwebhookconfigurations                admissionregistration.k8s.io/v1        false        ValidatingWebhookConfiguration
customresourcedefinitions         crd,crds     apiextensions.k8s.io/v1                false        CustomResourceDefinition
apiservices                                    apiregistration.k8s.io/v1              false        APIService
controllerrevisions                            apps/v1                                true         ControllerRevision
daemonsets                        ds           apps/v1                                true         DaemonSet
deployments                       deploy       apps/v1                                true         Deployment
replicasets                       rs           apps/v1                                true         ReplicaSet
statefulsets                      sts          apps/v1                                true         StatefulSet
tokenreviews                                   authentication.k8s.io/v1               false        TokenReview
localsubjectaccessreviews                      authorization.k8s.io/v1                true         LocalSubjectAccessReview
selfsubjectaccessreviews                       authorization.k8s.io/v1                false        SelfSubjectAccessReview
selfsubjectrulesreviews                        authorization.k8s.io/v1                false        SelfSubjectRulesReview
subjectaccessreviews                           authorization.k8s.io/v1                false        SubjectAccessReview
horizontalpodautoscalers          hpa          autoscaling/v2                         true         HorizontalPodAutoscaler
cronjobs                          cj           batch/v1                               true         CronJob
jobs                                           batch/v1                               true         Job
certificatesigningrequests        csr          certificates.k8s.io/v1                 false        CertificateSigningRequest
leases                                         coordination.k8s.io/v1                 true         Lease
endpointslices                                 discovery.k8s.io/v1                    true         EndpointSlice
events                            ev           events.k8s.io/v1                       true         Event
flowschemas                                    flowcontrol.apiserver.k8s.io/v1beta2   false        FlowSchema
prioritylevelconfigurations                    flowcontrol.apiserver.k8s.io/v1beta2   false        PriorityLevelConfiguration
storageversions                                internal.apiserver.k8s.io/v1alpha1     false        StorageVersion
ingressclasses                                 networking.k8s.io/v1                   false        IngressClass
ingresses                         ing          networking.k8s.io/v1                   true         Ingress
networkpolicies                   netpol       networking.k8s.io/v1                   true         NetworkPolicy
runtimeclasses                                 node.k8s.io/v1                         false        RuntimeClass
poddisruptionbudgets              pdb          policy/v1                              true         PodDisruptionBudget
podsecuritypolicies               psp          policy/v1beta1                         false        PodSecurityPolicy
clusterrolebindings                            rbac.authorization.k8s.io/v1           false        ClusterRoleBinding
clusterroles                                   rbac.authorization.k8s.io/v1           false        ClusterRole
rolebindings                                   rbac.authorization.k8s.io/v1           true         RoleBinding
roles                                          rbac.authorization.k8s.io/v1           true         Role
priorityclasses                   pc           scheduling.k8s.io/v1                   false        PriorityClass
csidrivers                                     storage.k8s.io/v1                      false        CSIDriver
csinodes                                       storage.k8s.io/v1                      false        CSINode
csistoragecapacities                           storage.k8s.io/v1beta1                 true         CSIStorageCapacity
storageclasses                    sc           storage.k8s.io/v1                      false        StorageClass
volumeattachments                              storage.k8s.io/v1                      false        VolumeAttachment

参考


  • 先用起来,通过操作实践认识kubernetes(k8s),积累多了自然就理解了
  • 把理解的知识分享出来,自造福田,自得福缘
  • 追求简单,容易使人理解,知识的上下文也是知识的一部分,例如版本,时间等
  • 欢迎留言交流,也可以提出问题,一般在周末回复和完善文档
  • Jason@vip.qq.com 2022-4-9