首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Kubernetes / Metallb单入口点

Kubernetes / Metallb单入口点
EN

Stack Overflow用户
提问于 2020-12-03 16:16:27
回答 1查看 338关注 0票数 0

我正在为一个学校项目构建一个K8集群。它是裸露的金属,使用金属作为负载平衡器。每项服务在一个单独的舱内工作:

  • Nginx
  • Wordpress
  • Phpmyadmin
  • Mysql (mariadb)

在phpmyadmin文件中,我需要将mysql服务器链接到以下内容:

$cfg['Servers'][$i]['host'] = "mysql-server-name";

我尝试使用节点的IP:

kubectl get node -o=custom-columns='DATA:status.addresses[0].address' | sed -n 2p

添加端口:3306,但我意识到,使用此方法无法通过浏览器访问我的任何服务。例如,节点的Ip:5050应该将我重定向到我的wordpress,但是它没有。有什么方法可以获得一个IP来让我的荚在它们之间通信吗?我必须补充说,当我使用svc而不是节点时,每个服务都是独立工作的。

以下是我为metallb使用的configmap:

代码语言:javascript
复制
kind: ConfigMap
metadata:
  namespace: metallb-system
  name: config
data:
  config: |
    address-pools:
    - name: default
      protocol: layer2
      addresses:
      - 192.168.99.100-192.168.99.200
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2021-02-12 22:07:18

节点IP不向其他应用程序公开应用程序的原因是,kubernetes集群中的pod默认不监听向节点发出的请求。换句话说,吊舱上的端口没有连接到节点上的端口。

service资源是建立连接所需的资源。

服务有不同的类型。类型为cluster IP的服务将为应用程序分配内部到集群的IP。如果您不想直接从internet访问mysql数据库,这就是您想要的。

下面是您的项目的集群IP类型的示例服务。

代码语言:javascript
复制
apiVersion: v1
kind: Service
metadata:
  name: mysql-service
  namespace: metallb-system
spec:
  selector:
    app: Mysql
  ports:
    - protocol: TCP
      port: 80
      targetPort: 3306

Selector选择带有标签app=mysql的荚。

Port是服务将侦听的端口。

TargetPort是mysql正在监听的端口。

创建服务时,可以通过运行以下命令找到它的IP

代码语言:javascript
复制
kubectl get services -n metallb-system

在群集- IP列下,请注意您创建的服务的IP。

因此,在这种情况下,如果mysql正在监听3306,您可以通过端口80上的服务IP来访问它。

如果您想将wordpress应用程序公开给互联网,可以使用NodePortLoadBalancer服务类型。这里是服务类型的参考。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/65129825

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档