如果您无法从互联网访问ClusterIP服务,我为什么要谈论它呢? 事实证明,您可以使用Kubernetes代理访问它!apiVersion: v1
kind: Service
metadata:
name: my-internal-service
spec:
selector:
app: my-app
type: ClusterIP
ports:
- name: http
port: 80
targetPort: 80
protocol: TCP
现在,您可以使用Kubernetes API以访问此服务:$ kubectl proxy --port=8080
因此,要访问我们上面定义的服务,您可以使用以下地址:http://localhost:8080/api/v1/proxy/namespaces/
/services/ : /
http://localhost:8080/api/v1/proxy/namespaces/default/services/my-internal-service:http/
调试您的服务或出于某种原因直接从您的笔记本电脑连接它们
允许内部流量,显示内部dashboard等
基本上,NodePort服务与普通的“ClusterIP”服务有两点不同。 首先,类型是“NodePort”。还有一个名为nodePort的附加端口,用于指定在节点上打开的端口。 如果您不指定此端口,它将选择一个随机端口。 大多数时候你应该让Kubernetes选择端口;正如thockin所说,对于你可以使用的端口有很多必要的说明。apiVersion: v1
kind: Service
metadata:
name: my-nodeport-service
spec:
selector:
app: my-app
type: NodePort
ports:
- name: http
port: 80
targetPort: 80
nodePort: 30036
protocol: TCP
每个端口只能有一个服务
您只能使用端口30000-32767
如果您的Node/VM的IP地址发生变化,您需要处理好
apiVersion: extensions/v1beta1
kind: Ingress
metadata:
name: my-ingress
spec:
backend:
serviceName: other
servicePort: 8080
rules:
- host: foo.mydomain.com
http:
paths:
- backend:
serviceName: foo
servicePort: 8080
- host: mydomain.com
http:
paths:
- path: /bar/*
backend:
serviceName: bar
servicePort: 8080
https://kubernetes.io/docs/concepts/services-networking/service/
https://cloud.google.com/compute/docs/load-balancing/network/
https://github.com/jetstack/cert-manager