【问题标题】:Helm and minikube: service ip missingHelm 和 minikube:缺少服务 ip
【发布时间】:2021-04-15 04:18:44
【问题描述】:

我正在尝试Learning Helm 一书中的示例。我似乎错过了什么。我无法从 helm repo 安装图表:

xxxxx:~ $ helm install my-nginx bitnami/nginx
NAME: my-nginx
LAST DEPLOYED: Sat Jan  9 20:26:22 2021
NAMESPACE: default
STATUS: deployed
REVISION: 1
TEST SUITE: None
NOTES:
** Please be patient while the chart is being deployed **

NGINX can be accessed through the following DNS name from within your cluster:

    my-nginx.default.svc.cluster.local (port 80)

To access NGINX from outside the cluster, follow the steps below:

1. Get the NGINX URL by running these commands:

  NOTE: It may take a few minutes for the LoadBalancer IP to be available.
        Watch the status with: 'kubectl get svc --namespace default -w my-nginx'

    export SERVICE_PORT=$(kubectl get --namespace default -o jsonpath="{.spec.ports[0].port}" services my-nginx)
    export SERVICE_IP=$(kubectl get svc --namespace default my-nginx -o jsonpath='{.status.loadBalancer.ingress[0].ip}')
    echo "http://${SERVICE_IP}:${SERVICE_PORT}"
xxxxx:~ $ export SERVICE_PORT=$(kubectl get --namespace default -o jsonpath="{.spec.ports[0].port}" services my-nginx)
xxxxx:~ $ export SERVICE_IP=$(kubectl get svc --namespace default my-nginx -o jsonpath='{.status.loadBalancer.ingress[0].ip}')
xxxxx:~ $ echo "http://${SERVICE_IP}:${SERVICE_PORT}"
http://:80
$ kubectl get svc --namespace default -w my-nginx
NAME       TYPE           CLUSTER-IP      EXTERNAL-IP   PORT(S)        AGE
my-nginx   LoadBalancer   10.104.16.177   <pending>     80:30977/TCP  17h

更多细节。

【问题讨论】:

  • 我正在使用我的 Ubuntu 笔记本电脑。 (这已被 JK 删除表格标题标题)。不知道这里有没有关系?
  • 你使用的是本地 Kubernetes 集群吗?
  • 是的:我的 Ubuntu 笔记本电脑上默认安装了 Minikube。只是想如果这个 bitnami/nginx 只是没有配置这个外部 IP(预)。我是 helm + kubernetes 的新手,刚开始了解它们。有了那本新的 Helm 书。

标签: kubernetes-helm minikube


【解决方案1】:

下面提取服务IP的行是获取服务对象中的外部IP。

export SERVICE_IP=$(kubectl get svc --namespace default my-nginx -o jsonpath='{.status.loadBalancer.ingress[0].ip}')

LoadBalancer 服务类型中,Kubernetes 尝试获取外部 IP 地址并释放具有该 IP 地址的目标服务。在自托管的 Kubernetes 集群中,无法自动配置外部 IP。在公有云中的大多数托管集群中,例如 GKE、EKS 等,它们已经与外部 IP 地址提供集成。因此,您可以在将服务设置为LoadBalancer 后自动获取它。

仍然可以使用第 3 方操作员/应用程序(例如 MetalLB)来实现此自动化。但在大部分自托管的Kubernetes集群中,建议访问NodePort服务类型的服务。

请使用以下参数重新运行 helm 命令。它将服务类型从LoadBalancer 更改为NodePort。按照标准输出的指示,您可以访问您的服务。

> helm install my-nginx bitnami/nginx --set service.type=NodePort

另一方面,您可以按照 minikube 官方文档here 来设置LoadBalancer 服务中的支持。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-01-12
    • 2020-10-04
    • 2016-09-22
    • 2022-07-15
    • 2022-08-21
    • 1970-01-01
    相关资源
    最近更新 更多