Kubernetes 是当前最流行的容器编排系统,它提供了一种简单而强大的方式来管理容器化应用程序的部署、扩展和更新。虽然 Kubernetes 自带了一些命令行工具来管理集群,但是这些工具并不是每个人都能够使用或熟悉的,因此 Kubernetes 还提供了一个基于 Web 的 Dashboard,以便更直观地管理和监控 Kubernetes 集群的各个方面。
安装 Kubernetes Dashboard
Kubernetes Dashboard 可以通过 Helm Chart 或者直接运行一个 YAML 文件来安装。以下是使用 YAML 文件安装 Kubernetes Dashboard 的步骤:
下载 Kubernetes Dashboard YAML 文件:
$ wget https://raw.githubusercontent.com/kubernetes/dashboard/v2.0.0/aio/deploy/recommended.yaml
打开 YAML 文件,查找
kubernetes-dashboard
部分,并取消注释type: ClusterIP
和type: NodePort
,这将使 Kubernetes Dashboard 可以通过 NodePort 或者集群内部 IP 访问。安装 Kubernetes Dashboard:
$ kubectl apply -f recommended.yaml
等待 Kubernetes Dashboard 的 Pod 运行。可以使用以下命令检查状态:
$ kubectl get pods -n kube-system -l k8s-app=kubernetes-dashboard
创建一个 ClusterRoleBinding,以便通过 Kubernetes Dashboard 的 Service Account 登录 Kubernetes Dashboard:
$ kubectl apply -f - <<EOF apiVersion: rbac.authorization.k8s.io/v1 kind: ClusterRoleBinding metadata: name: kubernetes-dashboard roleRef: apiGroup: rbac.authorization.k8s.io kind: ClusterRole name: cluster-admin subjects: - kind: ServiceAccount name: kubernetes-dashboard namespace: kube-system EOF
获取 Kubernetes Dashboard 的登录令牌:
$ kubectl -n kube-system describe secret $(kubectl -n kube-system get secret | grep kubernetes-dashboard | awk '{print $1}')
打开浏览器,并进入 Kubernetes Dashboard 页面。登录后可以查看 Kubernetes 集群的各种资源和状态。
Kubernetes Dashboard 的主要功能
Kubernetes Dashboard 提供了以下主要功能:
集群资源概览
Kubernetes Dashboard 提供了一个集群概览页面,可以查看集群的已部署的各类资源的总数、状态、CPU 和内存使用情况等信息,并提供了一些常用的集群操作,如创建命名空间、部署应用程序、扩展 Deployment 和 StatefulSet 等。
Pod 详情
Kubernetes Dashboard 提供了一个 Pod 详情页面,可以查看一个 Pod 在集群中所运行的所有容器的日志、资源使用情况、事件和标签等信息,并提供了一些常用的 Pod 操作,如重新启动、删除和修改环境变量等。
部署详情
Kubernetes Dashboard 提供了一个 Deployment 和 StatefulSet 详情页面,可以查看一个部署在集群中的所有 Pod,以及它们的状态、日志、资源使用情况和事件等信息,并提供了一些常用的部署操作,如扩展、收缩、重新部署和滚动更新等。
服务和 Ingress 路由
Kubernetes Dashboard 提供了一个服务和 Ingress 路由页面,可以查看集群中的所有服务和 Ingress 路由,并了解它们各自的状态、IP 地址、端口和暴露的服务等信息。
示例代码
以下是一个使用 Node.js 和 Express.js 搭建的简单的 Web 应用程序,它可以通过 Kubernetes Dashboard 部署到 Kubernetes 集群中:
const express = require('express') const app = express() const port = process.env.PORT || 3000 app.get('/', (req, res) => { res.send('Hello, World!') }) app.listen(port, () => { console.log(`App listening at http://localhost:${port}`) })
要将此应用程序部署到 Kubernetes 集群中,请按照以下步骤操作:
创建一个 Dockerfile 文件:
FROM node:10 WORKDIR /app COPY package*.json ./ RUN npm install COPY . . EXPOSE 3000 CMD [ "npm", "start" ]
构建 Docker 镜像:
$ docker build -t <your_username>/node-web-app .
推送 Docker 镜像到 Docker Hub:
$ docker push <your_username>/node-web-app
创建一个简单的 Deployment:
apiVersion: apps/v1 kind: Deployment metadata: name: node-web-app-deployment spec: replicas: 3 selector: matchLabels: app: node-web-app template: metadata: labels: app: node-web-app spec: containers: - name: node-web-app image: <your_username>/node-web-app ports: - containerPort: 3000
创建一个 Service,将 Deployment 暴露给集群内部:
apiVersion: v1 kind: Service metadata: name: node-web-app-service spec: selector: app: node-web-app ports: - protocol: TCP port: 80 targetPort: 3000 type: NodePort
使用 Kubernetes Dashboard 或者 kubectl 命令启动 Deployment 和 Service:
$ kubectl apply -f deployment.yaml $ kubectl apply -f service.yaml
打开浏览器,并进入 Kubernetes Dashboard 页面,查看刚刚创建的部署和服务的状态。接下来可以使用 Kubernetes Dashboard 或者 kubectl 命令扩展、收缩、升级和管理这个应用程序。
总结
Kubernetes Dashboard 是一个可以更直观地管理和监控 Kubernetes 集群的强大工具。本文介绍了如何安装 Kubernetes Dashboard,以及它的主要功能,并提供了一个使用 Node.js 和 Express.js 构建的 Web 应用程序的示例。如果你是一名 Kubernetes 用户或者开发人员,那么 Kubernetes Dashboard 将成为你必不可少的工具之一。
来源:JavaScript中文网 ,转载请注明来源 本文地址:https://www.javascriptcn.com/post/65a8c39dadd4f0e0ff1f4b8b