K8S 集群核心概念 Service_Service 介绍 | 学习笔记

本文涉及的产品
容器服务 Serverless 版 ACK Serverless,952元额度 多规格
容器服务 Serverless 版 ACK Serverless,317元额度 多规格
简介: 快速学习 K8S 集群核心概念 Service_Service 介绍

开发者学堂课程【Kubernetes 极速入门:K8S 集群核心概念 Service_Service 介绍】学习笔记,与课程紧密联系,让用户快速学习知识。

课程地址:https://developer.aliyun.com/learning/course/658/detail/10916


K8S 集群核心概念 Service_Service 介绍


内容介绍:

一、场景

二、学习目标

三、学习步骤

四、课程内容

 

一、场景

通过前面课程的学习,已经可以通过控制器创建相关的应用。可是在访问应用时发现这样一个问题,Pod 如果是被人为关闭的,Controller 就会重新拉起一个新的 Pod。

如果重新拉起,Pod 的 IP地址就会重新分配。如果是通过 Pod 的 IP 地址来访问 Pod 的话,会发现可能无法完全的去控制 Pod 的访问。

因此在 k8s 集群当中引入了这样一个概念,这个概念就叫做 Service,专门用于控制对于 Pod 的访问。不管这个应用有多少 Pod,都不会直接去访问,只要访问这个应用所包含的 Service 就可以访问到 Pod 了。

 

二、学习目标

1、了解 Service 是什么?

2、了解 Service 作用。

3、了解 Service 类型。

4、了解 Service 参数。

5、掌握 Service 创建方法。

6、了解 Service 删除方法。

 

三、学习步骤

首先按照学习目标对学习步骤进行设计,在这里同样是分成六个步骤。

1、了解 Service 是什么

2、了解 Service 作用

3、了解 Service 类型

4、了解 Service 参数

5、掌握 Service 创建方法

6、了解 Service 删除方法

这就是步骤的一个顺序,按照这个步骤进行学习。

 

四、课程内容

1、Service 介绍

在这里要注意到在 K8s 当中,Service 这个概念不是实体服务。所讲的实体服务是什么呢?

比如说一个服务要有自己所运行的配置文件,也有自己所运营的数据文件,这是一个实体服务。

但是 Service 在  K8s 当中,它仅仅是一条 iptables 或 ipvs 的转发规则,因此它没有自己的配置文件以及运行文件,更加没有自己的守护进程,所以说在这里它仅仅只是一个服务。

比如说,当去饭店吃饭的时候,会遇到服务员,服务员是一个人完全没有问题,但是他的服务其实仅仅只是一种转换,老板把菜单递给服务员,服务员再把菜单递给顾客,顾客进行点菜,然后服务员再把菜单递给厨师,厨师再去做菜,所以说服务员在这个过程中是起到一个转发和连接的作用。

那么其实在这里 Service 的性质和服务员是差不多的,也是起到一个转换和连接的作用。去饭店吃饭需要找服务员,如果直接找老板或者大厨就可能吃不到饭。

2、Service 作用

Service 作用是可以让 pod 能够被用户访问,那么 pod 的 IP 地址会经常发生变化,如果直接访问 pod ,并且 IP 地址发生变化,那下次可能不知道它的地址是什么。因此是通过 Service 为 pod 客户端提供访问 pod 方法,即客户端访问 pod 入口。那么怎么样让 Service 与 pod 进行关联呢?

在这里有一个 Service 通过 pod 标签与 pod 进行关联。

在下面这幅图当中,可以简单了解一下,有 pod 和 Node 两个图例,在最中间的位置就是 pod , pod 有 IP 地址,是10.10.10.1。如果想要直接访问 pod 的话, pod 的 IP 地址会直接发生变化,所以在这里10.10.10.1并不是永久存在的,所以不建议直接访问 pod 。那可以在 pod 的前端加一个 Service ,这样的目的就是为了让用户能够直接通过这个 Service 来访问 pod ,这个 Service 的 IP 地址是10.10.9.1。

