kubenetes 通过YAML配置文件管理资源使用技巧 – 21运维
通知: .-...

kubenetes 通过YAML配置文件管理资源使用技巧

K8S 21运维 393浏览

关于如何使用好yaml文件,了解组成部分以后,恐怕最好的熟练方式就是多写多用了。


一,yaml组成

一般分三个部分:
1,第一部分是apiversion版本
2,资源种类kind。说明要创建的资源是一个什么类型的资源。
3,对象元数据的声明。对上述资源的meta对象元数据,包含对象名称name,标签labels,命名空间namespace等。
4,具体对象的规格spec。
规格比较重要,也是内容比较繁多的,比如rs版本数量,labels,选择器,image,端口信息,资源limit,重启策略,dns指定等等


二,配置文件技巧说明

1,定义配置时,指定最新稳定版API;API版本可以通过命令kubectl api-versions查看到
2,配置文件应该存储在集群之外的版本控制仓库中。如果需要,可以快速回滚配置、重新创建和恢复;例如git。
3,该使用YAML格式编写配置文件,而不是JSON。尽管这些格式都可以使用,但YAML对用户更加友好;

命令kubectl get pod [pod name] -o yaml可以看到yaml化的pod编排内容;手工搞一个resource,我们可以加参数–export 

 kubectl   get  deploy  nginx   --export  -o yaml  >  nginx-pod.yaml

对nginx-pod.yaml进行文件编辑,可以实现一个旧resource的更新或新resource的创建。

4,可以将相关对象组合成单个文件,通常会更容易管理; 不同对应通过三个短横线进行间隔。
5,不要没必要的指定默认值,简单和最小配置减少错误。 尤其是默认值,不建议写上,弄的文件很大,可读性很繁琐。
6,在注释中说明一个对象描述更好维护,增强可读性。 和shell一样,# 表示注释。

 

案例:
1,创建nginx-deployment.yaml来编排nginx服务:

文件内容

apiVersion: apps/v1
kind: Deployment
metadata:
  name: nginx-deployment
  namespace:default
  labels:
      app:nginx
spec:
  replicas: 3
  selector:
    matchLabels:
      app: nginx
  template:
    metadata:
      labels:
        app: nginx
    spec:
      containers:
      - name: nginx
      image: nginx:1.10
      ports:
      - containerPort: 80

解释
apiVersion: apps/v1:指定了api的版本,是通过kubectl api-versions命令列出的。
kind: Deployment:指定资源类型
metadata:
name: nginx-deployment
namespace:default
labels:
app:nginx

源数据部分,name指定了资源的名称,namespace指定了命令空间(默认为default可以不指定),labels指定标签

 

 

规格部分如下:

spec:
  replicas: 3
  selector:
    matchLabels:
      app: nginx
  template:
    metadata:
      labels:
        app: nginx
    spec:
      containers:
      - name: nginx
        image: nginx:1.10
        ports:
        - containerPort: 80

控制器和容器的选项:
replicas指定了副本数;
selector表示选择器,matchLabels表示控制器匹配pod的标签。

template:指定了创建pod的参数,其中metadata是元数据。spec是容器的选项,containers定义容器参数,name指定容器名称,image指定使用的镜像,containerPort指定容器端口。

2,服务发布文件
还需要创建一个nginx-service.yaml文件来发布服务(当然这两个文件也可以合并为一个文件)

[[email protected] test]# cat test_svc.yaml 
apiVersion: v1
kind: Service
metadata:
  name: test-service
spec:
  ports:
  - port: 90
    targetPort: 80
  selector:
    app: nginx1.10

3,通过kubectl  create  -fYAML文件创建资源
通过命令kubectl create -f nginx-deployment.yaml 来创建资源deploy以及kubectl create -f test-service.yaml 来创建service。

[[email protected] test]# kubectl  get svc
NAME            TYPE        CLUSTER-IP       EXTERNAL-IP   PORT(S)        AGE
kubernetes      ClusterIP   10.254.0.1               443/TCP        20d
nginx-service   NodePort    10.254.218.227           80:30680/TCP   4d5h
test-service    ClusterIP   10.254.84.227            90/TCP         8m56s

这样,可以从集群内部就可以使用 curl 10.254.84.227:90 来访问发布的资源了。

文章转载于https://blog.csdn.net/sinat_35930259/article/details/80069291 并针对愿文章做了一部分修改。

转载请注明:21运维 » kubenetes 通过YAML配置文件管理资源使用技巧