YAML是配置文件的格式,YAML文件中是由一些易读的字段和指令组成的。K8S使用YAML配置文件需要注意如下事项。
定义配置时,指定最新稳定版API(当前最新稳定版是v1版本)。最新版本的API可以通过kubectl api-versions命令进行查看,命令如下所示。前面创建kubernetes-dashboard时的yaml文件中指定的就是最新版本的API接口版本。
- 配置文件应该存储在集群之外的版本控制仓库中。如果需要,可以快速回滚配置、重新创建和恢复。
- 应该使用YAML格式编写配置文件,而不是使用JSON格式编写。尽管YAML和JSON格式都可以使用,但YAML格式的文件对用户更加友好。
- 可以将相关对象组合成单个文件,通过会更容易管理。部署UI时我给大家提供了三个yaml文件,而这三个yaml文件是我通过一个文件进行拆分后生成的。
- 不要指定没必要的默认值,简单和最小配置可以减少错误的发生。
- 在注释中说明一个对象的描述可以方便后期的管理与维护。
在前面的章节中给大家演示部署K8S-UI时使用到了yaml文件,但是yaml文件中的语法格式的作用没有和大家进行详细的讲解说明,下面我会用nginx-deployment的yaml文件来作为讲解,讲解文字说明如图1所示。
创建完nginx-deployment.yaml文件后可通过kubectl create -f命令指定yaml配置文件去创建资源,命令如下所示。
[root@master ~]# kubectl create -f nginx-deployment.yaml deployment "nginx-deployment" created[root@master ~]# kubectl get all[root@master ~]# kubectl describe deploy nginx-deployment
创建service.yaml文件,nginx-service.yaml文件内容如下所示。
[root@master ~]# vim nginx-service.yamlapiVersion: v1kind: Servicemetadata: name: nginx-service labels: app: nginxspec: ports: - port: 88 # 集群IP88端口 targetPort: 80 # 容器IP80端口 selector: app: nginx
发布nginx-service服务,通过kubectl describe svc指定nginx-service可查看IP地址,命令如下所示。
[root@master ~]# kubectl create -f nginx-service.yaml service "nginx-service" created[root@master ~]# kubectl get svcNAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGEkubernetes ClusterIP 10.10.10.1 443/TCP 4hnginx-service ClusterIP 10.10.10.221 88/TCP 1m[root@master ~]# kubectl describe svc nginx-service
通过curl命令指定发布的IP地址可查看Nginx的访问页面和Nginx版本信息,命令如下所示。
[root@node-2 ~]# curl -I 10.10.10.221:88HTTP/1.1 200 OKServer: nginx/1.10.3Date: Fri, 02 Mar 2018 15:58:57 GMTContent-Type: text/htmlContent-Length: 612Last-Modified: Tue, 31 Jan 2017 15:01:11 GMTConnection: keep-aliveETag: "5890a6b7-264"Accept-Ranges: bytes
同样可以通过日志查看刚才具体传送的请求信息,命令如下所示。
[root@master ~]# kubectl get podsNAME READY STATUS RESTARTS AGEnginx-f95d765f9-4298m 1/1 Running 0 14mnginx-f95d765f9-b8d7g 1/1 Running 0 14mnginx-f95d765f9-qpx4l 1/1 Running 0 14m[root@master ~]# kubectl logs nginx-f95d765f9-qpx4l192.168.10.6 - - [21/Apr/2018:13:34:02 +0000] "GET / HTTP/1.1" 200 612 "-" "ELinks/0.12pre6 (textmode; Linux; 113x28-2)" "-"192.168.10.6 - - [21/Apr/2018:13:41:57 +0000] "HEAD / HTTP/1.1" 200 0 "-" "curl/7.29.0" "-"