image.png

它的这个 IP 地址是很少发生变化的,或者是通过它的域名进行访问。它的最外侧这一层是物理机,那么在这个过程当中怎么关联呢?可以给 pod 起一个标签。

比如说 app:nginx,这样就可以解决了。那么 Service 与它关联的时候,只要让 Service 来找这个标签(app:nginx),这样的话就可以让 Service 与 pod 进行关联。

3、Service 类型

Service 有四种类型,在这里举一下例子。

第一种是  ClusterIP。它是什么意思呢?

当在集群当中创建一个 Service 的时候,会自动分配一个集群的虚拟 IP ,访问这个虚拟 IP ,就可以访问到 Service 了。访问到 Service 之后就可以访问到 pod 了。但是这个只能是在集群内的主机来进行访问。

第二种类型就是 NodePort ,它就是通过物理机的端口映射来完成一个 pod 访问。

如果在集群之外来访问  K8s 集群内的 Service 的话,那就可以在每个Node上分配一个端口作为Service 的映射端口,然后就可以通过这个端口就可以访问到 Service ,进一步就可以访问到 pod 了。

第三种类型就是 LoadBalancer ,它一般工作在特定的 Cloud Provider 上,例如 Google Cloud,AWS,OpenStack 。这种方式一般在局域网当中使用的比较少,如果 K8s 集群部署在 OpenStack 之上,就可以通过这种方式访问了。

第四种类型是 ExternalName ,这种方式的 Service是把集群外部的服务引入到集群内部中来,即实现了集群内的 pod 和集群外部的服务进行通信。

4、Service 参数

Service 参数有很多种,在这里重点介绍的是端口参数,端口参数第一种是tport ,它是创建 K8s 集群当中的 Service 的时候,会自动分配一个端口,当然这也是对应相应的服务类型;

第二种是 targetPort ,它包括的是 Pod  中容器的端口。

第三种是 NodePort ,它是主要针对 Service 的类型,它要是一个 NodePort  类型,则通过 Node实现外网用户访问k8s集群内service。

一般的话可以随机也可以手工指定,随机的话它的范围是30000-32767,特别注意这个范围

