kubernetes - 在任意端口的 minikube 中公开 LoadBalancer 服务?
问题描述
我有一个 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无法像其他云提供商那样提供真正的负载均衡器,它只是通过使用 simple来模拟它。nodePort
Service
您可以完全控制所使用的端口。首先,您可以在nodePort
Service
规范中手动指定它(记住它应该在默认范围内:30000-32767):
如果您想要一个特定的端口号,您可以在该
nodePort
字段中指定一个值。控制平面将为您分配该端口或报告 API 事务失败。这意味着您需要自己处理可能的端口冲突。您还必须使用一个有效的端口号,该端口号在为 NodePort 使用而配置的范围内。
您的示例可能如下所示:
apiVersion: v1
kind: Service
metadata:
name: wordpress
spec:
selector:
app: wordpress
ports:
- port: 80
targetPort: 80
nodePort: 30000
type: NodePort
您还可以通过--service-node-port-range
在启动kube-apiserver
.
当您使用kukbeadm工具设置的kubernetes 集群时(Minikube也将其用作默认引导程序),您需要编辑文件并提供所需的标志以及您的自定义端口范围。/etc/kubernetes/manifests/kube-apiserver.yaml
推荐阅读
- powerbi - Power BI 中的分组矩阵
- ansible - 不清楚的ansible变量格式
- django - Django PermissionRequiredMixin - 返回 404 错误而不是 403
- php - 如何使用 PHP 函数 fgetcsv() 或 fopen() 跳过 n 行?
- powershell - Azure RunBook - 我们能否将密钥传递给文件 压缩文件并将其推送到 blob(密钥刷新)
- python - 使用 seaborn 色调时分配平均标记的颜色
- css - Firefox CSS 问题。Flex 项目溢出。如何使 flex 项目缩小?
- css - 如何在 Angular 库中的 CSS 代码中使用图像
- php - 我可以从 laravel 应用程序中删除 artisan package:diover 吗?
- javascript - 在 Sockets.IO Node.JS 中存储和访问客户端列表的最有效方法