在任意端口公开 minikube 中的 LoadBalancer 服务?
Exposing LoadBalancer service in minikube at arbitrary port?
我有一个 minikube 集群,一个部署中有 运行 WordPress,另一个部署中有 MySQL。这两个部署都有相应的服务。 WordPress 服务的定义如下所示:
apiVersion: v1
kind: Service
metadata:
name: wordpress
spec:
selector:
app: wordpress
ports:
- port: 80
type: LoadBalancer
服务工作正常,minikube service
给了我一个很好的路径,地址为 minikube ip
和一个随机高端口。问题是 WordPress 需要站点名称中的完整 URL。我不想每次都更改它并为集群设置本地 DNS 名称。
有没有办法在 minikube 的任意端口上公开 LoadBalancer?我可以使用任何端口,只要它的端口由我决定,而不是 minikube 本身?
请记住,Minikube 无法像其他云提供商那样提供真正的 loadbalancer,它只是通过使用简单的 nodePort
Service
代替。
您可以完全控制所使用的端口。首先你可以在nodePort
Service
规范中手动指定它(记住它应该在默认范围内:30000-32767):
If you want a specific port number, you can specify a value in the
nodePort
field. The control plane will either allocate you that port
or report that the API transaction failed. This means that you need to
take care of possible port collisions yourself. You also have to use a
valid port number, one that’s inside the range configured for NodePort
use.
您的示例可能如下所示:
apiVersion: v1
kind: Service
metadata:
name: wordpress
spec:
selector:
app: wordpress
ports:
- port: 80
targetPort: 80
nodePort: 30000
type: NodePort
您还可以在启动 kube-apiserver
.
时通过在 --service-node-port-range
标志后提供您的自定义值来更改此默认范围
当你使用由kukbeadm工具设置的kubernetes集群时(Minikube也使用它作为默认引导程序),您需要编辑 /etc/kubernetes/manifests/kube-apiserver.yaml
文件并提供所需的标志以及您的自定义端口范围。
我有一个 minikube 集群,一个部署中有 运行 WordPress,另一个部署中有 MySQL。这两个部署都有相应的服务。 WordPress 服务的定义如下所示:
apiVersion: v1
kind: Service
metadata:
name: wordpress
spec:
selector:
app: wordpress
ports:
- port: 80
type: LoadBalancer
服务工作正常,minikube service
给了我一个很好的路径,地址为 minikube ip
和一个随机高端口。问题是 WordPress 需要站点名称中的完整 URL。我不想每次都更改它并为集群设置本地 DNS 名称。
有没有办法在 minikube 的任意端口上公开 LoadBalancer?我可以使用任何端口,只要它的端口由我决定,而不是 minikube 本身?
请记住,Minikube 无法像其他云提供商那样提供真正的 loadbalancer,它只是通过使用简单的 nodePort
Service
代替。
您可以完全控制所使用的端口。首先你可以在nodePort
Service
规范中手动指定它(记住它应该在默认范围内:30000-32767):
If you want a specific port number, you can specify a value in the
nodePort
field. The control plane will either allocate you that port or report that the API transaction failed. This means that you need to take care of possible port collisions yourself. You also have to use a valid port number, one that’s inside the range configured for NodePort use.
您的示例可能如下所示:
apiVersion: v1
kind: Service
metadata:
name: wordpress
spec:
selector:
app: wordpress
ports:
- port: 80
targetPort: 80
nodePort: 30000
type: NodePort
您还可以在启动 kube-apiserver
.
--service-node-port-range
标志后提供您的自定义值来更改此默认范围
当你使用由kukbeadm工具设置的kubernetes集群时(Minikube也使用它作为默认引导程序),您需要编辑 /etc/kubernetes/manifests/kube-apiserver.yaml
文件并提供所需的标志以及您的自定义端口范围。