首页 > 其他分享 >ClusterIP类型的Service

ClusterIP类型的Service

时间:2022-11-28 13:22:08浏览次数:47  
标签:kubectl Service service dev 类型 master ClusterIP pod root

Service使用

实验环境准备

在使用service之前,首先利用Deployment创建出3个pod,注意要为pod设置`app=nginx-pod`的标签

创建deployment.yaml,内容如下:

apiVersion: apps/v1
kind: Deployment      
metadata:
  name: pc-deployment
  namespace: dev
spec: 
  replicas: 3
  selector:
    matchLabels:
      app: nginx-pod
  template:
    metadata:
      labels:
        app: nginx-pod
    spec:
      containers:
      - name: nginx
        image: nginx:1.17.1
        ports:
        - containerPort: 80

创建并查看

[root@master ~]# kubectl create -f deployment.yaml

# 查看pod详情
[root@master ~]# kubectl get pods -n dev -o wide

# 为了方便后面的测试,修改下三台nginx的index.html页面(三台修改的IP地址不一致)

[root@master ~]# kubectl exec -it pc-deployment-7d7dd5499b-8ld77 -n dev -- bash -c "echo nginx1 > /usr/share/nginx/html/index.html"
[root@master ~]# kubectl exec -it pc-deployment-7d7dd5499b-czkzj -n dev -- bash -c "echo nginx2 > /usr/share/nginx/html/index.html"
[root@master ~]# kubectl exec -it pc-deployment-7d7dd5499b-ndrcp -n dev -- bash -c "echo nginx3 > /usr/share/nginx/html/index.html"

[root@master ~]# curl 10.244.2.71
[root@master ~]# curl 10.244.1.87
[root@master ~]# curl 10.244.1.86

ClusterIP类型的Service
创建

创建service-clusterip.yaml文件

apiVersion: v1
kind: Service
metadata:
  name: service-clusterip
  namespace: dev
spec:
  selector:
    app: nginx-pod
  clusterIP: 10.97.97.97 # service的ip地址,如果不写,默认会生成一个
  type: ClusterIP
  ports:
  - port: 80  # Service端口       
    targetPort: 80 # pod端口

创建并查看

# 创建service
[root@master ~]# kubectl create -f service-clusterip.yaml

# 查看service
[root@master ~]# kubectl get svc -n dev -o wide

# 查看service的详细信息
# 在这里有一个Endpoints列表,里面就是当前service可以负载到的服务入口

[root@master ~]# kubectl describe svc service-clusterip -n dev
[root@master ~]# kubectl get endpoints -n dev #一般不用该命令,因为上面命令已包含

# 查看ipvs的映射规则
[root@ master ~]# ipvsadm -Ln

# 访问10.97.97.97:80观察效果
Endpoint

Endpoint是kubernetes中的一个资源对象,存储在etcd中,用来记录一个service对应的所有pod的访问地址,它是根据service配置文件中selector描述产生的。

一个Service由一组Pod组成,这些Pod通过Endpoints暴露出来, Endpoints是实现实际服务的端点集合。换句话说,service和pod之间的联系是通过endpoints实现的。

image-20200509191917069

负载分发策略

对Service的访问被分发到了后端的Pod上去,目前kubernetes提供了两种负载分发策略:

- 如果不定义,默认使用kube-proxy的策略,比如随机、轮询
- 基于客户端地址的会话保持模式,即来自同一个客户端发起的所有请求都会转发到固定的一个Pod上

此模式可以使在spec中添加`sessionAffinity:ClientIP`选项

查看svc
[root@master ~]# kubectl get svc service-clusterip -n dev

查看pod
[root@master ~]# kubectl get pod -n dev -owide

# 查看ipvs的映射规则【rr 轮询】
[root@master ~]# ipvsadm -Ln

# 循环访问测试
[root@master ~]# while true;do curl 10.97.97.97:80; sleep 1; done;

会话保持模式
# 修改分发策略----sessionAffinity:ClientIP

[root@master ~]# kubectl describe svc service-clusterip -n dev

 

# 查看ipvs规则【persistent 代表持久】

[root@master ~]# ipvsadm -Ln

# 循环访问测试

[root@master ~]# while true;do curl 10.97.97.97; sleep 1; done;

# 删除service
[root@master ~]# kubectl delete -f service-clusterip.yaml

参考

黑马B站k8s课程https://www.bilibili.com/video/BV1Qv41167ck/
https://gitee.com/yooome/golang/blob/main/k8s%E8%AF%A6%E7%BB%86%E6%95%99%E7%A8%8B-%E8%B0%83%E6%95%B4%E7%89%88/k8s%E8%AF%A6%E7%BB%86%E6%95%99%E7%A8%8B.md
https://www.yuque.com/fairy-era/yg511q/xyqxge

标签:kubectl,Service,service,dev,类型,master,ClusterIP,pod,root
From: https://www.cnblogs.com/gys001/p/16931935.html

相关文章

  • 动态路由---OSPF接口类型和DR
    1.OSPF网络类型一种接口变量,这个变量将影响OSPF在接口上的工作,如:发送报文、是否选举DR、BDR等2.DR和BDR广播型网络MA和NBMA网络中,为了减少邻接关系的数量,从而减......
  • 数据类型及字节
    数据类型强数据语言要求变量的使用要严格符合规定,所有变量都必须先定义后才能使用弱数据语言Java的数据类型分为两大类基本类型(primitivetype)引用类型(reference......
  • 【linux】linux中的文件类型
    普通文件类型最常使用的一类文件,其特点是不包含有文件系统信息的结构信息。通常用户所接触到的文件,比如图形文件、数据文件、文档文件以及声音文件都属于这种文件,这种类......
  • python3数据类型
    1. 数字类型 Python数字类型主要包括int(整型)和float(浮点型) int(整型) 在32位机器上,整数的位数是32位,取值范围是-231~231-1,即-2147483648~214748364;在64位系统上,整......
  • 简单记录JAVA浮点类型判断BUG
    //0.3*1==0.3结果:trueSystem.out.println("0.3*1==0.3结果:"+(0.3*1==0.3));//0.1*3==0.3结果:falseSystem.out.println("0.......
  • PYTHON 数据类型
    1.1数据类型数据都有类型,python的标准类型:数字:int,float,complex,bool字符串:str列表:list元组:tuple集合:set字典:dict可以用type()函数识别数据类型......
  • Redis学习(十)之redis中的数据类型之Streams类型
      1、redis流这种结构类似于日志追加; 2、redis生成一个唯一id为每个流,使用id检索他们的关联条目或者处理后续条目,这个怎么理解???到底是怎么关联的? 3、redis流支持多......
  • ServiceEntry和workloadentry
    部署client[root@masterServiceEntry-and-WorkloadEntry]#kubectlapply-f00-Deploy-Client/deployment.apps/clientcreatedservice/clientcreated[root@master......
  • 基本数据类型之间的运算规则
    一、自动类型提升 byte(1)short(2)int(4)long(8)floatdouble当容量小的数据类型的变量与容量大的数据类型的变量做运算时,要用容量大的数据类型来接------结果自......
  • System.Runtime.InteropServices浅见
    System.Runtime.InteropServices提供了相应的类或者方法来支持托管/非托管模块间的互相调用。System.Runtime.InteropServices中几个比较重要的类:DllImportAttribute: 该......