即使CLI`expose`函数有效,Kubernetes的LoadBalancer Yaml也无法正常工作

时间:2019-11-13 16:22:58

标签: kubernetes minikube

这是我在Service上运行的Deploymentminikube yaml:

apiVersion: apps/v1
kind: Deployment
metadata:
  name: node-hello-world
  labels:
    app: node-hello-world
spec:
  replicas: 1
  selector:
    matchLabels:
      app: node-hello-world
  template:
    metadata:
      labels:
        app: node-hello-world
    spec:
      containers:
      - name: node-hello-world
        image: node-hello-world:latest
        imagePullPolicy: Never
        ports:
        - containerPort: 8080

---
apiVersion: v1
kind: Service
metadata:
  name: node-hello-world-load-balancer
spec:
  type: LoadBalancer
  ports:
  - protocol: TCP
    port: 9000
    targetPort: 8080
    nodePort: 30002
  selector:
    name: node-hello-world

结果:

$ minikube service node-hello-world-load-balancer --url
http://192.168.99.101:30002
$ curl http://192.168.99.101:30002
curl: (7) Failed to connect to 192.168.99.101 port 30002: Connection refused

但是,运行以下CLI可以正常工作:

$ kubectl expose deployment node-hello-world --type=LoadBalancer
$ minikube service node-hello-world --url
http://192.168.99.101:30130
$ curl http://192.168.99.101:30130
Hello World!

我的LoadBalancer yaml配置有什么问题?

1 个答案:

答案 0 :(得分:1)

您配置了错误的服务选择器

selector:
name: node-hello-world

应该是:

selector:
app: node-hello-world

https://kubernetes.io/docs/tutorials/kubernetes-basics/expose/expose-intro/

您可以通过描述服务来调试它,并查看端点列表为空,这样就不会将Pod映射到端点的服务列表

kubectl describe svc node-hello-world-load-balancer | grep -i endpoints
Endpoints:                <none>