如何使用NodePort安装Kubernetes仪表板

时间:2020-02-23 14:31:35  来源:igfitidea点击:

Kubernetes仪表板是基于Web的用户界面,它提供有关Kubernetes群集资源的状态以及可能发生的任何错误的信息。仪表板可用于将容器化的应用程序部署到群集,对部署的应用程序进行故障排除以及群集资源的常规管理。

可以从仪表板或者使用kubectl在终端上完成Deployment,StatefulSet,DaemonSet,Jobs,Services和Ingress的部署。如果要扩展部署,启动滚动更新,重新启动Pod,创建持久卷和持久卷声明,则可以从Kubernetes仪表板执行所有操作。

另请查看有关使用Active Directory验证Kubernetes仪表板用户的文章

第1步:配置kubectl

很好地使用kubectl kubernetes管理工具将仪表板部署到Kubernetes集群。我们可以使用下面的教程配置kubectl。

使用kubectl和kubectx轻松管理多个Kubernetes集群

链接中的教程演示了如何使用相同的kubectl配置文件配置和访问多个集群。

部署Kubernetes仪表板

默认的Dashboard部署包含运行所需的最少的RBAC特权集。我们可以使用以下命令部署Kubernetes仪表板。

kubectl apply -f https://raw.githubusercontent.com/kubernetes/dashboard/master/aio/deploy/recommended.yaml

这将使用默认值进行部署。如果要对文件进行一些修改,则必须将其下载到本地计算机上。

wget https://raw.githubusercontent.com/kubernetes/dashboard/master/aio/deploy/recommended.yaml
mv recommended.yaml kubernetes-dashboard-deployment.yml

修改文件以适合部署需求。

vim kubernetes-dashboard-deployment.yml

修改Kubernetes仪表板服务为NodePort类型。

kind: Service
apiVersion: v1
metadata:
  labels:
    k8s-app: kubernetes-dashboard
  name: kubernetes-dashboard
  namespace: kubernetes-dashboard
spec:
  ports:
    - port: 443
      targetPort: 8443
  selector:
    k8s-app: kubernetes-dashboard
  type: NodePort

NodePort在静态端口(NodePort)上的每个节点IP上公开服务。将自动创建NodePort服务路由到的ClusterIP服务。

完成后应用更改:

kubectl apply -f kubernetes-dashboard-deployment.yml

检查部署状态:

$kubectl get deployments -n kubernetes-dashboard                              
NAME                        READY   UP-TO-DATE   AVAILABLE   AGE
dashboard-metrics-scraper   1/1     1            1           86s
kubernetes-dashboard        1/1     1            1           86s

应该创建两个Pod,一个用于仪表盘,另一个用于度量。

$kubectl get pods -n kubernetes-dashboard
NAME                                         READY   STATUS    RESTARTS   AGE
dashboard-metrics-scraper-7b64584c5c-xvtqp   1/1     Running   0          2m4s
kubernetes-dashboard-566f567dc7-w59rn        1/1     Running   0          2m4s

由于我将服务类型更改为NodePort,因此请确认该服务是否实际上已创建。

$kubectl get service -n kubernetes-dashboard       

NAME                        TYPE        CLUSTER-IP      EXTERNAL-IP   PORT(S)         AGE
dashboard-metrics-scraper   ClusterIP   10.43.133.26    <none>        8000/TCP        2m59s
kubernetes-dashboard        NodePort    10.43.150.245   <none>        443:30038/TCP   3m

访问Kubernetes仪表板

为我的服务部署分配了端口30038/TCP。让我们确认是否可以访问仪表板。

我们需要令牌才能访问仪表板,请查看我们的教程:

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

创建限于一个命名空间的Kubernetes服务/用户帐户

我们应该看到一个类似于以下内容的网络仪表板。

Nginx入口:

--
apiVersion: extensions/v1beta1
kind: Ingress
metadata:
  name: k8s-dashboard
  namespace: kubernetes-dashboard
  annotations:
    nginx.ingress.kubernetes.io/secure-backends: "true"
    nginx.ingress.kubernetes.io/ssl-passthrough: "true"
spec:
  tls:
    - hosts:
      - k8sdash.mydomain.com
      secretName: tls-secret
  rules:
    - host: k8sdash.mydomain.com
      http:
        paths:
        - path: /
          backend:
            serviceName: kubernetes-dashboard
            servicePort: 443