部署 dashboard 插件

说明:本部署文章参照了 https://github.com/opsnull/follow-me-install-kubernetes-cluster ,欢迎给做者star

注意:若是没有特殊指明,本文档的全部操做均在 k8s-master1 节点上执行。node

修改配置文件

下载的 kubernetes-server-linux-amd64.tar.gz 解压后,再解压其中的 kubernetes-src.tar.gz 文件。linux

dashboard 对应的目录是:cluster/addons/dashboardgit

cd /opt/k8s/work/kubernetes/cluster/addons/dashboard
$ cat dashboard-service.yaml
apiVersion: v1
kind: Service
metadata:
  name: kubernetes-dashboard
  namespace: kube-system
  labels:
    k8s-app: kubernetes-dashboard
    kubernetes.io/cluster-service: "true"
    addonmanager.kubernetes.io/mode: Reconcile
spec:
  type: NodePort # 增长这一行
  selector:
    k8s-app: kubernetes-dashboard
  ports:
  - port: 443
    targetPort: 8443
  • 指定端口类型为 NodePort,这样外界能够经过地址 nodeIP:nodePort 访问 dashboard;

执行全部定义文件

$ ls *.yaml
dashboard-configmap.yaml  dashboard-controller.yaml  dashboard-rbac.yaml  dashboard-secret.yaml  dashboard-service.yaml

$ kubectl create -f  .

 

查看分配的 NodePort

[root@k8s-master1 dashboard]# kubectl get deployment kubernetes-dashboard  -n kube-system -o wide
NAME                   READY   UP-TO-DATE   AVAILABLE   AGE     CONTAINERS             IMAGES                                          SELECTOR
kubernetes-dashboard   1/1     1            1           5m39s   kubernetes-dashboard   k8s.gcr.io/kubernetes-dashboard-amd64:v1.10.1   k8s-app=kubernetes-dashboard

若是kubernetes-dashboard-amd64:v1.10.1 镜像拉取失败,可在全部工做节点执行github

images=(
    kubernetes-dashboard-amd64:v1.10.1
)

for imageName in ${images[@]} ; do
    docker pull registry.cn-hangzhou.aliyuncs.com/google_containers/$imageName
    docker tag registry.cn-hangzhou.aliyuncs.com/google_containers/$imageName k8s.gcr.io/$imageName
done

 

  • NodePort 32014 映射到 dashboard pod 443 端口;

dashboard 的 --authentication-mode 支持 token、basic,默认为 token。若是使用 basic,则 kube-apiserver 必须配置 '--authorization-mode=ABAC' 和 '--basic-auth-file' 参数。docker

 

建立登陆 Dashboard 的 token 和 kubeconfig 配置文件

Dashboard 默认只支持 token 认证,因此若是使用 KubeConfig 文件,须要在该文件中指定 token,不支持使用 client 证书认证。api

建立登陆 token

kubectl create sa dashboard-admin -n kube-system
kubectl create clusterrolebinding dashboard-admin --clusterrole=cluster-admin --serviceaccount=kube-system:dashboard-admin
ADMIN_SECRET=$(kubectl get secrets -n kube-system | grep dashboard-admin | awk '{print $1}')
DASHBOARD_LOGIN_TOKEN=$(kubectl describe secret -n kube-system ${ADMIN_SECRET} | grep -E '^token' | awk '{print $2}')
echo ${DASHBOARD_LOGIN_TOKEN}

使用输出的 token 登陆 Dashboard。app

 

source /opt/k8s/bin/environment.sh
# 设置集群参数
kubectl config set-cluster kubernetes \
  --certificate-authority=/etc/kubernetes/cert/ca.pem \
  --embed-certs=true \
  --server=${KUBE_APISERVER} \
  --kubeconfig=dashboard.kubeconfig

# 设置客户端认证参数,使用上面建立的 Token
kubectl config set-credentials dashboard_user \
  --token=${DASHBOARD_LOGIN_TOKEN} \
  --kubeconfig=dashboard.kubeconfig

# 设置上下文参数
kubectl config set-context default \
  --cluster=kubernetes \
  --user=dashboard_user \
  --kubeconfig=dashboard.kubeconfig

# 设置默认上下文
kubectl config use-context default --kubeconfig=dashboard.kubeconfig

用生成的 dashboard.kubeconfig 登陆 Dashboard。ide

相关文章
相关标签/搜索