我一直在学习如何在Minikube上部署我的(Spring Boot(api的多个教程。我已经让它(user-service running on 8081
(在带有api gateway (port 8080)
和eureka (port 8087)
的docker容器中工作,但对于初学者来说,我只希望它在没有这些的情况下运行。我采取的步骤:
-
将docker容器或图像(?(推到docker集线器,我不知道正确的术语。
-
创建部署。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
-
kubectl apply -f deployment.yaml
-
minikube service kwetter-service
-
它把我带到一个空网站,网址为
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
要澄清一些事情:
- 您需要将docker镜像
cazhero/s6-kwetter-backend_user:latest
推送到docker hub,请在https://hub.docker.com/,在您的个人存储库中 minikube service kwetter-service
的输出是什么?它是否打印URLhttp://192.168.49.2:30070
- 通过以下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服务访问应用程序的更多信息,请参阅本文档。