我正在学习spring和kubernetes集成教程:
https://spring.io/guides/gs/spring-boot-kubernetes/
在我当前的场景中,我有一个主服务器和两个工作服务器。
当我使用命令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: {}
发布于 2020-01-21 17:55:37
您需要更改服务类型以公开应用程序。有两种方式:- LoadBalancer类型:(仅在云提供商上)- NodePort类型:可以在本地或minikube完成。
将您的服务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
发布于 2020-01-21 18:14:10
您可以将服务类型更改为负载均衡。它将通过IP地址将您的服务暴露给外部互联网。服务型负载均衡仅适用于云提供商。
有关更多细节,请访问: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
https://stackoverflow.com/questions/59831317
复制相似问题