使用K8S部署应用程序
在该YAML文件中,定义了需要创建的资源类型为 Deployment,在 metadata 中声明了该 Deployment的 名称以及标签。spec 中则定义了该 Deployment 的具体设置,通过 replicas 定义了该 Deployment 创建后将会自动创建 3 个 Pod 实例。运行的 Pod 以及进行则通过 template 进行定义。这里为了能够直接访问该 Service,需
·
创建一个名为 nginx-deployment.yml 文件:
apiVersion: apps/v1
kind: Deployment
metadata:
name: nginx-deployment
namespace: webapp
labels:
app: nginx
spec:
replicas: 3
selector:
matchLabels:
app: nginx
template:
metadata:
labels:
app: nginx
spec:
containers:
- name: nginx
image: nginx:alpine
ports:
- containerPort: 80
在该YAML文件中,定义了需要创建的资源类型为 Deployment,在 metadata 中声明了该 Deployment的 名称以及标签。spec 中则定义了该 Deployment 的具体设置,通过 replicas 定义了该 Deployment 创建后将会自动创建 3 个 Pod 实例。运行的 Pod 以及进行则通过 template 进行定义
# 创建 namespace
kubectl create ns <namespace>
kubectl create -f nginx-deployment.yml
这里提示镜像拉去失败,重新换了 nginx 镜像版本后成功启动,使用 describe 命令查看 pod 运行状态
kubectl describe pod nginx-deployment-f7ccf9478-ffrvj -n webapp
通过 kubectl get 命令查看当前 Deployment 的部署进度:
# 查看Deployment的运行状态
$ kubectl get deployments
为了能够让用户或者其它服务能够访问到 Nginx 实例,这里通过一个名为 nginx-service.yml 的文件定义 Service 资源:
# 部署时删除注释
apiVersion: v1
kind: Service
metadata:
name: nginx-service
spec:
type: NodePort // 配置NodePort,外部流量可访问k8s中的服务
ports:
- port: 30080 // 服务访问端口,集群内部访问的端口
targetPort: 80 // pod 控制器中定义的端口(应用访问的端口)
nodePort: 30002 // NodePort,外部客户端访问的端口
selector:
name: nginx-pod
默认情况下,Service 资源只能通过集群网络进行访问 (type=ClusterIP)。这里为了能够直接访问该 Service,需要将容器端口映射到主机上,因此定义该 Service 类型为 NodePort
kubectl create -f nginx-service.yml
kubectl get svc
其他命令:
# 部署完成后,如果需要对Nginx实例进行扩展,可以使用
kubectl scale deployments/nginx-deployment --replicas=4
# 对镜像进行滚动升级
kubectl set image deployment/nginx-deployment nginx=nginx:1.9.1
# 如果升级后服务出现异常,那么可以通过以下命令对应用进行回滚
kubectl rollout undo deployment/nginx-deployment
更多推荐
已为社区贡献3条内容
所有评论(0)