以下是K3s Yaml配置文件中常见属性的说明:

  • apiVersion:Kubernetes API 版本
  • kind:资源类型,通常为 DeploymentPodService
  • metadata:元数据字段,包括 name(资源名称)、namespace(命名空间)、labels(标签)等
  • spec:规范字段,用于定义资源的规范
  • containers:在 Pod 中定义容器的列表
    • name:容器名称
    • image:容器使用的镜像
    • ports:容器所使用的端口配置
  • replicas:在 Deployment 中定义的副本数量
  • selector:在 Service 中定义用于选择 Pod 的标签
  • type:在 Service 中定义服务类型,如 ClusterIPNodePortLoadBalancer
  • nodeSelector:在 Pod 中定义用于选择节点的标签
  • affinity:用于定义调度规则以控制 Pod 的调度
    • nodeAffinity:节点亲和性规则
      • requiredDuringSchedulingIgnoredDuringExecution:必需的调度规则
        • nodeSelectorTerms:节点选择器规则
          • matchExpressions:匹配表达式
            • key:节点标签的键
            • operator:匹配操作符,如 InNotInExists
            • values:节点标签的值列表
  • tolerations:容忍规则,用于定义在特定节点上运行 Pod 时容忍的 Taints
  • serviceAccountName:指定要在 Pod 中使用的 Service Account
  • volumes:定义 Pod 使用的卷
    • name:卷名称
    • emptyDir:空目录卷
    • hostPath:主机路径卷
    • persistentVolumeClaim:持久卷声明

除了上述常见属性外,还有其他可配置的字段和属性,具体取决于不同的资源类型和您的应用需求。您可以参考 Kubernetes 官方文档获得更详细的配置信息(https://kubernetes.io/docs/concepts/overview/working-with-objects/kubernetes-objects/)

以下是一个pod yaml例子:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
apiVersion: apps/v1
kind: Deployment
metadata:
name: my-deployment # 部署的名称
spec:
replicas: 3 # 副本数量
selector:
matchLabels:
app: MyApp # 标签选择器
template:
metadata:
labels:
app: MyApp # Pod 标签
spec:
containers:
- name: my-container # 容器的名称
image: my-image # 容器使用的镜像
ports: # 容器端口配置
- containerPort: 80 # 容器监听的端口
nodeSelector:
kubernetes.io/hostname: node1 # 选择要运行 Pod 的节点
affinity: # 调度规则
nodeAffinity:
requiredDuringSchedulingIgnoredDuringExecution:
nodeSelectorTerms:
- matchExpressions:
- key: disktype # 节点标签的键
operator: In # 操作符
values:
- ssd # 节点标签的值
tolerations: # 容忍规则
- key: "nodeType" # 容忍规则的键
operator: "Exists" # 操作符
effect: "NoSchedule" # 容忍规则的效果
volumes: # 卷配置
- name: my-volume # 卷的名称
emptyDir: {} # 空目录卷