如何创建管理员用户以访问Kubernetes仪表板

时间:2020-02-23 14:30:19  来源:igfitidea点击:

Kubernetes仪表板是基于Web的用户界面,用于将容器化的应用程序部署到Kubernetes集群Deployments,Jobs,StatefulSets,DaemonSets等,并管理集群资源,同时能够解决可能出现的问题。我们可以使用仪表板来概述群集上运行的应用程序。

本教程将讨论如何创建可以访问所有Kubernetes资源的管理员用户。管理员用户可以修改所有命名空间中的对象,也可以管理集群中的任何其他组件。

建立管理员服务帐户

让我们从创建服务帐户列表文件开始。该服务帐户名称为jmutai-admin。

$vim admin-sa.yml
--
apiVersion: v1
kind: ServiceAccount
metadata:
  name: jmutai-admin
  namespace: kube-system

其中jmutai-admin是要创建的服务帐户的名称。

创建文件后,应用列表在kubernetes集群中创建对象。

$kubectl apply -f admin-sa.yml
serviceaccount/jmutai-admin created
clusterrolebinding.rbac.authorization.k8s.io/jmutai-admin created

创建群集角色绑定

接下来是分配服务帐户,创建一个群集角色,绑定cluster-admin。

$vim admin-rbac.yml
--
apiVersion: rbac.authorization.k8s.io/v1
kind: ClusterRoleBinding
metadata:
  name: jmutai-admin
roleRef:
  apiGroup: rbac.authorization.k8s.io
  kind: ClusterRole
  name: cluster-admin
subjects:
  - kind: ServiceAccount
    name: jmutai-admin
    namespace: kube-system

将jmutai-admin替换为我们在中创建的服务帐户的名称。

应用文件。

$ kubectl apply -f admin-rbac.yml

取得管理员使用者凭证

我们可以使用kubectl命令为服务帐户打印生成的令牌。

设置一个变量来存储服务帐户的名称。

SA_NAME="jmutai-admin"

然后运行以下命令以为创建的admin用户打印令牌。

kubectl -n kube-system describe secret $(kubectl -n kube-system get secret | grep ${SA_NAME} | awk '{print }')

输出:

Name:         jmutai-admin-token-mm9jd
Namespace:    kube-system
Labels:       <none>
Annotations:  kubernetes.io/service-account.name: jmutai-admin
              kubernetes.io/service-account.uid: 80fade4b-4270-11ea-9fe4-005056ba45bd

Type:  kubernetes.io/service-account-token

Data
====
token:      eyJhbGciOiJSUzI1NiIsImtpZCI9IiJ9.eyJpc7MiOiJrdWJlcm5ldGVzL3NlcnZpY2VhY2NvdW50Iiwia3ViZXJuZXRlcy5pby9zZXJ2aWNlYWNjb3VudC9uYW1lc3BhY2UiOiJrdWJlLXN5c3RlbSIsImt1YmVybmV0ZXMuaW8vc2VydmljZWFjY291bnQvc2VjcmV0Lm5hbWUxOiJqa211dGFpLWFkbWluLXRva2VuLW1tOWpkIiwia3ViZXJuZXRlcy5pby9zZXJ2aWNlYWNjb3VudC9zZXJ2aWNlLWFjY291bnQubmFtZSI6ImprbXV0YWktYWRtaW4iLCJrdWJlcm5ldGVzLmlvL3NlcnZpY2VhY2NvdW50L3NlcnZpY2UtYWNjb3VudC51aWQiOiI4MGZhZGU0Yi00MjcwLTExZWEtOWZlNC0wMDUwNTZiYTQ1YmQiLCJzdWIiOiJzeXN0ZW06c2VydmljZWFjY291bnQ6a3ViZS1zeXN0ZW06amttdXRhaS1hZG1pbiJ9.uMC2ydeHF4jVA5tnKFbBeHRvc4NWqL920jigk2FDeduUdBuFhsNyDcscmL-pBbWHG5KKwOAEuAAeyNaknaHsDadNnbLpp4AMZTTdr22FEp-_v7MfIEQm3QWmq-c0ykpdrzUzGmk5Q3JIpfqeorDI0lZd52-DF4IVMw3VtTNp6ZMHdieQUNRnCEyfs98raCTRAotiXZQaMvmRW5s9peu5hfxM71jufg-Qzmflr9nO-dY2dOHh1WZcKhJqfNfB73GYX2TQlUlurV4Oy0-2CpUUpJ1HAjcSHzKGuSrMUAMAhRwhbZZXhwvbQ6Ei_9Vv2PkD8_Pw9c-k9x-bblFSAqyFhA
ca.crt:     1025 bytes
namespace:  11 bytes

复制令牌密钥中的内容。

访问Kubernetes仪表板

创建令牌后,我们可以使用它访问Kubernetes仪表板。如果使用NodePort访问仪表板服务,则可以通过发出命令来获取分配的端口。

$kubectl get services -n <namespace> | grep dashboard
kubernetes-dashboard   NodePort    10.111.76.69    <none>        443:32254/TCP                   414d

对于我来说,我将在端口32254上任何群集计算机的IP地址上访问Kubernetes仪表板。

选择令牌身份验证类型,然后粘贴令牌以访问仪表板。

最好的Kubernetes精通课程。

创建非管理员用户帐户

我们创建了一个管理员用户帐户,该帐户具有对群集资源的完全访问权限。