一、Pod 定义

apiVersion: v1
kind: Pod
metadata:
  name: my-pod
  labels:
    app: my-app
spec:
  containers:
  - name: my-container
    image: my-image
    ports:
    - containerPort: 8080
  1. apiVersion:指定 Kubernetes API 的版本,对于 Pod 通常是 v1

  2. kind:表明资源的类型,这里是 Pod

  3. metadata:包含 Pod 的元数据信息。
    
    • name:Pod 的名称,在集群中必须是唯一的。
    • labels:用于标识 Pod 的标签,可以用于选择器和分组。
  4. spec:定义 Pod 的具体规格。
    
    • containers:列出 Pod 中的容器。
      
      • name:容器的名称。

      • image:容器使用的镜像名称。

      • ports:容器暴露的端口列表。
        
        • containerPort:容器内部监听的端口号。

二、Deployment 定义

apiVersion: apps/v1
kind: Deployment
metadata:
  name: my-deployment
spec:
  replicas: 3
  selector:
    matchLabels:
      app: my-app
  template:
    metadata:
      labels:
        app: my-app
    spec:
      containers:
      - name: my-container
        image: my-image
        ports:
        - containerPort: 8080
  1. apiVersion:对于 Deployment,通常是 apps/v1

  2. kind:资源类型为 Deployment

  3. metadata:
    
    • name:Deployment 的名称。
  4. spec:
    
    • replicas:指定要创建的 Pod 副本数量。
    • selector:用于选择要管理的 Pod 的标签选择器。
    • template:定义 Pod 的模板,与 Pod 的定义类似。

三、Service 定义

apiVersion: v1
kind: Service
metadata:
  name: my-service
spec:
  selector:
    app: my-app
  ports:
  - protocol: TCP
    port: 80
    targetPort: 8080
  type: ClusterIP
  1. apiVersion:通常是 v1

  2. kind:资源类型为 Service

  3. metadata:
    
    • name:Service 的名称。
  4. spec:
    
    • selector:选择要关联的 Pod 的标签。

    • ports
      

      :定义服务的端口。

      • protocol:协议类型,通常是 TCPUDP
      • port:服务对外暴露的端口。
      • targetPort:后端 Pod 上的端口。
    • type:服务的类型,可以是 ClusterIPNodePortLoadBalancer 等。