K8S 使用 Deployment 运行一个无状态应用:Nginx

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了K8S 使用 Deployment 运行一个无状态应用:Nginx相关的知识,希望对你有一定的参考价值。

参考技术A 你必须拥有一个 Kubernetes 的集群,同时你的 Kubernetes 集群必须带有 kubectl 命令行工具。

如果你还没有集群,参考 用 kubeadm 在 Debian 或 Ubuntu 中创建 k8s 集群 。

你可以通过创建一个 Kubernetes Deployment 对象来运行一个应用,且你使用 yaml 格式的文件创建一个 Deployment 的配置文件。例如, 下面是一个运行 nginx:1.14.2 Docker 镜像的 Deployment 的配置文件:

deployment.yaml

使用 yaml 文件创建一个 Deployment:

显示 Deployment 相关信息:

输出:

列出 Deployment 创建的 Pods:

输出:

显示某一个 Pod 信息:

这里的 <pod-name> 是某一 Pod 的名称。

你可以通过更新一个新的 YAML 文件来更新 Deployment。下面的 YAML 文件指定该 Deployment 镜像更新为 nginx 1.16.1。

deployment-update.yaml

应用新的 YAML:

查看该 Deployment 以新的名称创建 Pods 同时删除旧的 Pods:

你可以通过应用新的 YAML 文件来增加 Deployment 中 Pods 的数量。 下面的 YAML 文件将 replicas 设置为 4,指定该 Deployment 应有 4 个 Pods:

deployment-scale.yaml

应用新的 YAML 文件:

验证 Deployment 有 4 个 Pods:

输出:

通过名称删除 Deployment:

14,k8s 的deployment的使用

Deployment功能与应用场景:
	部署无状态应用
	管理Pod和ReplicaSet
	具有上线部署、副本设定、滚动升级、回滚等功能
	提供声明式更新,例如只更新一个新的Image
	应用场景:Web服务,微服务

使用Deployment部署一个应用:
创建
	kubectl create deployment web --image=nginx:1.14 --dry-run -o yaml >web.yml
	kubectl create deployment web --image=nginx:1.14 
	kubectl get deploy,pods

发布
	kubectl expose deployment web --port=80 --type=NodePort --target-port=80 --name=web
	kubectl get service
	
升级
	kubectl set image deployment/web nginx=nginx:1.15

查看升级状态
	kubectl rollout status deployment/web 

回滚
	kubectl rollout history deployment/web
	kubectl rollout undo deployment/web
	kubectl rollout undo deployment/web --revision=2

弹性伸缩
	kubectl scale deployment/web --replicas=10

Kubectl edit 在线更改,立即生效。 
Kubectl patch 打补丁

  

以上是关于K8S 使用 Deployment 运行一个无状态应用:Nginx的主要内容,如果未能解决你的问题,请参考以下文章

k8s 常用控制器development

K8S系列深入解析无状态服务

K8S-[二]Deployment控制器

K8S控制器

K8S控制器

14,k8s 的deployment的使用