K8s配置–YAML文件

内容分享2个月前发布
0 0 0

K8s配置–YAML文件

我们和k8s交互的方式有2种:

  1. kubectl命令。
  2. YAML文件。

k8s提议使用声明式操作。更适合精细化处理的场景。告知k8s的某个资源对象,我们期望它达到的状态,用kubectl apply 命令让k8s读取文件,还会自动把资源对象的当前状态修改成期望的状态。

说到声明式就对应命令式。直接下达命令,列如创建,删除某个资源对象。如果有并发,多人一起操作,就有可能出错。由于没有操作记录。

YAML文件

所以,k8s最常用的声明式文件类型是YAML文件。

优势

  1. 数据结构:支持复杂的数据结构。如:列表 字典。可以在一个文件里定义多个相互关联的资源对象。
  2. 文本格式: 纯文本格式,方便编辑,存储,也便于版本管理。
  3. 可重用: 可以在不同的环境(开发,生产) 声明不同的YAML文件。

语法

说了这么多好处,YAML文件到底怎么写呢?

缩进

它有点像Python 是靠缩进来表明数据的层级关系。每个层级缩进是2个空格。

pkey:
  ckey:value

注释

单行注释:也和Python一样 # 。

多行:— 三个横杠。

基础数据类型

如:整形,浮点数,Bool值,Null,字符串(除非包含特殊字符串,一般不用引号),等

列表

(-)表明列表元素,新起一行。

list_key:
- item1
- item2
- sub_list:
  - sub_item1
  - sub_item2

K-V 键值对

key:value 使用(:)和空格进行分隔。

key 是字符串,value 支持基础数据类型,也支持复合类型。


k8s资源对象的yaml文件一般都会有这些常用key

  • apiVersion: api版本,控制k8s用哪个api模式来解析文件。
  • kind:资源对象的类型,Pod, Service, Deployment之类的。
  • metadata: 一些基本信息, 名称,命名空间,标签,注解之类的。
  • spec:资源对象期望状态及特殊属性,像镜像,端口,PV之类的。

示例:

# nginx-pod.yaml
apiVersion: v1
kind: Pod
metadata:
  name: nginx-pod
  labels:
    app: nginx
spec:
  containers:
    - name: nginx-container
      image: nginx:latest # latest表明使用镜像的最新版本
      ports:
        - containerPort: 80

可以通过“kubectl create” 命令创建 Deployment 的 YAML 文件模板。

kubectl create deployment my-nginx-deploy --image=nginx --dry-run=client -o yaml > my-nginx-deploy.yaml

使用YAML文件

编写完,怎么用呢?

在用yaml之前 可以先验证一下,看看文件是否有错。

kubectl apply -f--dry-run <YAML文件名>

如果没有问题才使用。

kubectl apply -f <YAML文件名>

删除YAML文件中所 部署的全部资源对象。

kubectl delete -f <YAML文件名>
© 版权声明

相关文章

暂无评论

none
暂无评论...