通过NodePort向k8s集群外部暴露服务
标签:
Kubernetes
有时候我们需要向集群外部暴露一些服务,这时候可以指定service的port
类型为NodePort
来实现。这时k8s会为集群中的每一个node打开nodePort
端口来让外部访问。比如集群中有三个节点:192.168.0.1、192.168.0.2、192.168.0.3,则我们可以通过9.168.0.1:nodePort
也可以通过9.168.0.2/3:nodePort
来进行访问。
但是默认的,nodePort
的范围是30000-32767
, k8s会从中随机选择一个端口,也可以在spec.ports.nodePort
中来指定一个端口。
当然我们可以通过修改apiserver
的--service-node-port-range
的参数来修改默认范围,如:--service-node-port-range 8000-9000
当服务启动以后,我们可以通过lsof -i:9000
来查看端口监控情况。
如果端口已经打开,但是其他节点无法访问,注意查看防火墙设置,ufw disable
关闭防火墙即可。
kind: Service apiVersion: v1 metadata: name: my-service spec: type: NodePort //指定service类型 selector: app: forme ports: - port: 80 // 供集群中其它container访问端口 targetPort: 8020 //转向后端pod中container暴露的端口 nodePort: 9000 //节点暴露的端口--- apiVersion: v1 kind: ReplicationController metadata: name: forme namespace: defaultspec: replicas: 1 selector: app: forme template: metadata: name: forme labels: app: forme spec: volumes: - name: "config" hostPath: path: "/data/xxx" containers: - name: forme image: forme:k8s #command: ["/bin/sh", "-c"] #args: ["tail -f /dev/null"] #args: ["sleep 20"] resources: limits: alpha.kubernetes.io/nvidia-gpu: 1 #cpu: 8 #memory: 4Gi ports: - containerPort: 8020 //该container监控的端口 volumeMounts: - name: "config" mountPath: "/home/docker/code"
作者:Mark_Zhang
链接:https://www.jianshu.com/p/ce1028c1cbc0
点击查看更多内容
为 TA 点赞
评论
共同学习,写下你的评论
评论加载中...
作者其他优质文章
正在加载中
感谢您的支持,我会继续努力的~
扫码打赏,你说多少就多少
赞赏金额会直接到老师账户
支付方式
打开微信扫一扫,即可进行扫码打赏哦