K8s创建Service与创建Deployment

参考样例

创建Service

配置myName-service.yaml:

apiVersion: v1
# 类型为Service
kind: Service
# 元数据
metadata:
  # Service的名称
  name: myName
  # 标签key-value键值对
  labels:
    app: myName
# 声明
spec:
  # 端口
  ports:
    # Service在集群内部暴露的端口
  - port: 80
    # 内部端口映射到Pod暴露出的端口
    targetPort: 80
    # 端口名称(标识类型)
    name: http
    # 对外暴露的端口号。不指定,则随机生成
    nodePort: 30000
  # 选择器
  selector:
    # 指定label中app=myName的Pod都归属于当前Service
    app: myName
  # Service类型,NodePort类型可以对外暴露。
  # 不指定的话,则默认为ClusterIP,只能集群内部访问
  type: NodePort  

创建Deployment

配置myName-deploy.yaml:

apiVersion: extensions/v1beta1
kind: Deployment
metadata:
  labels:
    app: myName
  # 决定了Pod的显示名称
  name: myName
spec:
  # 副本个数。若为3,k8s会保证pod个数为3个,少了就增加,多了就删除
  replicas: 1
  template:
    metadata:
      labels:
        # 标识Pod,在Service中的selector指定匹配label为app:myName
        app: myName
      name: myName
    spec:
      # Pod中包含的容器
      containers:
        # 项目容器
      - name: myName
        imagePullPolicy: IfNotPresent
        image: $image
        env:
        - name: PRODUCTION_NGINX
          value: "1"
        - name: PRODUCTION_SETTINGS
          value: "1"
        ports:
          # 容器暴露的端口
        - containerPort: 8000
          name: http-8000
        volumeMounts:
        - name: nginx-config
          mountPath: /mnt/nginx
        - name: static
          mountPath: /mnt/static
        # Nginx容器
      - name: nginx
        image: nginx:1.16
        ports:
        - containerPort: 80
          name: http
        volumeMounts:
        - name: nginx-config
          mountPath: /etc/nginx/conf.d
        - name: static
          mountPath: /usr/share/nginx/html
      volumes:
      - name: static
        emptyDir: {}
      - name: nginx-config
        emptyDir: {}
Logo

K8S/Kubernetes社区为您提供最前沿的新闻资讯和知识内容

更多推荐