1.创建Services的方法:

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

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

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

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

l  NodePort: 在集群内部IP的基础上,在集群的每一个节点的端口上开放这个服务。你可以在任意<NodeIP>:NodePort地址上访问到这个服务。

l  LoadBalancer: 在使用一个集群内部IP地址和在NodePort上开放一个服务之外,向云提供商申请一个负载均衡器,会让流量转发到这个在每个节点上以<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

验证:

 

 

 

 

 

 

 

 

Logo

K8S/Kubernetes社区为您提供最前沿的新闻资讯和知识内容

更多推荐