赞
踩
yaml语言创建于2001年,支持整数、浮点数、布尔、字符串、数组和对象等数据类型。
在K8S中,yaml与json同时用于对资源的定义,与json相比,yaml的语法更加简洁,主要语法如下:
以下是使用yaml定义一个Deployment资源
apiVersion: apps/v1 kind: Deployment metadata: name: busy-box spec: replicas: 1 selector: matchLabels: app: busy-box template: metadata: labels: app: busy-box spec: containers: - name: busy-box image: busybox command: - /bin/sh - -c - sleep 3000
K8S中存在多个资源对象,可以使用以下命令查看
kubectl api-resources
pod是K8S中的最小管理单元,其本身是一组容器的集合,一组容器在pod内共享网络、存储等资源。
每一个pod在启动前会创建一个根容器,叫pause容器,主要作用是为了在业务容器启动前创建共享名称空间以及分配资源,并负责管理pod内其他容器的生命周期。
pod的生命周期包括以下几个阶段:
可以使用以下命令创建一个pod:
kubectl run pod-demo --image=nginx
pod定义文件由五个部分组成,分别是:
apiVersion: v1 # 接口版本 kind: Pod # 资源名称 metadata: # 元数据信息 annotations: # 注释信息 cni.projectcalico.org/podIP: 10.64.104.50/32 # 网络插件自动补充注释,部分网络插件可以通过修改注释的方式调整功能 cni.projectcalico.org/podIPs: 10.64.104.50/32 # 网络插件自动补充注释,部分网络插件可以通过修改注释的方式调整功能 ovn.kubernetes.io/logical_router: ovn-cluster # 网络插件自动补充注释,部分网络插件可以通过修改注释的方式调整功能 ovn.kubernetes.io/pod_nic_type: veth-pair # 网络插件自动补充注释,部分网络插件可以通过修改注释的方式调整功能 creationTimestamp: "2023-11-20T09:49:09Z" generateName: busybox-5f98dbbb9b- # 可选参数,用于自动生成唯一名称 labels: # 资源标签,用于与其他资源进行关联 app: busybox pod-template-hash: 5f98dbbb9b name: busybox-5f98dbbb9b-7bvct # 资源名称 namespace: default # 资源所属名称空间 ownerReferences: # 表示此资源是由其他资源自动生成,以下是属主的信息(系统自动生成) - apiVersion: apps/v1 blockOwnerDeletion: true controller: true kind: ReplicaSet # 属主资源名 name: busybox-5f98dbbb9b # 属主名 uid: 5cd1df23-687e-4bba-9c7f-6ac1601f1e3b # 唯一id(系统自动生成) resourceVersion: "505879" # 资源版本(系统自动生成) uid: f42ae3e3-9455-4257-8f95-4c3f9e4b84bd # 唯一id(系统自动生成) spec: # 定义容器模板 containers: # 定义容器模板 - args: # 命令参数 - /bin/sh - -c - sleep 10; touch /tmp/healthy; sleep 30000 image: busybox # 镜像地址 imagePullPolicy: Always # 重启策略 name: busybox # 容器名称 readinessProbe: # 定义就绪探针 exec: command: - cat - /tmp/healthy failureThreshold: 3 initialDelaySeconds: 10 periodSeconds: 5 successThreshold: 1 timeoutSeconds: 1 resources: {} # 定义资源分配 terminationMessagePath: /dev/termination-log terminationMessagePolicy: File volumeMounts: # 定义文件挂载 - mountPath: /var/run/secrets/kubernetes.io/serviceaccount name: kube-api-access-772v6 readOnly: true dnsPolicy: ClusterFirst # 定义dns策略 enableServiceLinks: true nodeName: node2 # 定义运行在哪个主机 preemptionPolicy: PreemptLowerPriority priority: 0 restartPolicy: Always # 定义重启策略 schedulerName: default-scheduler securityContext: {} # 定义安全上下文 serviceAccount: default serviceAccountName: default terminationGracePeriodSeconds: 30 # 容器停止宽限期 tolerations: - effect: NoExecute key: node.kubernetes.io/not-ready operator: Exists tolerationSeconds: 300 - effect: NoExecute key: node.kubernetes.io/unreachable operator: Exists tolerationSeconds: 300 volumes: # 数据卷信息 - name: kube-api-access-772v6 projected: defaultMode: 420 sources: - serviceAccountToken: expirationSeconds: 3607 path: token - configMap: items: - key: ca.crt path: ca.crt name: kube-root-ca.crt - downwardAPI: items: - fieldRef: apiVersion: v1 fieldPath: metadata.namespace path: namespace status: # 当前运行状态 conditions: - lastProbeTime: null lastTransitionTime: "2023-11-20T09:51:16Z" status: "True" type: Initialized - lastProbeTime: null lastTransitionTime: "2023-12-04T13:15:32Z" status: "True" type: Ready - lastProbeTime: null lastTransitionTime: "2023-12-04T13:15:32Z" status: "True" type: ContainersReady - lastProbeTime: null lastTransitionTime: "2023-11-20T09:51:16Z" status: "True" type: PodScheduled containerStatuses: - containerID: containerd://29103e04c2a6cb8e545e12eeabc4dd7bdf17904c4f3d1775af5e4b5e8bde6ebb image: docker.io/library/busybox:latest imageID: docker.io/library/busybox@sha256:3fbc632167424a6d997e74f52b878d7cc478225cffac6bc977eedfe51c7f4e79 lastState: terminated: containerID: containerd://72c879dd6772addbe07e61b3ce388294ad7611a81058b86e38a974a7f51f4e5b exitCode: 255 finishedAt: "2023-12-04T13:14:58Z" reason: Unknown startedAt: "2023-12-01T06:10:19Z" name: busybox ready: true restartCount: 9 started: true state: running: startedAt: "2023-12-04T13:15:21Z" hostIP: 192.168.129.130 phase: Running podIP: 10.64.104.50 podIPs: - ip: 10.64.104.50 qosClass: BestEffort startTime: "2023-11-20T09:51:16Z"
精简后如下,以下文件即可独立启动一个pod
apiVersion: v1 # 接口版本 kind: Pod # 资源名称 metadata: # 元数据信息 labels: # 资源标签,用于与其他资源进行关联 app: busybox name: busybox-5f98dbbb9b-7bvct # 资源名称 namespace: default # 资源所属名称空间 spec: # 定义容器模板 containers: # 定义容器模板 - args: # 命令参数 - /bin/sh - -c - sleep 10; touch /tmp/healthy; sleep 30000 image: busybox # 镜像地址 imagePullPolicy: Always # 重启策略 name: busybox # 容器名称 readinessProbe: # 定义就绪探针 exec: command: - cat - /tmp/healthy failureThreshold: 3 initialDelaySeconds: 10 periodSeconds: 5 successThreshold: 1 timeoutSeconds: 1
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。