如果不指定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

04-26 14:30