我在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服务,该服务反过来向公众公开外部IP地址。 因此我们可以使用以下方式查看外部IP地址:
kubectl get svc
问题是,我可以使用Cloud Shell中的curl轻松访问负载均衡器,但尝试从外部(示例浏览器)访问它时却无法访问它。
尝试:
curl external-ip:8080
有帮助吗?
答案 0 :(得分:2)
您的服务IP仅本地VPC可以访问,如果您需要公开服务或入口,则需要保留静态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分配给入口
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