如何使用NodePort安装Kubernetes仪表板
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