我正在关注spring和kubernetes集成教程:
https://spring.io/guides/gs/spring-boot-kubernetes/
在当前情况下,我有1个主服务器和2个工作服务器。
当我使用命令kubectl apply -f deployment.yaml
部署以下文件时,可以使用kubectl port-forward svc/demo 8080:8080
和curl localhost:8080/actuator/health
从主服务器中发出请求。
我想做的是一个外部请求(一台公用计算机-我的计算机)来访问我创建的服务(kubernetes_master_ip:8080/actuator
),但是当我尝试这样做时,却收到“连接被拒绝”的消息。
缺少什么?
apiVersion: apps/v1
kind: Deployment
metadata:
creationTimestamp: null
labels:
app: demo
name: demo
spec:
replicas: 1
selector:
matchLabels:
app: demo
strategy: {}
template:
metadata:
creationTimestamp: null
labels:
app: demo
spec:
containers:
- image: springguides/demo
name: demo
resources: {}
status: {}
---
apiVersion: v1
kind: Service
metadata:
creationTimestamp: null
labels:
app: demo
name: demo
spec:
ports:
- name: 8080-8080
port: 8080
protocol: TCP
targetPort: 8080
selector:
app: demo
type: ClusterIP
status:
loadBalancer: {}
答案 0 :(得分:3)
您需要更改服务类型以公开应用程序。有两种方法: -LoadBalancer类型:(仅适用于云提供商) -NodePort类型:可以在本地或微型kube中完成。
将您的服务Yaml更改为以下内容:
apiVersion: v1
kind: Service
metadata:
labels:
app: demo
name: demo
spec:
ports:
- name: 8080-8080
port: 8080
nodePort: 31234
protocol: TCP
targetPort: 8080
selector:
app: demo
type: NodePort
服务一旦执行。检查在其上创建容器的应用程序节点IP。
kubectl get pods -o wide
然后尝试通过以下位置访问该应用程序: http://node_ip:31234/actuator
答案 1 :(得分:1)
您可以将服务类型更改为负载均衡器。它将通过IP地址向外部Internet公开您的服务。服务类型负载平衡器仅适用于云提供商。
有关更多详细信息,您可以访问:https://kubernetes.io/docs/concepts/services-networking/
apiVersion: v1
kind: Service
metadata:
creationTimestamp: null
labels:
app: demo
name: demo
spec:
ports:
- name: 8080-8080
port: 8080
protocol: TCP
targetPort: 8080
selector:
app: demo
type: LoadBalancer
另存为yaml
并执行。它将提供IP地址。
您可以通过IP访问服务
Kubectl get svc