我正在为一个学校项目构建一个K8集群。它是裸露的金属,使用金属作为负载平衡器。每项服务在一个单独的舱内工作:
在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:
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发布于 2021-02-12 22:07:18
节点IP不向其他应用程序公开应用程序的原因是,kubernetes集群中的pod默认不监听向节点发出的请求。换句话说,吊舱上的端口没有连接到节点上的端口。
service资源是建立连接所需的资源。
服务有不同的类型。类型为cluster IP的服务将为应用程序分配内部到集群的IP。如果您不想直接从internet访问mysql数据库,这就是您想要的。
下面是您的项目的集群IP类型的示例服务。
apiVersion: v1
kind: Service
metadata:
name: mysql-service
namespace: metallb-system
spec:
selector:
app: Mysql
ports:
- protocol: TCP
port: 80
targetPort: 3306Selector选择带有标签app=mysql的荚。
Port是服务将侦听的端口。
TargetPort是mysql正在监听的端口。
创建服务时,可以通过运行以下命令找到它的IP
kubectl get services -n metallb-system在群集- IP列下,请注意您创建的服务的IP。
因此,在这种情况下,如果mysql正在监听3306,您可以通过端口80上的服务IP来访问它。
如果您想将wordpress应用程序公开给互联网,可以使用NodePort或LoadBalancer服务类型。这里是服务类型的参考。
https://stackoverflow.com/questions/65129825
复制相似问题