k8s外部访问内部的service

如果不指定Service的spec.type的值,创建的Service的类型默认为ClusterIP类型。这种类型的Service只会得到虚拟的IP和端口,只能在Kubernetes集群内部被访问。

如果指定Service的spec.type的值为“NodePort”,创建的Service的类型默认为NodePort类型。这种类型的Service除了会得到虚拟的IP和端口,Kubernetes还会在所有Node节点上为其分配端口。分配的端口的值可以通过spec.ports[*].nodePort指定,或由Knubernetes在配置好的区间里分配(默认为30000-32767)。这种Service即可以从Kubernetes集群通过虚拟IP:端口访问,也可以从集群外部通过Node节点的IP:nodePort访问


如果指定Service的spec.type的值为“LoadBalancer”,创建的Service的类型默认为LoadBalancer类型。这种类型的Service除了会得到虚拟的IP和端口,Kubernetes还会在所有Node节点上为其分配端口,然后为其开通负载均衡。这种Service即可以从Kubernetes集群通过虚拟IP:端口访问,也可以从集群外部通过Node节点的IP:nodePort访问,还可以通过负载均衡的IP访问。


pyxis-controller.yaml

apiVersion: v1

kind: ReplicationController

metadata:

  name: firmament-pyxis

  namespace: sky-firmament

  labels:

    app: firmament-pyxis

    version: v0.3

spec:

  replicas: 1

  selector:

    app: firmament-pyxis

  template:

    metadata:

      labels:

        app: firmament-pyxis

        version: v0.3

    spec:

      nodeName: gprsgx11

      containers:

      - name: firmament-pyxis

        image: reg.ai.cbbscloud.com:5000/pyxis:v0.3

        imagePullPolicy: Always

        env:

           - name: KUBERNETES_URL

             valueFrom:

               configMapKeyRef:

                 name: config

                 key: kubernetes.url

        resources:

          limits:

            cpu: 500m

            memory: 200Mi

          requests:

            cpu: 500m

            memory: 200Mi

        ports:

        - containerPort: 8080

        volumeMounts:

          - name: kubectl-path

            mountPath: /usr/bin/kubectl

      volumes:

        - name: kubectl-path

          hostPath:

            path: /usr/bin/kubectl


pyxis-service.yaml

apiVersion: v1

kind: Service

metadata:

  name: pyxis-firmament-com

  namespace: sky-firmament

  labels:

    app: firmament-pyxis

spec:

  selector:

    app: firmament-pyxis

  ports:

  - port: 8081

    targetPort: 8080

    nodePort: 31081

  type: NodePort





猜你喜欢

转载自www.cnblogs.com/fangh/p/9038149.html