k8s资源类型主要有Service、Pod、Deployment,其中Service资源NodePort负责与外部通信,将nodePort端口映射到内部port端口。外部请求服务调用时,通过NodePort将请求转发到Pod端口。
-
具体如下nodeport.yaml示例
对上图做如下说明
1)定义资源类型kind: Service
定义Service类型NodePort,向外部暴露nodePort: 30080端口,并映射到port: 80端口,选择器selector选择应用webpp1-nodePort。
2)定义资源类型kind:Deployment
Deployment设置replicas:2即定义两个副本,应用标签名称是webpp1-nodePort,containerPort定义应用端口。 - 操作
可通过网上提供的免费资源进行实际操作,具体操作如下:
1) 在浏览器中打开网页
输入这个网址:https://www.katacoda.com/courses/kubernetes/networking-introduction, 打开后会提供了一个实验用的Kubernetes集群,并可以通过网元模拟Terminal连接到集群的Master节点。
2)执行下面的命令创建一个nodeport类型的service。
kubectl apply -f nodeport.yaml
3)查看创建的service,可以看到kubernetes创建了一个名为webapp-nodeport-svc的service,并为该service在主机节点上创建了30080这个Nodeport。
kubectl get svc
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE
kubernetes ClusterIP 10.96.0.1 <none> 443/TCP 36m
webapp1-nodeport-svc NodePort 10.103.188.73 <none> 80:30080/TCP 3m
4)执行查看pod命令,看到创建了两个pod
kubectl get pod -o wide