使用Kubectl部署应用 api
Kubectl部署流程 app
部署一个简单的Demo网站 网站
一旦运行了Kubernetes集群,就能够在其上部署容器化应用程序。所以在开始以前,咱们须要先确保集群已经准备就绪,不管是使用Minikube仍是kubeadm建立的集群。spa
接下来,咱们讲述使用Deployment(部署)对象来部署一个简单网站。code
使用Kubectl的部署流程以下所示:对象
接下来咱们根据这个流程部署一个简单的Demo网站。blog
这里,咱们能够经过建立Kubernetes Deployment对象来运行应用程序。那么咱们须要编写一个YAML文件来定义Deployment对象。资源
在开始以前,咱们须要对Deployment对象的配置有初步的了解。官方介绍文档以下所示:文档
https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.15/#deployment-v1-apps字符串
根据官方标准,咱们定义了一个简单的Deployment配置:
apiVersion: apps/v1 #API对象版本,可经过“kubectl api-versions”命令查看
kind: Deployment #资源类型,区分大小写,可经过“kubectl api-resources”命令查看,这里使用Deployment对象
metadata: #标准的元数据
name: demo-deployment #当前Deployment对象名称,同一个命名空间下必须惟一
spec: #部署规范(目标),Deployment控制器会根据此模板调整当前Pod到最终的指望状态
replicas: 5 # Pod数量,这里指运行5个Pod selector: #选择器,其定义了Deployment控制器如何找到要管理的Pod matchLabels: #匹配标签 app: demo #待匹配的标签键值对 template: # Pod模板定义 metadata: #标准的元数据 labels: #Pod标签 app: demo #定义Pod标签,由键值对组成 spec: #Pod规范 containers: #容器列表,Pod中至少有一个容器 - name: demo #容器名称 image: microsoft/dotnet-samples:aspnetapp #镜像地址 ports: #端口列表 - containerPort: 80 #设置容器端口
如上面定义所示,咱们定义了一个简单的部署示例,它将使用建立一个ReplicaSet对象以利用复制控制器建立5个Pod来运行“dotnet-samples”。
YAML文件准备好了,接下来咱们来执行建立:
kubectl create -f deployment-demo.yaml
结合配置,这里有几个重点说明一下:
如上面配置所示,部署名称为“demo-deployment”。
此部署对象将建立5个复制的Pod,由replicas字段决定。如上图所示该部署建立了5个Pod。
selector字段定义了Deployment控制器如何找到要管理的Pod,因此标签的键值对必定不能出错。
template字段则定义了Pod模板,其子字段labels定义了Pod 的标签,spec字段则定义了容器。
执行建立部署以后,咱们能够经过命令“kubectl get Deployment demo-deployment”来检查部署对象是否已经建立,部署是否已经完成:
如上图所示,上述字段分别表明:
READY表明是否已就绪,左侧数字表示当前已运行的副本数,右侧表示所需的副本数。
UP-TO-DATE表示已更新已实现预期状态的副本数。
AVAILABLE则表示用户可使用的应用程序副本数。
AGE表示应用已运行的时间。
通用的,咱们能够运行如下命令来查看副本集(ReplicaSet)对象:
kubectl get ReplicaSets -lapp=demo
经过上图可知,咱们建立Deployment对象的过程实际上就是生成对应的副本集对象(Replica Set)并完成Pod副本的建立过程。
值得注意的是,副本集的名称格式为[部署名称]-[随机字符串]。随机字符串是随机生成的,并使用pod-template-hash做为种子。如何查看pod-template-hash呢?使用以下命令便可:
kubectl get pods -lapp=demo --show-labels
如上图所示,5个Pod已经部署完成。