使用 k8s 快速部署应用服务
以下是一个完整的例子,展示了如何使用Kubernetes部署一个简单的Web应用程序。这个例子包括一个Deployment和一个Service。
首先,创建一个名为webapp-deployment.yaml
的Deployment配置文件:
apiVersion: apps/v1 kind: Deployment metadata: name: webapp-deployment spec: replicas: 2 selector: matchLabels: app: webapp template: metadata: labels: app: webapp spec: containers: - name: webapp image: nginx:latest ports: - containerPort: 80
这个Deployment配置将创建一个名为webapp-deployment
的Deployment,它包含两个副本的Pods,每个Pod都运行一个Nginx容器,监听80端口。
接下来,创建一个名为webapp-service.yaml
的Service配置文件:
apiVersion: v1 kind: Service metadata: name: webapp-service spec: selector: app: webapp ports: - protocol: TCP port: 80 targetPort: 80 type: LoadBalancer
这个Service配置将创建一个名为webapp-service
的Service,它将外部请求的80端口转发到标签为app: webapp
的Pods的80端口。type: LoadBalancer
指示云提供商为Service提供一个外部可访问的负载均衡器。
现在,使用kubectl
命令来创建这些资源:
kubectl apply -f webapp-deployment.yaml
kubectl apply -f webapp-service.yaml
检查Deployment和Pods的状态:
kubectl get deployment webapp-deployment
kubectl get pods -l app=webapp
检查Service的状态,并获取外部访问的IP地址(如果是LoadBalancer类型):
kubectl get service webapp-service
如果一切正常,你应该能够看到Pods正在运行,Service已经分配了一个外部IP地址。你可以通过浏览器访问这个IP地址来查看Nginx的默认欢迎页面。
如果你需要更新应用程序,比如使用一个新版本的Nginx镜像,你只需要更新webapp-deployment.yaml
文件中的镜像标签,并重新应用配置:
containers:
- name: webapp
image: nginx:1.19.0 # 更新为新的镜像版本
ports:
- containerPort: 80
然后运行:
kubectl apply -f webapp-deployment.yaml
Kubernetes将执行滚动更新,逐步替换旧的Pods,而不会中断服务。
请记住,这个例子假设你已经有一个Kubernetes集群在运行,并且你的kubectl配置正确。如果你使用的是云服务提供商的Kubernetes服务,LoadBalancer类型的Service将自动为你创建一个外部负载均衡器。如果你在本地或没有负载均衡器的环境中运行,你可能需要使用NodePort或其他方法来暴露你的服务。