Service - daniel-qa/Azure-Kubernetes-Service GitHub Wiki

https://kubernetes.io/zh-cn/docs/tutorials/services/connect-applications-service/

Multip port

apiVersion: v1

kind: Service

metadata:

  name: my-nginx

  labels:

    run: my-nginx

spec:

  type: NodePort

  ports:

  - port: 8080

    targetPort: 80

    protocol: TCP

    name: http

  - port: 443

    protocol: TCP

    name: https

  selector:

    run: my-nginx

---

apiVersion: apps/v1

kind: Deployment

metadata:

  name: my-nginx

spec:

  selector:

    matchLabels:

      run: my-nginx

  replicas: 1

  template:

    metadata:

      labels:

        run: my-nginx

    spec:

      volumes:

      - name: secret-volume

        secret:

          secretName: nginxsecret

      - name: configmap-volume

        configMap:

          name: nginxconfigmap

      containers:

      - name: nginxhttps

        image: bprashanth/nginxhttps:1.0

        ports:

        - containerPort: 443

        - containerPort: 80

        volumeMounts:

        - mountPath: /etc/nginx/ssl

          name: secret-volume

        - mountPath: /etc/nginx/conf.d

          name: configmap-volume
  • ex1
---
apiVersion: v1
kind: Service
metadata:
  name: laravel
spec:
  type: LoadBalancer
  ports:
  - name: http
    port: 80
    targetPort: 80
  - name: https
    port: 443
    targetPort: 443
  selector:
    app: laravel
  • ex2
apiVersion: v1
kind: Service
metadata:
  name: service-name
spec:
  ports:
  - name: http
    port: 80
    targetPort: 80
  - name: https
    port: 443
    targetPort: 443
  - name: something
    port: 6001
    targetPort: 6001
  selector:
    app: app-label
  type: LoadBalancer

Service

透過 - name: http 來綁定 Service 的 port

多个端口的时候需要行业下面的例子一样指定port的name

  • Deployment Yaml
apiVersion: apps/v1
kind: Deployment
metadata:
  name: hello
spec:
  selector:
    matchLabels:
      app: hello
      tier: backend
      track: stable
  replicas: 7
  template:
    metadata:
      labels:
        app: hello
        tier: backend
        track: stable
    spec:
      containers:
        - name: hello
          image: "gcr.io/google-samples/hello-go-gke:1.0"
          ports:
            - name: http
              containerPort: 80
  • Service Yaml
kind: Service
apiVersion: v1
metadata:
  name: hello
spec:
  selector:
    app: hello
    tier: backend
  ports:
  - protocol: TCP
    port: 80
    targetPort: http

  • 內部 port
apiVersion: v1
kind: Service
metadata:
  name: php-fpm
spec:
  type: ClusterIP
  ports:
  - port: 9000
  selector:
    app: php-fpm