
本文共 4731 字,大约阅读时间需要 15 分钟。
Kubernetes 下 KUBERNETES DASHBOARD 的部署使用 HTTP 和 HTTPS 方式
作为 Kubernetes 集群的一部分,Kubernetes Dashboard 是一个非常实用的工具,用于管理和监控 Kubernetes 集群。在本文中,我们将分别介绍如何使用 HTTP 和 HTTPS 访问 Kubernetes API Server 来部署 KUBERNETES DASHBOARD。
使用 HTTP 访问 Kubernetes API Server 的部署
首先,让我们看一下如何使用 HTTP 方式访问 Kubernetes API Server 来部署 KUBERNETES DASHBOARD。这种部署方式通常用于简单场景,例如开发环境或者测试环境。
部署 YAML 配置文件
以下是 Kubernetes Cluster controller 部署 YAML 配置文件:
apiVersion: extensions/v1beta1kind: Deploymentmetadata: labels: k8s-app: kubernetes-dashboard kubernetes.io/cluster-service: "true" name: kubernetes-dashboard namespace: kube-systemspec: replicas: 1 selector: matchLabels: k8s-app: kubernetes-dashboard strategy: rollingUpdate: maxSurge: 1 maxUnavailable: 1 type: RollingUpdate template: spec: containers: - args: - --apiserver-host=http://192.168.20.128:8080 image: docker.io/googlecontainer/kubernetes-dashboard-amd64:v1.6.1 imagePullPolicy: IfNotPresent livenessProbe: failureThreshold: 3 httpGet: path: / port: 9090 scheme: HTTP initialDelaySeconds: 30 periodSeconds: 10 successThreshold: 1 timeoutSeconds: 30 name: kubernetes-dashboard ports: - containerPort: 9090 protocol: TCP resources: limits: cpu: 100m memory: 50Mi requests: cpu: 100m memory: 50Mi dnsPolicy: ClusterFirst restartPolicy: Always
将上述 YAML 配置文件保存为 dashboard-controller.yaml
,然后运行以下命令创建资源:
kubectl create -f dashboard-controller.yaml
服务配置
为了确保 Kubernetes DASHBOARD 可以被外部访问,我们需要配置 downward 向外的服务。以下是服务配置文件:
apiVersion: v1kind: Servicemetadata: name: kubernetes-dashboard namespace: kube-system labels: k8s-app: kubernetes-dashboard kubernetes.io/cluster-service: "true"spec: selector: k8s-app: kubernetes-dashboard ports: - port: 80 targetPort: 9090
将上述 YAML 配置文件保存为 dashboard-service.yaml
,然后运行以下命令创建资源:
kubectl create -f dashboard-service.yaml
使用 HTTPS 访问 Kubernetes API Server 的部署
在生产环境中,建议使用 HTTPS 访问 Kubernetes API Server。这不仅能加密通信,还能防止 MITM attacks。
1. 准备 SSL 证书
为了实现 HTTPS 访问,我们需要为 Kubernetes API server 配置 SSL 证书。假设你已经有一个 CA 证书和服务器证书,可以将这些文件分开放置于 /etc/ssl/kube
和 /etc/kubernetes/kubelet-config
目录中。
2. 部署控制器
以下是 HTTPS 访问方式下部署的 YAML 配置文件:
apiVersion: extensions/v1beta1kind: Deploymentmetadata: name: kubernetes-dashboard namespace: kube-system labels: k8s-app: kubernetes-dashboard kubernetes.io/cluster-service: "true"spec: selector: matchLabels: k8s-app: kubernetes-dashboard template: metadata: labels: k8s-app: kubernetes-dashboard annotations: scheduler.alpha.kubernetes.io/critical-pod: '' scheduler.alpha.kubernetes.io/tolerations: '[{"key":"CriticalAddonsOnly", "operator":"Exists"}]' spec: containers: - name: kubernetes-dashboard image: docker.io/googlecontainer/kubernetes-dashboard-amd64:v1.6.1 imagePullPolicy: IfNotPresent resources: limits: cpu: 100m memory: 512Mi requests: cpu: 100m memory: 128Mi livenessProbe: httpGet: path: / port: 9090 initialDelaySeconds: 30 timeoutSeconds: 30 ports: - containerPort: 9090 args: - --apiserver-host=https://192.168.20.128:6443 - --kubeconfig=/etc/kubernetes/kubelet-config volumeMounts: - name: config mountPath: /etc/kubernetes/kubelet-config readOnly: true - name: certs mountPath: /etc/ssl/kube readOnly: true volumes: - name: config hostPath: /etc/kubernetes/kubelet-config - name: certs hostPath: /etc/ssl/kube
将上述 YAML 配置文件保存为 dashboard-controller-https.yaml
,然后运行以下命令创建资源:
kubectl create -f dashboard-controller-https.yaml
3. 存储卷配置
为了实现 HTTPS 访问,还需要将 SSL 证书 挂载到 Controler 中。以下是 typical 的存储卷配置:
volumeMounts:- name: config mountPath: /etc/kubernetes/kubelet-config readOnly: true- name: certs mountPath: /etc/ssl/kube readOnly: true
访问地址
部署完成后,可以通过以下 URL 访问 Kubernetes DASHBOARD:
- HTTP 方式访问:
http://<NodeIP>:8080/ui
- HTTPS 方式访问:
https://<NodeIP>:6443/ui
其中 <NodeIP>
是 Kubernetes 集群中的任意一个节点 IP 地址。
注意事项
在配置 HTTPS 时,请确保所有节点都已经配置了相应的 SSL 证书。如果 API Server 的配置文件中没有配置基本身份验证(--basic-auth-file=/etc/kubernetes/useraccount.csv
),登录将失败。如果配置了,账号和密码分别位于 /etc/kubernetes/useraccount.csv
文件中。
此外,请确保 /etc/kubernetes/kubelet-config
和 /etc/ssl/kube
目录中含有相应的配置文件,否则可能导致无法登录。
如果你在实际操作中遇到问题,可以参考相关的 Kubernetes 文档或社区资源进行解决。
发表评论
最新留言
关于作者
