k8s--server学习

本文介绍了Kubernetes Service的重要性,Service的工作原理,包括其作为Pod逻辑集合的角色,以及依赖DNS和kube-proxy的转发机制。详细阐述了Service的四种类型:ExternalName、ClusterIP、NodePort和LoadBalancer,并通过实验步骤展示了如何创建ClusterIP和NodePort类型的Service,以实现集群内外的访问。
摘要由CSDN通过智能技术生成

 大多数资料由老师提供。


目录

server概念

为什么要有service?

service概述

service工作原理

service的四种实现类型

 实验步骤

创建service:type类型为ClusterIP

创建service: type类型是NodePort


server概念

为什么要有service?

         在 kubernetes 中,Pod 是有生命周期的,如果 Pod 重启它的 IP 很有可能会发生变化。如果我们的服务都是将 Pod 的 IP 地址写死,Pod 挂掉或者重启,和刚才重启的 pod 相关联的其他服务将会找不到它所 关联的 Pod,为了解决这个问题,在 kubernetes 中定义了 service 资源对象,Service 定义了一个服务访问的入口,客户端通过这个入口即可访问服务背后的应用集群实例,service 是一组 Pod 的逻辑集合, 这一组 Pod 能够被 Service 访问到,通常是通过 Label Selector 实现的。

如下图:

pod ip经常变化,service是pod的代理,客户端访问,只需要访问service,就会把请求代理到Pod

pod ip在k8s集群外无法访问,所以需要创建service,这个service可以在k8s集群外访问。

service概述

service 是一个固定接入层,客户端可以通过访问 service 的 ip 和端口访问到 service 关联的后端 pod,这个 service 工作依赖于在 kubernetes 集群之上部署的一个附件,就是 kubernetes 的 dns 服务 (不同 kubernetes 版本的 dns 默认使用的也是不一样的,1.11 之前的版本使用的是 kubeDNs,较新的版 本使用的是 coredns),service 的名称解析是依赖于 dns 附件的,因此在部署完 k8s 之后需要再部署 dns 附件,kubernetes 要想给客户端提供网络功能,需要依赖第三方的网络插件(flannel,calico 等)。每 个 K8s 节点上都有一个组件叫做 kube-proxy,kube-proxy 这个组件将始终监视着 apiserver 中有关 service 资源的变动信息,需要跟 master 之上的 apiserver 交互,随时连接到 apiserver 上获取任何一 个与 service 资源相关的资源变动状态,这种是通过 kubernetes 中固有的一种请求方法 watch(监视) 来实现的,一旦有 service 资源的内容发生变动(如创建,删除),kube-proxy 都会将它转化成当前节点 之上的能够实现 service 资源调度,把我们请求调度到后端特定的 pod 资源之上的规则,这个规则可能 是 iptables,也可能是 ipvs,取决于 service 的实现方式。

service工作原理

        k8s 在创建 Service 时,会根据标签选择器 selector(lable selector)来查找 Pod,据此创建与 Service 同名的 endpoint 对象,当 Pod 地址发生变化时,endpoint 也会随之发生变化,service 接收前 端 client 请求的时候,就会通过 endpoint,找到转发到哪个 Pod 进行访问的地址。(至于转发到哪个节 点的 Pod,由负载均衡 kube-proxy 决定)

service的四种实现类型

ExternalName:适用于k8s集群内部容器访问外部资源,它没用selector,也没用定义任何端口和Endpoint。

ClusterIP:提供一个集群内部的虚拟IP地址以供Pod访问(默认模式)

NodePort:在Node上打开一个端口以供外部访问

LoadBalancer:通过外部负载均衡器来访问 (需要额外的模组来提供负载均衡)

 实验步骤

创建service:type类型为ClusterIP

创建一个文件夹用来存放yaml文件

mkdir /opt/tmp

cd /opt/tmp

1.首先创建pod

[root@master tmp]# cat pod_test.yaml
apiVersion: apps/v1
kind: Deployment
metadata:
  name: my-nginx
spec:
  selector:
    matchLabels:
       gg: my-nginx
  replicas: 2
  template:
    metadata:
      labels:
        gg: my-ngi
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

肆伍玖

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值