美文网首页
K8S的Dashboard

K8S的Dashboard

作者: david161 | 来源:发表于2022-03-26 09:45 被阅读0次

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 被创建或更新时它会进行以下动作:

  1. 如果该 pod 没有 ServiceAccount 设置,将其 ServiceAccount 设为 default。
  2. 保证 pod 所关联的 ServiceAccount 存在,否则拒绝该 pod。
  3. 如果 pod 不包含 ImagePullSecrets 设置,那么 将 ServiceAccount 中的 ImagePullSecrets 信息添加到 pod 中。
  4. 将一个包含用于 API 访问的 token 的 volume 添加到 pod 中。
  5. 将挂载于 /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

相关文章

网友评论

      本文标题:K8S的Dashboard

      本文链接:https://www.haomeiwen.com/subject/smzxjrtx.html