首页 > 解决方案 > kubernete 服务被阻塞/在 mac 中使用 minikube 加载

问题描述

我一直在与队友检查相同的配置,他可以使用他的 Macintosh/笔记本电脑通过浏览器访问该服务。

kubectl get services --all-namespaces
NAMESPACE   NAME         TYPE           CLUSTER-IP      EXTERNAL-IP   PORT(S)          AGE
default     kubernetes   ClusterIP      10.96.0.1       <none>        443/TCP          7d23h
default     posts-depl   LoadBalancer   10.100.86.132   <pending>     4000:31578/TCP   102m
default     posts-srv    NodePort       10.101.115.21   <none>        4000:31237/TCP   26h

这是我的服务文件:

apiVersion: v1
kind: Service
metadata:
  name: posts-srv
spec:
  type: NodePort
  selector:
    app: posts
  ports:
    - name: posts
      protocol: TCP
      port: 4000
      targetPort: 4000

这是部署文件

apiVersion: apps/v1
kind: Deployment
metadata:
  name: posts-depl
spec:
  replicas: 1
  selector:
    matchLabels:
      app: posts
  template:
    metadata:
      labels:
        app: posts
    spec:
      containers:
        - name: posts
          image: username/posts:latest
          ports:
          - containerPort: 4000
            name: app

荚:

kubectl get pods
NAME                        READY   STATUS    RESTARTS   AGE
posts-depl-5489b46f-2sprs   1/1     Running   0          25h

服务信息:

kubectl describe service posts
Name:                     posts-depl
Namespace:                default
Labels:                   <none>
Annotations:              <none>
Selector:                 app=posts
Type:                     LoadBalancer
IP:                       10.100.86.132
Port:                     <unset>  4000/TCP
TargetPort:               4000/TCP
NodePort:                 <unset>  31578/TCP
Endpoints:                172.17.0.3:4000
Session Affinity:         None
External Traffic Policy:  Cluster
Events:                   <none>

Name:                     posts-srv
Namespace:                default
Labels:                   <none>
Annotations:              kubectl.kubernetes.io/last-applied-configuration:
                            {"apiVersion":"v1","kind":"Service","metadata":{"annotations":{},"name":"posts-srv","namespace":"default"},"spec":{"ports":[{"name":"posts...
Selector:                 app=posts
Type:                     NodePort
IP:                       10.101.115.21
Port:                     posts  4000/TCP
TargetPort:               4000/TCP
NodePort:                 posts  31237/TCP
Endpoints:                172.17.0.3:4000
Session Affinity:         None
External Traffic Policy:  Cluster
Events:                   <none>

我知道,我可以访问节点/容器, kubectl port-forward posts-depl-5489b46f-2sprs 50000:4000并且我可以从 nodejs 服务器接收正确的响应,但我想通过服务访问。

另外,我一直在尝试通过负载均衡器访问: kubectl expose deployment posts-depl --type=LoadBalancer --port=4000

我无法使用负载平衡器和节点端口访问 nodejs 响应不知何故我的 Macintosh 阻止了来自浏览器的请求:

网址:

minikube service posts-srv --url
  Starting tunnel for service posts-srv.
|-----------|-----------|-------------|------------------------|
| NAMESPACE |   NAME    | TARGET PORT |          URL           |
|-----------|-----------|-------------|------------------------|
| default   | posts-srv |             | http://127.0.0.1:54224 |
|-----------|-----------|-------------|------------------------|
http://127.0.0.1:54224
❗  Because you are using a Docker driver on darwin, the terminal needs to be open to run it.

正如我之前所说,我的一个队友可以用他的 mac 很好地访问 nodejs 响应。不知何故,我的 Macintosh 阻止了 kubernet 集群内部的信息。

谢谢!

在此处输入图像描述

标签: macosdockerkubernetes

解决方案


推荐阅读