gpt4 book ai didi

kubernetes - 如何为本地主机上的 istio-ingressgateway 分配 IP?

转载 作者:行者123 更新时间:2023-12-02 11:34:20 29 4
gpt4 key购买 nike

我正在使用 kubespray 在笔记本电脑上运行 kubernetes 集群。集群在 7 个虚拟机上运行,​​虚拟机的角色分布如下:

NAME    STATUS   ROLES    AGE     VERSION
k8s-1 Ready master 2d22h v1.16.2
k8s-2 Ready master 2d22h v1.16.2
k8s-3 Ready master 2d22h v1.16.2
k8s-4 Ready master 2d22h v1.16.2
k8s-5 Ready <none> 2d22h v1.16.2
k8s-6 Ready <none> 2d22h v1.16.2
k8s-7 Ready <none> 2d22h v1.16.2

我已经安装了 https://istio.io/构建微服务环境。

我有 2 个服务正在运行并且喜欢从外部访问:

k get services
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE
greeter-service ClusterIP 10.233.50.109 <none> 3000/TCP 47h
helloweb ClusterIP 10.233.8.207 <none> 3000/TCP 47h

和正在运行的 pod:

NAMESPACE      NAME                                      READY   STATUS    RESTARTS   AGE     IP             NODE    NOMINATED NODE   READINESS GATES
default greeter-service-v1-8d97f9bcd-2hf4x 2/2 Running 0 47h 10.233.69.7 k8s-6 <none> <none>
default greeter-service-v1-8d97f9bcd-gnsvp 2/2 Running 0 47h 10.233.65.3 k8s-2 <none> <none>
default greeter-service-v1-8d97f9bcd-lkt6p 2/2 Running 0 47h 10.233.68.9 k8s-7 <none> <none>
default helloweb-77c9476f6d-7f76v 2/2 Running 0 47h 10.233.64.3 k8s-1 <none> <none>
default helloweb-77c9476f6d-pj494 2/2 Running 0 47h 10.233.69.8 k8s-6 <none> <none>
default helloweb-77c9476f6d-tnqfb 2/2 Running 0 47h 10.233.70.7 k8s-5 <none> <none>

问题是,我无法从外部访问服务,因为我没有外部 IP 地址(请记住集群正在我的笔记本电脑上运行)。

k get svc istio-ingressgateway -n istio-system  
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE
istio-ingressgateway LoadBalancer 10.233.61.112 <pending> 15020:31311/TCP,80:30383/TCP,443:31494/TCP,15029:31383/TCP,15030:30784/TCP,15031:30322/TCP,15032:30823/TCP,15443:30401/TCP 47h

可以看到,EXTERNAL-IP这一列的值为<pending> .

问题是,如何为 istio-ingressgateway 分配一个 EXTERNAL-IP .

最佳答案

首先,您不能让 k8s 为您分配一个外部 IP 地址,因为 LoadBalancer 服务是云提供商特定的。我猜你可以将你的路由器外部 IP 地址映射到它,但这并不简单。

要访问该服务,您可以这样做:

  1. kubectl edit svc istio-ingressgateway -n istio-system
  2. 将服务类型从 LoadBalancer 更改为 ClusterIp。您也可以执行 NodePort。其实你可以跳过这一步,因为 LoadBalancer 服务已经包含了 NodePortClusterIp。这只是为了摆脱那种待定状态。
  3. kubectl port-forward svc/istio-ingressgateway YOUR_LAPTOP_PORT:INGRESS_CLUSTER_IP_PORT -n istio-system

我不知道你想从本地主机访问哪个端口。说 80,你可以这样做:

kubectl port-forward svc/istio-ingressgateway 8080:80 -n istio-system

现在你笔记本电脑的 8080 端口 (localhost:8080) 将映射到 istio-ingressgateway 服务的 80 端口。

关于kubernetes - 如何为本地主机上的 istio-ingressgateway 分配 IP?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59077975/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com