k8s之Services:创建nodeport clusterip services

1.创建Services的方法:

1).kubectl expoese命令,会给我们的pod创建一个service,供外部访问

2).通过定义一个yml文件定义一个service类型的资源.

2).service主要有三种类型:一种叫clusterIP,一种叫nodePort,一种叫外部的LoadBalancer

l ClusterIP: 仅仅使用一个集群内部的IP地址 - 这是默认值。选择这个值意味着你只想这个服务在集群内部才可以被访问到。

l NodePort: 在集群内部IP的基础上,在集群的每一个节点的端口上开放这个服务。你可以在任意<NodeIP>: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

验证:

经验分享 程序员 微信小程序 职场和发展