Dashboard 是基于网页的 Kubernetes 用户界面。您可以使用 Dashboard 将容器应用部署到Kubernetes 集群中,也可以对容器应用排错,还能管理集群本身及其附属资源。您可以使用Dashboard 获取运行在集群中的应用的概览信息,也可以创建或者修改 Kubernetes 资源(如Deployment,Job,DaemonSet 等等)。例如,可以对 Deployment 实现弹性伸缩、发起滚动升级、重启 Pod 或者使用向导创建新的应用。
官网地址
https://github.com/kubernetes/dashboard 下载配置文件
https://github.com/kubernetes/dashboard/blob/v2.0.3/aio/deploy/recommended.ya ml
安装镜像
kubernetsui下边的镜像不需要科学上网
docker pull kubernetesui/dashboard:v2.0.3
docker pull kubernetesui/metrics-scraper:v1.0.4
修改配置文件
控制器部分
179行左右
containers:
- name: kubernetes-dashboard
image: kubernetesui/dashboard:v2.0.3
imagePullPolicy: IfNotPresent
262行左右。新增下载策略
containers:
- name: dashboard-metrics-scraper
image: kubernetesui/metrics-scraper:v1.0.4
imagePullPolicy: IfNotPresent
service部分
默认Dashboard只能集群内部访问,修改Service为NodePort类型,暴露到外部访问。找到Services配置。在配置文件上边。增加type:NodePort和 nodePort:30100端口
kind: Service
apiVersion: v1
metadata:
labels:
k8s-app: kubernetes-dashboard
name: kubernetes-dashboard
namespace: kubernetes-dashboard
spec:
ports:
- port: 443
targetPort: 8443
nodePort: 30100
type: NodePort
selector:
k8s-app: kubernetes-dashboard
管理 Service Accounts
这是一篇针对service accounts(服务账户)的集群管理员指南。 它呈现了 User Guide to Service Accounts中的信息。
对授权和用户账户的支持已在规划中,当前并不完备,为了更好地描述 service accounts,有时这些不完善的特性也会被提及。
用户账户与服务账户
Kubernetes 区分用户账户和服务账户的概念主要基于以下原因:
1)User(用户账户)是针对人而言的。 service accounts(服务账户)是针对运行在 pod 中的进程而言的。
2)用户账户是全局性的。 其名称在集群各 namespace 中都是全局唯一的,未来的用户资源不会做namespace 隔离, 服务账户是 namespace 隔离的。
3)通常情况下,集群的用户账户可能会从企业数据库进行同步,其创建需要特殊权限,并且涉及到复杂的业务流程。 服务账户创建的目的是为了更轻量,允许集群用户为了具体的任务创建服务账户 (即权限最小化原则 )。
对人员和服务账户审计所考虑的因素可能不同。
针对复杂系统的配置可能包含系统组件相关的各种服务账户的定义。 因为服务账户可以定制化地创建,并且有 namespace 级别的名称,这种配置是很轻量的。
服务账户的自动化
三个独立组件协作完成服务账户相关的自动化 :
1)服务账户准入控制器(Service account admission controller)
2)Token 控制器(Token controller)
3)服务账户控制器(Service account controller)
服务账户准入控制器
对 pod 的改动通过一个被称为 Admission Controller 的插件来实现。它是 apiserver 的一部分。 当pod 被创建或更新时,它会同步地修改 pod。 当该插件处于激活状态 ( 在大多数发行版中都是默认的),当 pod 被创建或更新时它会进行以下动作:
- 如果该 pod 没有 ServiceAccount 设置,将其 ServiceAccount 设为 default。
- 保证 pod 所关联的 ServiceAccount 存在,否则拒绝该 pod。
- 如果 pod 不包含 ImagePullSecrets 设置,那么 将 ServiceAccount 中的 ImagePullSecrets 信息添加到 pod 中。
- 将一个包含用于 API 访问的 token 的 volume 添加到 pod 中。
- 将挂载于 /var/run/secrets/kubernetes.io/serviceaccount 的 volumeSource 添加到 pod下的每个容器中。
Token 管理器
Token 管理器是 controller-manager 的一部分。 以异步的形式工作:
1)检测服务账户的创建,并且创建相应的 Secret 以支持 API 访问。
2)检测服务账户的删除,并且删除所有相应的服务账户 Token Secret。
3)检测 Secret 的增加,保证相应的服务账户存在,如有需要,为 Secret 增加 token。
4)检测 Secret 的删除,如有需要,从相应的服务账户中移除引用。
你需要通过 --service-account-private-key-file 参数项传入一个服务账户私钥文件至 Token 管理器。 私钥用于为生成的服务账户 token 签名。 同样地,你需要通过 --service-account-key-file 参数将对应的公钥传入 kube-apiserver。 公钥用于认证过程中的 token 校验。
服务账户管理器
服务账户管理器管理各命名空间下的服务账户,并且保证每个活跃的命名空间下存在一个名为 "default"的服务账户
Dashboard新增用户
可以选择使用资源文件方式或者命令行方式为dashboard新建具有管理集群角色的用户。
使用资源文件方式新增用户
在配置文件下边增加用户及给用户授予集群管理员角色
---
apiVersion: v1
kind: ServiceAccount
metadata:
labels:
k8s-app: kubernetes-dashboard
name: dashboard-admin
namespace: kubernetes-dashboard
---
apiVersion: rbac.authorization.k8s.io/v1
kind: ClusterRoleBinding
metadata:
name: dashboard-admin-cluster-role
roleRef:
apiGroup: rbac.authorization.k8s.io
kind: ClusterRole
name: cluster-admin
subjects:
- kind: ServiceAccount
name: dashboard-admin
namespace: kubernetes-dashboard
使用命令行方式新增用户
创建service account并绑定默认cluster-admin管理员集群角色:
创建用户
kubectl create serviceaccount dashboard-admin -n kube-system
用户授权
kubectl create clusterrolebinding dashboard-admin --clusterrole=cluster- admin --serviceaccount=kube-system:dashboard-admin
kubectl delete clusterrolebinding dashboard-admin -n kube-system
删除用户
kubectl delete sa dashboard-admin -n kube-system
部署dashboard
部署完dashboard服务,可以选在使用token认证方式登录或者kubeconfig认证方式登录dashboard。
kubectl apply -f .
kubectl get pods -n kubernetes-dashboard -o wide
kubectl get svc -n kubernetes-dashboard
kubectl delete -f .
token认证方式
分步查看token信息
1.根据命名空间找到我们创建的用户
kubectl get sa -n kubernetes-dashboard
2.查看我们创建用户的详细信息。找到token属性对应的secret值
kubectl describe sa dashboard-admin -n kubernetes-dashboard
kubectl describe secrets dashboard-admin-token-9pl4b -n kubernetes-dashboard
3.或者是根据命名空间查找secrets。获得dashboard-admin用户的secret。
kubectl get secrets -n kubernetes-dashboard
kubectl describe secrets dashboard-admin-token-9pl4b -n kubernetes-dashboard
快速查看token信息
kubectl -n kubernetes-dashboard describe secret $(kubectl -n kubernetes-
dashboard get secret | grep dashboard-admin | awk '{print $1}')
浏览器访问
注意:是https方式访问
https://192.168.198.156:30100/
kubeConfig认证方式
以下命令可以一起执行。可以更改dashboard-admin.conf的生成目录。关键点还是要首先或者 dashboard-admin用户的secret值。
DASH_TOCKEN=$(kubectl get secret -n kubernetes-dashboard dashboard-admin- token-jdvkg -o jsonpath={.data.token}|base64 -d)
kubectl config set-cluster kubernetes --server=192.168.198.156:6443 -- kubeconfig=/root/dashboard-admin.conf
kubectl config set-credentials dashboard-admin --token=$DASH_TOCKEN -- kubeconfig=/root/dashboard-admin.conf
kubectl config set-context dashboard-admin@kubernetes --cluster=kubernetes - -user=dashboard-admin --kubeconfig=/root/dashboard-admin.conf
kubectl config use-context dashboard-admin@kubernetes -- kubeconfig=/root/dashboard-admin.conf
将生成的dashboard-admin.conf上传到windows系统中。浏览器选择dashboard-admin.conf文 件即可用于登录dashboard
网友评论