k8s之service
在k8s中,如果pod 停止或重启了,那对应的ip就会变,这个时候要怎么才能够访问到对应的服务呢?
service的作用就是来解决这个问题,service是一种抽象的对象,它定义了一组pod的逻辑集合和一个用于访问它们的策略。
service下包含的pod 的集合一般是由label serlector 来决定的。
在继续往下学习 之前,我们需要先弄明白 系统中的三种IP这个问题。
1、Node IP: Node 节点的 IP 地址(是 kubernets 集群中节点的物理网卡 IP 地址(一般为内网),所有属于这个网络的服 务器之间都可以直接通信,所以 kubernets 集群外要想访问集群内部的某个节点或者服 务,肯定得通过 Node IP 进行通信(这个时候一般是通过外网 IP 了)
2、Pod IP: Pod 的IP地址 (是每个 Pod 的 IP 地址,它是docker engine根据 docker 0网桥的 IP 地址段进行分配的)
3、Cluster IP: 的 IP 地址 (是一个虚拟的 IP ,仅仅作用于 这个对象,由 kubernets自己 来进行管理和分配地址,当然我们也无法 ping 这个地址,他没有一个真正的实体对象来响应,它只能结合service port来组成一个可以通信的服务。)
常用的service类型有:
ClusterIP:通过集群的内部 IP 暴露服务,选择该值,服务只能够在集群内部可以访问,这也是默 认的ServiceType
NodePort:通过每个 Node 节点上的 IP 和静态端口(NodePort)暴露服务。NodePort 服务会路 由到 ClusterIP 服务,这个 ClusterIP 服务会自动创建。通过请求 :,可以从集群的外部访问一个 NodePort 服务。