无法访问 Kubernetes 服务

Ser*_*raf 3 kubernetes kubectl minikube

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

Port:           8888/TCP
Host Port:      0/TCP
Run Code Online (Sandbox Code Playgroud)

但是当我跑

kubectl get services
Run Code Online (Sandbox Code Playgroud)

我看不到外部 IP

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

这是我的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
Run Code Online (Sandbox Code Playgroud)

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

spec:
  template:
    spec:
      containers:
      - name: ci
        image: rand/image-one:latest
        ports:
        - containerPort: 8888
Run Code Online (Sandbox Code Playgroud)

当我尝试使用该服务访问该服务时,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
Run Code Online (Sandbox Code Playgroud)

我错过了什么?

Ser*_*raf 5

我缺少的是服务类型,如果我想要从外部世界访问的东西,我必须选择LoadBalancer.

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

spec:
  type: LoadBalancer
  ports:
  - port: 8888
    targetPort: 8888
Run Code Online (Sandbox Code Playgroud)

现在我终于有:

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