1.创建Services的方法:
1).kubectl expoese命令,会给我们的pod创建一个service,供外部访问
2).通过定义一个yml文件定义一个service类型的资源.
2).service主要有三种类型:一种叫clusterIP,一种叫nodePort,一种叫外部的LoadBalancer
l ClusterIP: 仅仅使用一个集群内部的IP地址 - 这是默认值。选择这个值意味着你只想这个服务在集群内部才可以被访问到。
l NodePort: 在集群内部IP的基础上,在集群的每一个节点的端口上开放这个服务。你可以在任意
l LoadBalancer: 在使用一个集群内部IP地址和在NodePort上开放一个服务之外,向云提供商申请一个负载均衡器,会让流量转发到这个在每个节点上以
2.通过kubectl expose创建service
第一种:通过expose创建clusterip类型的service
目前环境上有两个pod如下:
通过kubectl expose pods nginx-pod 给指定的pod创建service
这里的集群ip只有在集群里才可以访问:
如先要进入到集群中的master节点:
进入到这个节点后就可以通过 curl 10.3.248.3:80
第二种:通过expose创建nodeport类型的service:
1).先通过pod_nginx.yml创建pod
创建pod: kubectl create -f pod_nginx.yml
查看:
2).创建service类型为nodeport,该种类型service可以通过node ip:端口在外面访问
kubectl expose pods nginx-pod --type=NodePort
查看service可以看到映射到外面节点上的端口号是31404
查看ndoe的ip,
3).可以通过kubectl describe node 查看node 的IP
如图查看control节点的IP
在浏览器中就可以访问nginx
3.通过yml文件创建service
1).创建service_nginx.yml
apiVersion: v1
kind: Service
metadata:
name: nginx-service
spec:
ports:
- port: 32333 #nginx的暴露端口
nodePort: 32333 #node上的端口号
targetPort: nginx-port #基于环境中现有的pod
protocol: TCP
selector:
app: nginx #要匹配的pod的labels如下图
type: NodePort
这里的service_nginx.yml是基于环境中已经创建的pod 如下图:
targetPort对应下图中的port name:nginx-pod, selector对应下图中的pod的labels:app=nginx
nodeport端口号要为:30000~32767,不然会报以下错误
2).通过yaml文件创建service
kubectl create -f service_nginx.yml
查看:创建了一个类型是nodeport的service
验证: