← Back to Index

headless service with router

本文讲述,如果service是headless的情况下,k8s/ocp ingress如何处理,和普通headless有什么区别。

演示视频

结论是,不管是是不是headless service, openshift都会找到最终的pod ip,然后在ingress/router/haproxy里面,修改配置,让流量直接导向pod ip。


        # 这里是演示环境部署脚本
        
        cat << EOF > headless.yaml
        ---
        apiVersion: apps/v1
        kind: Deployment
        metadata:
          name: slb-001
        spec:
          replicas: 1
          selector: 
            matchLabels: 
              pod: slb-001
          template: 
            metadata: 
              labels: 
                pod: slb-001
            spec:
              restartPolicy: Always
              
              containers:
              - name: slb-001-pg
                image: registry.redhat.ren:5443/docker.io/etherpad/etherpad:latest
                imagePullPolicy: IfNotPresent
        
        ---
        apiVersion: v1
        kind: Service
        metadata:
          name: slb-001-service
        spec:
          selector:
            pod: slb-001
          ports:
            - port: 9001
              protocol: TCP
              targetPort: 9001
        ---
        apiVersion: v1
        kind: Service
        metadata:
          name: slb-002-service
        spec:
          selector:
            pod: slb-001
          clusterIP: None
          ports:
            - port: 9001
              protocol: TCP
              targetPort: 9001
        
        ---
        kind: Route
        apiVersion: route.openshift.io/v1
        metadata:
          name: slb-001
        spec:
          to:
            kind: Service
            name: slb-001-service
          port:
            targetPort: 9001
        ---
        kind: Route
        apiVersion: route.openshift.io/v1
        metadata:
          name: slb-002
        spec:
          to:
            kind: Service
            name: slb-002-service
          port:
            targetPort: 9001
        EOF
        oc apply -n demo -f headless.yaml