无法访问 Kubernetes 服务
Not able to access Kubernetes Service
Kubernetes 问题:我似乎无法从本地计算机访问我的服务(pods 在 minikube 上 运行ning),当我 运行 命令时
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
我错过了什么?
使用此配置,您的服务 运行 在端口 8888 上,它映射到节点的端口 31388。因此,您可以从集群内部在端口 8888 上访问它,从外部世界在端口 31388 上访问它。
关于服务,targerPort
是请求发送到的端口,因此它是您部署的 containerPort
。这两个总是需要匹配...
...而port
是服务端口。因此,您的服务可在 10.103.13.96:8888 上使用。
我缺少的是服务类型,如果我想从外部世界访问某些东西,我必须选择 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
Kubernetes 问题:我似乎无法从本地计算机访问我的服务(pods 在 minikube 上 运行ning),当我 运行 命令时
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
我错过了什么?
使用此配置,您的服务 运行 在端口 8888 上,它映射到节点的端口 31388。因此,您可以从集群内部在端口 8888 上访问它,从外部世界在端口 31388 上访问它。
关于服务,targerPort
是请求发送到的端口,因此它是您部署的 containerPort
。这两个总是需要匹配...
...而port
是服务端口。因此,您的服务可在 10.103.13.96:8888 上使用。
我缺少的是服务类型,如果我想从外部世界访问某些东西,我必须选择 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