K8S service详解
1,Service 介绍
(1)Kubernetes Service 从逻辑上代表了一组 Pod,具体是哪些 Pod 则是由 label 来挑选。
(2)Service 有自己 IP,而且这个 IP 是不变的。
- 客户端只需要访问 Service 的 IP,Kubernetes 则负责建立和维护 Service 与 Pod 的映射关系。
- 无论后端 Pod 如何变化,对客户端不会有任何影响,因为 Service 没有变
2,clusterIP类型
(1)首先编辑一个配置文件 httpd.yml,内容如下:
多个资源文件可以都在一个 YAML 中定义,用“---”分割。这里我们将 Deployment 和 Service 都放在一个配置文件中:
- Deployment 部分:启动了三个 pod,运行 httpd 镜像,label 是 run:httpd,service 将会用这个 label 来挑选 pod。
- Service 部分:挑选那些 label 为 run:httpd 的 pod 作为 service 后端的,并且将 8080 端口映射到 pod 的 80 端口。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 | [root@k8s-master deploy] # cat deploy.yaml apiVersion: apps /v1 kind: Deployment metadata: name: httpd spec: selector: matchLabels: run: httpd replicas: 3 template: metadata: labels: run: httpd spec: containers: - name: httpd image: httpd ports: - containerPort: 80 --- apiVersion: v1 # v1是service的apiversion kind: Service # 当前资源的类型为 Service。 metadata: name: httpd-svc # Service 的名字为 httpd-svc。 spec: selector: # elector 指明挑选那些 label 为 run: httpd 的 Pod 作为 Service 的后端。 run: httpd ports: # 将 Service 的 8080 端口映射到 Pod 的 80 端口,使用 TCP 协议。 - protocol: TCP port: 8080 targetPort: 80 |
(2)、查看创建的pods,可以看到目前启动了三个 pod,pod 分配了各自的 IP,这些 IP 只能被 kubernetes Cluster 中的容器和节点访问
(3)、查看svc,查看到被分配的ip类型为ClusterIP,值为10.111.30.121
(4)、ping一下ip发现是不通的
(5)、clusetIp只能是默认在集群内部被curl,在集群外部是无法访问的,集群外部访问错误
3、NodePort类型
(1)、要启用 NodePort,首先我们需要在 Service 配置中添加 type: NodePort。
(2)、查看创建好的nodeport类型的service
(3)、测试Cluster 外部可以通过 <NodeIP>:<NodePort> 访问 Service,成功
感谢您的阅读,如果您觉得阅读本文对您有帮助,请点一下“推荐”按钮。本文欢迎各位转载,但是转载文章之后必须在文章页面中给出作者和原文连接。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· winform 绘制太阳,地球,月球 运作规律
· 超详细:普通电脑也行Windows部署deepseek R1训练数据并当服务器共享给他人
· 上周热点回顾(3.3-3.9)
· AI 智能体引爆开源社区「GitHub 热点速览」
· 写一个简单的SQL生成工具