Kubernetes服务URL未响应API调用



我一直在学习如何在Minikube上部署我的(Spring Boot(api的多个教程。我已经让它(user-service running on 8081(在带有api gateway (port 8080)eureka (port 8087)的docker容器中工作,但对于初学者来说,我只希望它在没有这些的情况下运行。我采取的步骤:

  1. 将docker容器或图像(?(推到docker集线器,我不知道正确的术语。

  2. 创建部署。yaml:

    apiVersion: v1
    kind: Service
    metadata:
    name: kwetter-service
    spec:
    type: LoadBalancer
    selector:
    app: kwetter
    ports:
    - protocol: TCP
    port: 8080
    targetPort: 8081
    nodePort: 30070
    ---
    apiVersion: apps/v1
    kind: Deployment
    metadata:
    name: kwetter-deployment
    labels:
    app: kwetter
    spec:
    replicas: 1
    selector:
    matchLabels:
    app: kwetter
    template:
    metadata:
    labels:
    app: kwetter
    spec:
    containers:
    - name: user-api
    image: cazhero/s6-kwetter-backend_user:latest
    ports: 
    - containerPort: 8081 #is the port it runs on when I manually start it up
    
  3. kubectl apply -f deployment.yaml

  4. minikube service kwetter-service

  5. 它把我带到一个空网站,网址为http://192.168.49.2:30070,我想我可以用它来调用API,但显然不是。如何对运行在minikube上的应用程序进行api调用?

获取svc返回:

NAME              TYPE           CLUSTER-IP     EXTERNAL-IP   PORT(S)          AGE
kubernetes        ClusterIP      10.96.0.1      <none>        443/TCP          4d4h
kwetter-service   LoadBalancer   10.106.42.56   <pending>     8080:30070/TCP   4d

describe svc kwetter-service:

Name:                     kwetter-service
Namespace:                default
Labels:                   <none>
Annotations:              <none>
Selector:                 app=kwetter
Type:                     NodePort
IP Family Policy:         SingleStack
IP Families:              IPv4
IP:                       10.106.42.56
IPs:                      10.106.42.56
Port:                     <unset>  8080/TCP
TargetPort:               8081/TCP
NodePort:                 <unset>  30070/TCP
Endpoints:                172.17.0.4:8081
Session Affinity:         None
External Traffic Policy:  Cluster
Events:
Type    Reason  Age   From                Message
----    ------  ----  ----                -------
Normal  Type    6s    service-controller  LoadBalancer -> NodePort

在yaml中制造一个入口,使用kubectl get ing:

NAME              CLASS    HOSTS   ADDRESS   PORTS   AGE
kwetter-ingress   <none>   *                 80      49m

要澄清一些事情:

  1. 您需要将docker镜像cazhero/s6-kwetter-backend_user:latest推送到docker hub,请在https://hub.docker.com/,在您的个人存储库中
  2. minikube service kwetter-service的输出是什么?它是否打印URLhttp://192.168.49.2:30070
  3. 通过以下minikube命令确保pod正确运行:
    # check pod status
    minikube kubectl -- get pods
    # if the pod is running, check its container logs
    minikube kubectl -- logs po kwetter-deployment-xxxx-xxxx
    

我看到您正在使用LoadBalancer服务,其中LoadBalancers服务是向internet公开服务的标准方式。使用这种方法,每个服务都会获得自己的IP地址。

  • 检查外部IP

    kubectl get svc
    
  • 使用此格式的外部IP和端口号访问应用

    http://REPLACE_WITH_EXTERNAL_IP:8080
    

如果要使用Nodeport(30070(访问应用程序,请使用Nodeport服务而不是LoadBalancer服务

有关通过Nodeport和LoadBalancer服务访问应用程序的更多信息,请参阅本文档。

相关内容

  • 没有找到相关文章

最新更新