无法访问Kubernetes服务

时间:2018-06-08 20:54:50

标签: kubernetes kubectl minikube

Kubernetes问题:当我运行命令时,我似乎无法从本地计算机访问我的服务(pod正在minikube上运行) kubectl describe pod pod-id我看到这两行,但我不知道它们是否与无法访问部署有关:

Port:           8888/TCP
Host Port:      0/TCP

但是当我跑步时

kubectl get services

我看不到外部IP

NAME         TYPE        CLUSTER-IP     EXTERNAL-IP   PORT(S)          AGE
ci-master    NodePort    10.103.13.96   <none>        8888:31388/TCP   1m

这是我的service.yaml文件:

apiVersion: v1
kind: Service
metadata:
  name: ci-master
  labels:
    app: ci
    tier: fullstack
    role: master
spec:
  type: NodePort
  ports:
  - port: 8888
    targetPort: 8888
  selector:
    app: ci
    role: master
    tier: fullstack

我认为应该与我的deployment.yaml相关的部分:

spec:
  template:
    spec:
      containers:
      - name: ci
        image: rand/image-one:latest
        ports:
        - containerPort: 8888

当我尝试使用minikube service ci-master访问该服务时,我无限期地收到此消息: Waiting, endpoint for service is not ready yet...

服务正在服务,当我尝试kubectl describe pod pod-id时,我在底部看到这一行:

  Type    Reason                 Age   From               Message
  Normal  Started                24m   kubelet, minikube  Started container

我错过了什么?

2 个答案:

答案 0 :(得分:2)

使用此配置,您的服务正在端口8888上运行,并且它将映射到节点的端口31388。所以你可以从群集中的端口8888和外部世界的端口31388上点击它。

关于服务,targerPort是请求发送到的端口,因此它是部署的containerPort。这两个总是需要匹配...

... port是服务端口。所以您的服务可在10.103.13.96:8888获得。

答案 1 :(得分:0)

我缺少的是服务类型,如果我想从外部世界访问某些内容,我必须选择LoadBalancer

所以这个简单的改变修正了它:

spec:
  type: LoadBalancer
  ports:
  - port: 8888
    targetPort: 8888

现在我终于有了:

NAME         TYPE           CLUSTER-IP     EXTERNAL-IP     PORT(S)        AGE
ci-master    LoadBalancer   10.15.243.32   35.211.12.22   80:32463/TCP   1m