kubernetes之Ingress发布Dashboard(二)

打印 上一主题 下一主题

主题 794|帖子 794|积分 2386

1.什么是Dashboard

Dashboard 是基于网页的 Kubernetes 用户界面。 你可以使用 Dashboard 将容器应用部署到 Kubernetes 集群中,也可以对容器应用排错,还能管理集群资源。 你可以使用 Dashboard 获取运行在集群中的应用的概览信息,也可以创建或者修改 Kubernetes 资源 (如 Deployment,Job,DaemonSet 等等)。 例如,你可以对 Deployment 实现弹性伸缩、发起滚动升级、重启 Pod 或者使用向导创建新的应用。
2. 使用Ingress对外发布Dashboard

默认安装完成的dashboard的访问方式是ClusterIP,进而想访问dashboard需更改为nodeport或者loadbalancer或者配置为ingress的方式才能访问dashbaord。本文将以ingress-nginx发布dashboard在外部访问。
2.1 查看dashboard默认的访问方式
  1. 我们可以看到默认是clusterip只能在集群内部访问,是无法在集群外部访问的。
  2. # kubectl get pods,svc -n kubernetes-dashboard
  3. NAME                                             READY   STATUS    RESTARTS   AGE
  4. pod/dashboard-metrics-scraper-7c857855d9-chmm9   1/1     Running   0          74m
  5. pod/kubernetes-dashboard-6b79449649-xgdph        1/1     Running   0          74m
  6. NAME                                TYPE        CLUSTER-IP      EXTERNAL-IP   PORT(S)    AGE
  7. service/dashboard-metrics-scraper   ClusterIP   10.96.129.181   <none>        8000/TCP   74m
  8. service/kubernetes-dashboard        ClusterIP   10.96.13.147    <none>        443/TCP    74m
复制代码
2.2 检查Ingress Controller是否正常。
  1. # kubectl get pods -n ingress-nginx
  2. NAME                             READY   STATUS    RESTARTS        AGE
  3. ingress-nginx-controller-bnmpt   1/1     Running   25 (3d2h ago)   18d
  4. ingress-nginx-controller-cfblk   1/1     Running   26 (3d1h ago)   18d
复制代码
2.3 创建自签证书,并创建tls类型Secrets

自签发证书。当然生产环境中理应当使用机构签发的证书。
  1. # openssl req -x509 -nodes -days 365 -newkey rsa:2048 -keyout kube-dashboard.key -out kube-dashboard.crt -subj "/CN=dashboard.kube.com/O=k8s.dashboard.local"
  2. Generating a 2048 bit RSA private key
  3. ......+++
  4. .......+++
  5. writing new private key to 'kube-dashboard.key'
  6. -----
  7. 创建tls类型的Secret为ingress提供配置。
  8. # kubectl create secret tls dashboard-tls --key kube-dashboard.key --cert kube-dashboard.crt -n kubernetes-dashboard
  9. secret/dashboard-tls created
  10. 查看secrets,可以看见类型为tls类型
  11. # kubectl get secret -n kubernetes-dashboard
  12. NAME                               TYPE                                  DATA   AGE
  13. dashboard-tls                      kubernetes.io/tls                     2      15h
  14. default-token-7d7z8                kubernetes.io/service-account-token   3      17h
  15. kubernetes-dashboard-certs         Opaque                                0      17h
  16. kubernetes-dashboard-csrf          Opaque                                1      17h
  17. kubernetes-dashboard-key-holder    Opaque                                2      17h
  18. kubernetes-dashboard-token-c2z56   kubernetes.io/service-account-token   3      17h
复制代码
2.4 配置Ingress规则。

Nginx Ingress Controller默认使用HTTP协议转发请求到后端业务容器。当您的业务容器为HTTPS协议时,可以通过使用注解nginx.ingress.kubernetes.io/backend-protocol: "HTTPS"来使得Nginx Ingress Controller使用HTTP协议转发请求到后端业务容器。
  1. # cat ingress-dashboard.yaml
  2. apiVersion: networking.k8s.io/v1   类型为v1
  3. kind: Ingress
  4. metadata:
  5.   name: dashboard-ingress
  6.   namespace: kubernetes-dashboard
  7.   annotations:
  8.     nginx.ingress.kubernetes.io/backend-protocol: "HTTPS"   #注意这里:必须指定后端服务为HTTPS服务。
  9. spec:
  10.   ingressClassName: "nginx"  控制器的类型为nginx
  11.   tls:
  12.   - hosts:   
  13.     - k8s.dashboard.local   主机名
  14.     secretName: dashboard-tls  这里引用创建的secrets
  15.   rules:
  16.   - host: k8s.dashboard.local   
  17.     http:
  18.       paths:
  19.       - path: /
  20.         pathType: Prefix   起始与根都进行代理。
  21.         backend:   
  22.           service:
  23.             name: kubernetes-dashboard   service名称
  24.             port:     后端端口
  25.               number: 443
  26. 加载配置文件          
  27. # kubectl apply -f ingress-dashboard.yaml
  28. ingress.networking.k8s.io/dashboard-ingress created
复制代码
2.5 检查Ingress配置文件
  1. # kubectl describe ingress -n kubernetes-dashboard
  2. Name:             dashboard-ingress
  3. Namespace:        kubernetes-dashboard
  4. Address:          xxxxx
  5. Default backend:  default-http-backend:80 (<error: endpoints "default-http-backend" not found>)
  6. TLS:
  7.   dashboard-tls terminates k8s.dashboard.local
  8. Rules:
  9.   Host                 Path  Backends
  10.   ----                 ----  --------
  11.   k8s.dashboard.local    可以看到后端的服务已被代理到。
  12.                        /   kubernetes-dashboard:443 (192.168.3.56:8443)
  13. Annotations:           nginx.ingress.kubernetes.io/backend-protocol: HTTPS
  14. Events:
  15.   Type    Reason  Age               From                      Message
  16.   ----    ------  ----              ----                      -------
  17.   Normal  Sync    6s (x2 over 54s)  nginx-ingress-controller  Scheduled for sync
复制代码
2.6 编辑本地hosts解析并访问UI
  1. echo "xxxxx k8s.dashboard.local"  >> /etc/hosts
复制代码

2.7 登陆dashboard



免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

x
回复

使用道具 举报

0 个回复

倒序浏览

快速回复

您需要登录后才可以回帖 登录 or 立即注册

本版积分规则

王國慶

金牌会员
这个人很懒什么都没写!

标签云

快速回复 返回顶部 返回列表