相关实践学习
通过Ingress进行灰度发布
本场景您将运行一个简单的应用,部署一个新的应用用于新的发布,并通过Ingress能力实现灰度发布。
容器应用与集群管理
欢迎来到《容器应用与集群管理》课程,本课程是“云原生容器Clouder认证“系列中的第二阶段。课程将向您介绍与容器集群相关的概念和技术,这些概念和技术可以帮助您了解阿里云容器服务ACK/ACK Serverless的使用。同时,本课程也会向您介绍可以采取的工具、方法和可操作步骤,以帮助您了解如何基于容器服务ACK Serverless构建和管理企业级应用。 学习完本课程后,您将能够: 掌握容器集群、容器编排的基本概念 掌握Kubernetes的基础概念及核心思想 掌握阿里云容器服务ACK/ACK Serverless概念及使用方法 基于容器服务ACK Serverless搭建和管理企业级网站应用
相关文章
|
8天前
|
存储 Kubernetes 负载均衡
CentOS 7.9二进制部署K8S 1.28.3+集群实战
本文详细介绍了在CentOS 7.9上通过二进制方式部署Kubernetes 1.28.3+集群的全过程,包括环境准备、组件安装、证书生成、高可用配置以及网络插件部署等关键步骤。
71 3
CentOS 7.9二进制部署K8S 1.28.3+集群实战
|
8天前
|
Kubernetes 负载均衡 前端开发
二进制部署Kubernetes 1.23.15版本高可用集群实战
使用二进制文件部署Kubernetes 1.23.15版本高可用集群的详细教程,涵盖了从环境准备到网络插件部署的完整流程。
17 2
二进制部署Kubernetes 1.23.15版本高可用集群实战
|
8天前
|
存储 Kubernetes 测试技术
k8s使用pvc,pv,sc关联ceph集群
文章介绍了如何在Kubernetes中使用PersistentVolumeClaim (PVC)、PersistentVolume (PV) 和StorageClass (SC) 来关联Ceph集群,包括创建Ceph镜像、配置访问密钥、删除默认存储类、编写和应用资源清单、创建资源以及进行访问测试的步骤。同时,还提供了如何使用RBD动态存储类来关联Ceph集群的指南。
24 7
|
8天前
|
存储 Kubernetes 数据安全/隐私保护
k8s对接ceph集群的分布式文件系统CephFS
文章介绍了如何在Kubernetes集群中使用CephFS作为持久化存储,包括通过secretFile和secretRef两种方式进行认证和配置。
19 5
|
8天前
|
Kubernetes 负载均衡 应用服务中间件
kubeadm快速构建K8S1.28.1高可用集群
关于如何使用kubeadm快速构建Kubernetes 1.28.1高可用集群的详细教程。
25 2
|
8天前
|
Kubernetes Linux API
CentOS 7.6使用kubeadm部署k8s 1.17.2测试集群实战篇
该博客文章详细介绍了在CentOS 7.6操作系统上使用kubeadm工具部署kubernetes 1.17.2版本的测试集群的过程,包括主机环境准备、安装Docker、配置kubelet、初始化集群、添加节点、部署网络插件以及配置k8s node节点管理api server服务器。
36 0
CentOS 7.6使用kubeadm部署k8s 1.17.2测试集群实战篇
|
11天前
|
API UED 开发者
超实用技巧大放送:彻底革新你的WinForms应用,从流畅动画到丝滑交互设计,全面解析如何在保证性能的同时大幅提升用户体验,让软件操作变得赏心悦目不再是梦!
【8月更文挑战第31天】在Windows平台上,使用WinForms框架开发应用程序时,如何在保持性能的同时提升用户界面的吸引力和响应性是一个常见挑战。本文探讨了在不牺牲性能的前提下实现流畅动画与交互设计的最佳实践,包括使用BackgroundWorker处理耗时任务、利用Timer控件创建简单动画,以及使用Graphics类绘制自定义图形。通过具体示例代码展示了这些技术的应用,帮助开发者显著改善用户体验,使应用程序更加吸引人和易于使用。
29 0
|
11天前
|
运维 Kubernetes Cloud Native
探索云原生:Kubernetes集群的部署与管理
【8月更文挑战第31天】 本文将带领读者深入了解云原生技术,特别是以Kubernetes为核心的集群部署和管理。文章不仅介绍了Kubernetes的基础概念和架构,还通过实际的代码示例展示了如何在云平台上搭建一个Kubernetes集群。我们将从基础的安装步骤到高级的服务部署,一步步揭示如何利用Kubernetes来简化容器化应用的管理与扩展。无论你是云原生新手还是希望提升现有技能的开发者,这篇文章都将成为你实践云原生技术的宝贵指南。
|
11天前
|
Kubernetes Cloud Native 应用服务中间件
云原生之旅:构建你的首个Kubernetes集群
【8月更文挑战第31天】在这个数字化迅速演进的时代,云原生技术如同星辰般璀璨。它不仅是企业数字化转型的引擎,更是开发者们探索创新的乐园。本文将带你开启一场云原生的奇妙旅程,从零开始,一步步构建属于你自己的Kubernetes集群。想象一下,当你的应用在云端自如地伸缩、滚动更新时,那份成就感和掌控感,是不是已经让你跃跃欲试了呢?那就让我们开始吧!
|
11天前
|
Kubernetes Cloud Native JavaScript
云原生之旅:Kubernetes 集群搭建与应用部署实践
【8月更文挑战第31天】云原生技术正在改变软件开发和运维的方式,而Kubernetes作为其核心组件之一,提供了一个强大的平台来编排容器化的应用。本文将引导你了解如何搭建一个基本的Kubernetes集群,并通过一个简单的Node.js应用示例,展示如何在集群中部署和管理应用。我们将从零开始,逐步构建起对Kubernetes的直观理解,并在实践中学习其核心概念。