【问题标题】:Rancher / k8 / azure / KubectlRancher / k8 / azure / Kubectl
【发布时间】:2018-07-16 19:25:29
【问题描述】:

我的集群中有一个 mysql pod,我想向公共 IP 公开。因此,我通过这样做将其更改为负载均衡器

kubectl edit svc mysql-mysql --namespace mysql

    release: mysql
  name: mysql-mysql
  namespace: mysql
  resourceVersion: "646616"
  selfLink: /api/v1/namespaces/mysql/services/mysql-mysql
  uid: cd1cce11-890c-11e8-90f5-869c0c4ba0b5
spec:
  clusterIP: 10.0.117.54
  externalTrafficPolicy: Cluster
  ports:
  - name: mysql
    nodePort: 31479
    port: 3306
    protocol: TCP
    targetPort: 3306
  selector:
    app: mysql-mysql
  sessionAffinity: None
  type: LoadBalancer
status:
  loadBalancer:
    ingress:
    - ip: 137.117.40.121

将 ClusterIP 更改为 LoadBalancer。

但是,我似乎无法通过 mysql -h137.117.40.121 -uroot -p***** 找到它

有人知道吗?是因为我试图通过 TCP 转发吗?

【问题讨论】:

标签: azure kubectl rancher kubernetes-ingress


【解决方案1】:

对于您的问题,您希望将 mysql pod 公开给公共 IP。所以你需要看看Ingress in Kubernets。它是一个 API 对象,用于管理对集群中服务的外部访问,通常是 HTTP。对于 Ingress,您需要入口控制器和入口规则。更多详情,您可以阅读我发布的文档。

在 Azure 中,您可以从HTTPS Ingress on Azure Kubernetes Service (AKS) 获取更多详细信息。

【讨论】:

  • 如果答案有帮助或者您需要更多帮助,请告诉我。
【解决方案2】:

正如@aurelius 所指出的,您的配置似乎正确,可能是您的防火墙规则阻止了流量。

还要确保为您的集群启用了云提供商选项。

kubectl get svc -o wide 将显示负载平衡器的状态和分配的 IP 地址。

@charles-xu-msft,使用 Ingress 绝对是一种选择,但是当为 kubernetes 集群启用云提供商时,使用 LoadBalancer 类型的 Service 并没有错。

仅供参考,这里是测试配置:

apiVersion: v1
kind: Pod
metadata:
  name: mysql-pod
  labels:
    name: mysql-pod
spec:
  containers:
  - name: mysql:5
    image: mysql
    ports:
      - containerPort: 3306
    env:
      - name: MYSQL_ROOT_PASSWORD
        value: mysqlpassword
---
apiVersion: v1
kind: Service
metadata:
  name: test-mysql-lb
spec:
  type: LoadBalancer
  ports:
  - port: 3306
    targetPort: 3306
    protocol: TCP
  selector:
    name: mysql-pod

【讨论】:

    猜你喜欢
    • 2022-11-12
    • 2020-01-25
    • 2021-09-01
    • 2021-08-15
    • 1970-01-01
    • 2021-07-10
    • 1970-01-01
    • 2021-08-13
    • 2021-08-30
    相关资源
    最近更新 更多