如何解决Kubernetes:hostPort和hostIp的用途是什么?
我试图了解Kubernetes中的hostIP和hostPort。
这是我的集群配置:
3个流浪节点:
nodes = [
{ :hostname => 'k8s-master',:ip => '192.168.150.200',:ram => 4096 },{ :hostname => 'k8s-minion1',:ip => '192.168.150.201',{ :hostname => 'k8s-minion2',:ip => '192.168.150.202',]
我编写以下清单进行测试:
apiVersion: v1
kind: Pod
metadata:
name: firstpod
spec:
containers:
- name: container
image: nginx
ports:
- containerPort: 80
hostIP: 10.0.0.1
hostPort: 8080
我与kubectl apply -f port.yml
一起部署
吊舱在k8s-minion2上运行
kubectl get pods -o wide gives :
NAME READY STATUS RESTARTS AGE IP NODE
firstpod 1/1 Running 0 2m 10.38.0.3 k8s-minion2
我可以从群集内部卷曲ngnix,如下所示:
#ssh inside the cluster
vagrant ssh k8s-master
#curl the containerPort on the pod ip
curl 10.38.0.3:80
但是,我不知道如何使用hostIp和hostPort。 卷曲10.0.0.1:8080给出:
curl: (7) Failed to connect to 10.0.0.1 port 80: Connection timed out
并卷曲节点或群集Ip给出的:
curl: (7) Failed to connect to 10.38.0.3 port 8080: Connection refused
那么8080端口在哪里打开,hostIp打算做什么?
谢谢
解决方法
ClusterIP
(10.38.0.3
)仅可从群集内部访问。要从群集外部访问服务,请尝试nodeIP:port
192.168.150.202:8080
,NodePort服务类型允许我们在每个Node的 静态端口上的IP。因此,它允许从以下位置访问服务 在集群之外。
如果您查看kubernetes API reference,您会发现hostIP
是IP,一旦将pod调度到节点中,它就会被分配。
hostIP
(字符串)-吊舱所在的主机的IP地址 已分配。如果尚未安排,则为空。
如果需要,可以进一步exposed作为容器中的env(spec.hostIP
)
使用hostPort
,您可以将容器端口暴露给外部网络:,其中hostIP是运行容器的Kubernetes节点的IP地址,hostPort是用户请求的端口。您可以进一步了解here。
如果您想到达吊舱,还有其他方法可以做到这一点,例如ClusterIP
或NodePort
,具体取决于请求是来自内部还是外部。 article贯穿他们及其差异。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。