【从问题中去学习k8s】k8s中的常见面试题(夯实理论基础)(十八)

本文主要是介绍【从问题中去学习k8s】k8s中的常见面试题(夯实理论基础)(十八),希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

  本站以分享各种运维经验和运维所需要的技能为主

《python零基础入门》:python零基础入门学习

《python运维脚本》: python运维脚本实践

《shell》:shell学习

《terraform》持续更新中:terraform_Aws学习零基础入门到最佳实战

《k8》从问题中去学习k8s

《docker学习》暂未更新

《ceph学习》ceph日常问题解决分享

《日志收集》ELK+各种中间件

《运维日常》运维日常

《linux》运维面试100问

《DBA》db的介绍使用(mysql、redis、mongodb...)

思考一下问题:-今天我们就只聊聊service

86、 K8s的Service是什么?

参考答案:

在 Kubernetes (k8s) 中,Service 是一个非常核心的概念,它定义了一种抽象方式来暴露应用。Service 允许内部或外部的流量访问集群中的一组特定的 Pod,无论这些 Pod 的生命周期和数量如何变化。

### Service 的主要功能和特点:

1. **负载均衡**:
   Service 提供了一个固定的 IP 地址和 DNS 名称,通过这个地址可以访问后端的一组 Pod。当流量发送到 Service 时,它会自动进行负载均衡,将请求分发到后端的多个 Pod 中。

2. **服务发现**:
   Kubernetes 通过 DNS 或环境变量为 Service 自动提供服务发现。这意味着一个 Pod 可以通过 Service 的名称找到它并与之通信,而不需要知道具体的 Pod IP。

3. **抽象和解耦**:
   Service 作为 Pod 的前端代理,使得前端应用不需要关心后端 Pod 的具体部署情况。即使后端 Pod 发生扩展、更新或重启,前端应用也可以通过不变的 Service 访问后端功能。

4. **持久性连接**:
   Service 确保 IP 地址的持久性,即使后端 Pod 发生变化,Service 的 IP 地址和端口保持不变。

### Service 的类型:

1. **ClusterIP**(默认):
   这是默认类型,它为 Service 分配一个内部的 IP 地址,使得 Service 只能在集群内部访问,这适用于集群内部的通信。

2. **NodePort**:
   这种类型的 Service 在所有节点上打开一个端口(NodePort),使得 Service 可以通过 `<NodeIP>:<NodePort>` 从集群外部访问。

3. **LoadBalancer**:
   这种类型的 Service 适用于那些运行在云提供商平台上的 Kubernetes 集群。它在 NodePort 的基础上,使用云提供商的负载均衡器,为 Service 提供一个可从互联网访问的固定 IP 地址。

4. **ExternalName**:
   这种类型的 Service 允许通过 Kubernetes 服务来引用外部的服务。它通过返回一个指定的 DNS 名称来实现,而不是像传统的 Service 那样通过 IP 地址进行通信。

### 如何使用 Service:

要创建一个 Service,你通常会在 Kubernetes 配置文件中定义 Service 对象,指定它的类型和选择器(selector),后者用于确定哪些 Pod 会被 Service 的流量访问。例如,一个简单的 ClusterIP Service 的定义可能如下所示:

```yaml
apiVersion: v1
kind: Service
metadata:
  name: my-service
spec:
  selector:
    app: MyApp
  ports:
    - protocol: TCP
      port: 80
      targetPort: 9376
```

这个 Service 定义创建了一个名为 "my-service" 的 ClusterIP Service,它将端口 80 的流量转发到标签为 `app: MyApp` 的 Pod 上的 9376 端口。

总之,Service 是 Kubernetes 中实现 Pod 间通信和对外连接的关键组件,提供了稳定的接口和负载均衡功能。

这篇关于【从问题中去学习k8s】k8s中的常见面试题(夯实理论基础)(十八)的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1105878

相关文章

SpringBoot内嵌Tomcat临时目录问题及解决

《SpringBoot内嵌Tomcat临时目录问题及解决》:本文主要介绍SpringBoot内嵌Tomcat临时目录问题及解决,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,... 目录SprinjavascriptgBoot内嵌Tomcat临时目录问题1.背景2.方案3.代码中配置t

SpringBoot使用GZIP压缩反回数据问题

《SpringBoot使用GZIP压缩反回数据问题》:本文主要介绍SpringBoot使用GZIP压缩反回数据问题,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录SpringBoot使用GZIP压缩反回数据1、初识gzip2、gzip是什么,可以干什么?3、Spr

SQL BETWEEN 的常见用法小结

《SQLBETWEEN的常见用法小结》BETWEEN操作符是SQL中非常有用的工具,它允许你快速选取某个范围内的值,本文给大家介绍SQLBETWEEN的常见用法,感兴趣的朋友一起看看吧... 在SQL中,BETWEEN是一个操作符,用于选取介于两个值之间的数据。它包含这两个边界值。BETWEEN操作符常用

python中各种常见文件的读写操作与类型转换详细指南

《python中各种常见文件的读写操作与类型转换详细指南》这篇文章主要为大家详细介绍了python中各种常见文件(txt,xls,csv,sql,二进制文件)的读写操作与类型转换,感兴趣的小伙伴可以跟... 目录1.文件txt读写标准用法1.1写入文件1.2读取文件2. 二进制文件读取3. 大文件读取3.1

Android Mainline基础简介

《AndroidMainline基础简介》AndroidMainline是通过模块化更新Android核心组件的框架,可能提高安全性,本文给大家介绍AndroidMainline基础简介,感兴趣的朋... 目录关键要点什么是 android Mainline?Android Mainline 的工作原理关键

如何解决idea的Module:‘:app‘platform‘android-32‘not found.问题

《如何解决idea的Module:‘:app‘platform‘android-32‘notfound.问题》:本文主要介绍如何解决idea的Module:‘:app‘platform‘andr... 目录idea的Module:‘:app‘pwww.chinasem.cnlatform‘android-32

C++中初始化二维数组的几种常见方法

《C++中初始化二维数组的几种常见方法》本文详细介绍了在C++中初始化二维数组的不同方式,包括静态初始化、循环、全部为零、部分初始化、std::array和std::vector,以及std::vec... 目录1. 静态初始化2. 使用循环初始化3. 全部初始化为零4. 部分初始化5. 使用 std::a

kali linux 无法登录root的问题及解决方法

《kalilinux无法登录root的问题及解决方法》:本文主要介绍kalilinux无法登录root的问题及解决方法,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,... 目录kali linux 无法登录root1、问题描述1.1、本地登录root1.2、ssh远程登录root2、

SpringBoot应用中出现的Full GC问题的场景与解决

《SpringBoot应用中出现的FullGC问题的场景与解决》这篇文章主要为大家详细介绍了SpringBoot应用中出现的FullGC问题的场景与解决方法,文中的示例代码讲解详细,感兴趣的小伙伴可... 目录Full GC的原理与触发条件原理触发条件对Spring Boot应用的影响示例代码优化建议结论F

前端下载文件时如何后端返回的文件流一些常见方法

《前端下载文件时如何后端返回的文件流一些常见方法》:本文主要介绍前端下载文件时如何后端返回的文件流一些常见方法,包括使用Blob和URL.createObjectURL创建下载链接,以及处理带有C... 目录1. 使用 Blob 和 URL.createObjectURL 创建下载链接例子:使用 Blob