Api 出于开发目的在集群外部公开kubernetes服务
是否有可能向外界公开kubernetes服务? 我目前正在开发一个需要与服务通信的应用程序,为此我需要知道pod ip和端口地址,我使用kubernetes集群可以通过链接到它的kubernetes服务获得这些地址,但在集群之外,我似乎无法找到或公开它们Api 出于开发目的在集群外部公开kubernetes服务,api,kubernetes,development-environment,Api,Kubernetes,Development Environment,是否有可能向外界公开kubernetes服务? 我目前正在开发一个需要与服务通信的应用程序,为此我需要知道pod ip和端口地址,我使用kubernetes集群可以通过链接到它的kubernetes服务获得这些地址,但在集群之外,我似乎无法找到或公开它们 apiVersion: v1 kind: Service metadata: name: kafka-broker spec: ports: - name: broker port: 9092 protocol: T
apiVersion: v1
kind: Service
metadata:
name: kafka-broker
spec:
ports:
- name: broker
port: 9092
protocol: TCP
targetPort: kafka
selector:
app: kafka
sessionAffinity: None
type: ClusterIP
我可以将应用程序容器化,放在一个pod中,然后在kubernetes中运行,但是对于快速开发来说,要测试诸如连接性之类的小事情似乎很繁琐
通过某种方式,我可以公开服务,从而在其选择器中访问应用程序?使用服务类型作为节点端口或负载平衡器。如果您在Azure、AWS或GCD等云中运行,建议使用后者 请参阅下文
apiVersion: v1
kind: Service
metadata:
name: kafka-broker
spec:
ports:
- name: broker
port: 9092
protocol: TCP
targetPort: kafka
selector:
app: kafka
sessionAffinity: None
type: NodePort
您可以使用:NodePort或负载平衡器类型的服务,如其他答案中所述。甚至进入 但由于您只是出于开发人员的目的,我建议在给定的名称空间中启动一个测试pod,并检查该pod的连接。您可以获得对运行pod
kubectl exec-it{PODNAME}/bin/sh
您还可以尝试以下工具:
-
-
-要将Kubernetes服务公开到internet,必须更改
服务类型
您的服务正在使用默认值,即ClusterIP
,它在群集内部IP上公开服务,使其只能在群集内访问
1-如果您使用AWS或GCP等云提供商,最好的选择是使用LoadBalancer
服务类型:,该服务使用提供商负载均衡器自动向互联网公开
运行:
kubectl公开部署名称--type=LoadBalancer--name=service name
其中部署名称
必须替换为您的实际部署名称。对于所需的服务名称
稍等几分钟,kubectl get svc
命令将为您提供外部IP和端口:
owilliam@minikube:~$ kubectl get svc
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE
kubernetes ClusterIP 10.96.0.1 <none> 443/TCP 4d21h
nginx-service-lb LoadBalancer 10.96.125.208 0.0.0.0 80:30081/TCP 36m
您可以使用节点端口公开主机上的端口。参考此。如何访问它?使用主机名:NODEPORT
user@minikube:~$ kubectl get svc
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE
kubernetes ClusterIP 10.96.0.1 <none> 443/TCP 4d21h
service-name NodePort 10.96.33.84 <none> 80:31198/TCP 4s
user@minikube:~$ minikube service list
|----------------------|---------------------------|-----------------------------|-----|
| NAMESPACE | NAME | TARGET PORT | URL |
|----------------------|---------------------------|-----------------------------|-----|
| default | kubernetes | No node port |
| default | service-name | http://192.168.39.181:31198 |
| kube-system | kube-dns | No node port |
| kubernetes-dashboard | dashboard-metrics-scraper | No node port |
| kubernetes-dashboard | kubernetes-dashboard | No node port |
|----------------------|---------------------------|-----------------------------|-----|
user@minikube:~$ curl http://192.168.39.181:31198
<!DOCTYPE html>
<html>
<head>
<title>Welcome to nginx!</title>
...//// suppressed output
<p><em>Thank you for using nginx.</em></p>
</body>
</html>
user@minikube:~$