我正在使用 kubespray 在我的笔记本电脑上运行 kubernetes 集群。该集群运行在 7 个 VM 上,VM 的角色分布如下:
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
Run Code Online (Sandbox Code Playgroud)
我已经安装了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
Run Code Online (Sandbox Code Playgroud)
和正在运行的 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>
Run Code Online (Sandbox Code Playgroud)
问题是,我无法从外部访问服务,因为我没有外部 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
Run Code Online (Sandbox Code Playgroud)
如您所见,EXTERNAL-IP列的值为<pending>。
问题是,如何将EXTERNAL-IP分配给istio-ingressgateway.
首先,您不能让 k8s 为您分配外部 IP 地址,因为LoadBalancer服务是特定于云提供商的。我想,您可以将路由器的外部 IP 地址映射到它,但这并不简单。
要访问该服务,您可以执行以下操作:
kubectl edit svc istio-ingressgateway -n istio-systemLoadBalancer为ClusterIp。你也可以这样做NodePort。实际上你可以跳过这一步,因为LoadBalancerservice 已经包含NodePort和ClusterIp。只是为了摆脱那种悬而未决的状态。kubectl port-forward svc/istio-ingressgateway YOUR_LAPTOP_PORT:INGRESS_CLUSTER_IP_PORT -n istio-system我不知道您想从本地主机访问哪个端口。比如说8080,你可以这样做:
kubectl port-forward svc/istio-ingressgateway 8080:80 -n istio-system
现在您的笔记本电脑的端口 8080 (localhost:8080) 将映射到istio-ingressgateway服务的端口 80。
| 归档时间: |
|
| 查看次数: |
7771 次 |
| 最近记录: |