GCP 无法从外部访问 Kubernetes 外部负载均衡器 IP
GCP Couldn't reach Kubernetes External Load Balancer IP from outside
我在 GCP 云中创建了一个集群,其中包含一个简单的 k8s YAML 文件。
apiVersion: v1
kind: Service
metadata:
name: lb-svc
labels:
app: lb-demo
spec:
type: LoadBalancer
ports:
- port: 8080
selector:
app: np-demo
---
apiVersion: apps/v1
kind: Deployment
metadata:
name: np-deploy
spec:
replicas: 3
selector:
matchLabels:
app: np-demo
template:
metadata:
labels:
app: np-demo
spec:
containers:
- name: np-pod
image: nigelpoulton/k8s-deep-dive:0.1
imagePullPolicy: Always
ports:
- containerPort: 8080
现在;这个 YAML 配置有一个 LoadBalancer 服务,它在 return 中向 public 公开一个外部 IP 地址。
因此我们可以使用以下命令查看外部 IP 地址:
kubectl get svc
问题是,我可以在云中使用 curl 轻松访问负载均衡器 shell,但在尝试从外部访问它时无法访问它(示例浏览器)。
尝试过:
curl external-ip:8080
有什么帮助吗?
你的service ip只能被本地VPC访问,如果你需要暴露service或ingress你需要预留静态ip,阅读这里预留静态ip https://cloud.google.com/compute/docs/ip-addresses/reserve-static-external-ip-address
要将静态 IP 分配给服务,您需要在服务配置中设置 loadBalancerIP
apiVersion: v1
kind: Service
metadata:
name: lb-svc
labels:
app: lb-demo
spec:
type: LoadBalancer
loadBalancerIP: <your reserved ip>
ports:
- port: 8080
selector:
app: np-demo
将您的 ip 分配给 ingress
apiVersion: extensions/v1beta1
kind: Ingress
metadata:
name: my-ingress
annotations:
kubernetes.io/ingress.global-static-ip-name: <name of reserved static ip>
labels:
app: my-app
spec:
backend:
serviceName: lb-svc
servicePort: 8080
阅读更多here
我在 GCP 云中创建了一个集群,其中包含一个简单的 k8s YAML 文件。
apiVersion: v1
kind: Service
metadata:
name: lb-svc
labels:
app: lb-demo
spec:
type: LoadBalancer
ports:
- port: 8080
selector:
app: np-demo
---
apiVersion: apps/v1
kind: Deployment
metadata:
name: np-deploy
spec:
replicas: 3
selector:
matchLabels:
app: np-demo
template:
metadata:
labels:
app: np-demo
spec:
containers:
- name: np-pod
image: nigelpoulton/k8s-deep-dive:0.1
imagePullPolicy: Always
ports:
- containerPort: 8080
现在;这个 YAML 配置有一个 LoadBalancer 服务,它在 return 中向 public 公开一个外部 IP 地址。 因此我们可以使用以下命令查看外部 IP 地址:
kubectl get svc
问题是,我可以在云中使用 curl 轻松访问负载均衡器 shell,但在尝试从外部访问它时无法访问它(示例浏览器)。
尝试过:
curl external-ip:8080
有什么帮助吗?
你的service ip只能被本地VPC访问,如果你需要暴露service或ingress你需要预留静态ip,阅读这里预留静态ip https://cloud.google.com/compute/docs/ip-addresses/reserve-static-external-ip-address
要将静态 IP 分配给服务,您需要在服务配置中设置 loadBalancerIP
apiVersion: v1
kind: Service
metadata:
name: lb-svc
labels:
app: lb-demo
spec:
type: LoadBalancer
loadBalancerIP: <your reserved ip>
ports:
- port: 8080
selector:
app: np-demo
将您的 ip 分配给 ingress
apiVersion: extensions/v1beta1
kind: Ingress
metadata:
name: my-ingress
annotations:
kubernetes.io/ingress.global-static-ip-name: <name of reserved static ip>
labels:
app: my-app
spec:
backend:
serviceName: lb-svc
servicePort: 8080
阅读更多here