本节将通过YAML格式的资源文件部署应用程序。首先,创建一个名为“deploymentnginx-3.yaml”的资源文件,内容如下:
创建Deployment资源:
[root@k8s-master ~]# kubectl create -f deployment-nginx-3.yaml
查看Deployment和Pod对象:
接下来,创建一个名为“service-nginx-3.yaml”的资源文件,内容如下:
创建Service资源:
[root@k8s-master ~]# kubectl create -f service-nginx-3.yaml
查看Service对象:
在浏览器中访问“http://<节点IP地址>:32006”,你将看到Nginx欢迎页面。
小结:有多种方式可以在Kubernetes集群上部署应用程序,如下所示。
(1)Dashboard:通过图形界面进行应用程序的部署和管理,它支持一些常见资源的操作。Dashboard仅支持图形界面创建Deployment和Service资源。
(2)kubectl命令行:kubectl工具专用于管理Kubernetes集群,几乎支持所有资源类型的管理。在创建资源方面,kubectl命令行仅支持部分常见资源及有限的参数设置,适用于简单、快速的部署场景。
(3)定义资源文件:通过定义YAML格式的资源文件进行应用程序的部署和管理,支持所有资源类型的配置,适用于复杂的部署场景。
这些方式不是相互排斥的,可以根据具体情况和个人偏好进行结合使用。目前,定义资源文件方式应用最为广泛。由于在定义资源文件时涉及的字段较多,初次接触可能会感到一定的难度。其实,定义资源文件也是有一些技巧的,如下所示。
在官方文档(https://kubernetes.io/zh-cn/docs/home/)进行搜索。以资源类型(如deployment、service)作为关键字,在结果的文章中获取资源配置的示例代码,然后可以参考编写、复制或修改。
使用“kubectl create”命令结合“--dry-run=client -o yaml”参数导出相应的资源配置。该命令在没有实际应用的情况下执行模拟操作,并以YAML格式输出创建资源的配置,然后可以参考这些配置进行编写、复制或修改。以下是导出Deployment和Service资源配置的示例:
kubectl create deployment web --image=nginx --replicas=3 --dry-run=client -o yaml > deployment-template.yaml kubectl create service nodeport web --tcp=80:80 --dry-run=client -o yaml > service-template.yaml
关于“--dry-run”参数,有以下3个取值。
(1)none:默认值,等同于不使用“--dry-run”,kubectl将正常执行。
(2)client:kubectl在本地客户端验证请求并返回验证结果,不在集群中实际执行。
(3)server:kubectl将请求发送到API Server,由API Server验证请求并返回验证结果,不在集群中实际执行。
在定义资源文件时,如果不了解某些字段的作用,你可以使用“kubectl explain”命令来获取资源的文档。例如查看Deployment资源的文档,示例如下:
# 查看顶级字段说明 kubectl explain deployment # 查看资源规格下的字段说明 kubectl explain deployment.spec # 查看Pod规格下的字段说明 kubectl explain deployment.spec.template.spec # 查看Pod容器配置下的字段说明 kubectl explain deployment.spec.template.spec.containers