jk's notes
  • 声明式对象配置

声明式对象配置

云原生的代表技术:

  • 容器
  • 服务网格
  • 微服务
  • 不可变基础设施
  • 声明式 API

K8s 管理方式:

  1. 命令式. 使用 kubectl 来发起命令.
  2. 声明式. 使用 yaml 文件来进行配置.

命令行简单高效, 但对于可重复的复杂编排命令就不那么方便了. 使用 yaml 可以很容易的进行编排定义.

常用缩写命令:

image-20230730155129849

Yaml 规范

逻辑上与 XML, JSON 一样. 只是语法形式不同.

  • 缩进代表上下级关系. 缩进不允许使用 tab, 一般使用 2 个空格.
  • : 表示键值对, 后面必须有空格.
  • - 是列表, 后边必须有空格.
  • [] 表示数组.
  • # 是注释.
  • | 是多行文本块.
  • --- 表示文档的开始, 用于分割多个资源对象.

基本要求:

  • 会修改
  • 能看懂

对于创建在 Kubernetes 文档中会有示例. 一般一个配置对象包含:

  1. apiVersion - 用于描述 Kubernetes API 版本.
  2. kind - 用于描述对象类别, 例如: Pod, Deployment, Service, 和 ReplicaSet 等.
  3. metadata - 用于描述对象元数据, 包括 name, UID, 以及 namespace 等.
  4. spec - 对象的具体配置. 每一个对象的配置可能不同.

例如: 使用 Pod

apiVersion: v1
kind: Pod
metadata:
  name: nginx
spec:
  containers:
  - name: nginx
    image: nginx:1.14.2
    ports:
    - containerPort: 80

所以还是要看官方文档.

使用 yaml 文件

使用 yaml 来创建服务使用 apply 子命令

kubectl apply -f <yaml配置文件>

删除可以使用 delete 子命令 加 -f 参数指定 yaml 文件.

kubectl delete -f <yaml配置文件>

标签 (Label)

也是 K8s 中的重要对象.

label 用于补充对象的描述信息. 一般用于在搜索指定的对象. 例如创建服务时, 过滤一组 Pod 作为后端服务

标签语法

还是要看文档

  • 字符长度不允许超过 63
  • 由 [a-zA-Z0-9] 的字符构成
  • 特殊字符仅有: -, _, 和 . 可用

例如:

apiVersion: v1
kind: Pod
metadata:
  name: label-demo
  labels:
    environment: production
    app: nginx
spec:
  containers:
  - name: nginx
    image: nginx:1.14.2
    ports:
    - containerPort: 80

这里为 Pod 定义了两个标签

  • environment: production
  • app: nginx

用法

可以为 Pod 打上标签, 在创建服务的时候, 通过指定标签选择器, 找到 Pod 作为服务背后的资源.

首先, 使用上述 yaml 创建服务.

image-20230730164518187

可以使用 kubectl describe pod my-pod2 来查看详情:

image-20230730164702991

然后创建 my-service.yaml, 使用下面配置

apiVersion: v1
kind: Service
metadata:
  name: my-service
spec:
  type: NodePort
  selector:
    app: nginx
  ports:
    - port: 80
      targetPort: 80
      nodePort: 30007

然后应用:

image-20230730165343408

从描述可以看到后端端点只有一个. 也可以使用下面命令查看:

kubectl get pod -l "app=nginx" -owide

这里 -l 是指标签过滤器.

标签选择语法

标签选择语法有两种

  • 基于等值判断
  • 基于集合判断

等值判断如前面示例, 直接写即可.

基于集合的示例为:

image-20230730165822578

参考官方文档

Last Updated:
Contributors: jk