使用Kubernetes管理容器化应用
- Kubernetes简介
- 安装Kubernetes
- 安装Minikube
- 启动Minikube集群
- 创建一个简单的Web应用
- 创建项目目录
- 初始化项目
- 安装Node.js依赖
- 创建Docker镜像
- 编写Dockerfile
- 构建并推送Docker镜像
- 创建Kubernetes配置文件
- 创建Deployment
- 创建Service
- 应用Kubernetes配置
- 验证部署
- 使用Helm简化部署
- 安装Helm
- 创建Chart
- 安装Chart
- 使用Dashboard
- 启动Dashboard
- 总结
Kubernetes(简称K8s)是目前最流行的容器编排工具之一,它可以帮助用户自动部署、扩展和管理容器化应用。本文将详细介绍如何使用Kubernetes来管理一个简单的容器化应用。
Kubernetes是一个开源平台,最初由Google设计并贡献给社区,旨在简化容器化应用的部署和管理。Kubernetes可以自动调度容器到集群中的节点,并且能够保证容器按照预期的方式运行。 在开始之前,你需要有一个Kubernetes集群。如果你没有现成的集群,可以使用Minikube在本地环境中创建一个。 访问Minikube的官方文档(https://minikube.sigs.k8s.io/docs/start/),根据你的操作系统安装Minikube。 使用以下命令启动一个Minikube集群。minikube start
为了演示Kubernetes的工作方式,我们将创建一个简单的Web应用。
在你的机器上创建一个新的目录,并进入该目录。
mkdir k8s-demo && cd k8s-demo
我们将使用一个简单的Node.js应用作为例子。
cat > app.js <<EOF
const http = require('http');
const hostname = '127.0.0.1';
const port = 3000;
const server = http.createServer((req, res) => {
res.statusCode = 200;
res.setHeader('Content-Type', 'text/plain');
res.end('Hello Kubernetes!\n');
});
server.listen(port, hostname, () => {
console.log(`Server running at http://${hostname}:${port}/`);
});
EOF
安装必要的Node.js依赖。
npm init -y
npm install express
为了让应用能够在Kubernetes中运行,我们需要将其容器化。
创建一个Dockerfile,用于构建容器镜像。
FROM node:14-alpine
WORKDIR /usr/src/app
COPY package*.json ./
RUN npm install
COPY . .
EXPOSE 3000
CMD ["node", "app.js"]
构建并推送镜像到Docker Hub或私有仓库。
docker build -t k8s-demo .
docker push k8s-demo
为了让Kubernetes知道如何部署和管理我们的应用,我们需要创建几个配置文件。
创建一个名为
deployment.yaml
的文件,定义应用的部署规则。
apiVersion: apps/v1
kind: Deployment
metadata:
name: k8s-demo
spec:
replicas: 3
selector:
matchLabels:
app: k8s-demo
template:
metadata:
labels:
app: k8s-demo
spec:
containers:
- name: k8s-demo
image: k8s-demo
ports:
- containerPort: 3000
创建一个名为
service.yaml
的文件,定义应用的服务暴露规则。
apiVersion: v1
kind: Service
metadata:
name: k8s-demo
spec:
selector:
app: k8s-demo
ports:
- protocol: TCP
port: 80
targetPort: 3000
type: NodePort
使用
kubectl
命令行工具来应用配置文件。
kubectl apply -f deployment.yaml
kubectl apply -f service.yaml
等待几分钟,让Kubernetes集群处理你的请求。
kubectl get pods
kubectl get svc
一旦Pods和Services处于运行状态,你就可以通过服务的NodePort来访问应用。
minikube service k8s-demo --url
Helm是一个Kubernetes的应用包管理器,类似于APT或YUM。
访问Helm的官方文档(https://helm.sh/docs/intro/install/),根据你的操作系统安装Helm。
创建一个Chart文件夹,并填充必要的文件。
helm create k8s-demo-chart
cd k8s-demo-chart
使用Helm安装Chart。
helm install k8s-demo-release .
Kubernetes Dashboard是一个用户界面,可以用来管理集群中的资源。
使用
kubectl
启动Dashboard。
kubectl proxy
然后访问http://localhost:8001/api/v1/namespaces/kubernetes-dashboard/services/http:kubernetes-dashboard:/proxy/
来打开Dashboard。