持续集成部署-k8s-服务发现-Service

@TOC(持续集成部署-k8s-服务发现-Service:配置讲解及基础命令)

1. Service 简介

在K8s中,`Service` 是一种可以暴露一个或多个`Pod`的稳定的网络终点,从而形成逻辑上的应用服务单元,为服务发现、负载均衡、容错等提供了基础设施支持。

`Service`的主要作用包括以下几个方面:

  • **1. 实现内部服务发现**:在K8s中,往往会有多个`Pod`运行同一种应用服务,`Service`可以将这些`Pod`组合成一个逻辑上的服务单元,并且为这个服务单元分配一个唯一的`Cluster IP`地址,以供其他应用程序调用。

  • **2. 提供负载均衡能力**:`Service`可以将请求引导到多个后端`Pod`中的任意一个,从而实现负载均衡。

  • **3. 支持动态扩容**:当需要增加`Pod`时,只需要将其添加到K8s集群中即可,Service会自动将其纳入服务单元并开始将请求转发到该Pod。

  • **4. 支持多种调度策略**:`Service`支持多种调度策略,包括轮询、最少连接数、IP哈希、基于标签选择器的随机等等。

总之,`Service`是K8s平台中非常重要的一个组件,它提供了一种简单、灵活、可靠的方式来支持容器化应用程序的服务发现和负载均衡。

2. 基础命令

创建 Service :`nginx-svc.yaml`,内容如下:

```yaml

apiVersion: v1

kind: Service # 资源类型为 Service

metadata:

name: nginx-svc # Service 名字

labels:

app: nginx # Service 自己本身的标签

spec:

selector: # 匹配哪些 pod 会被该 service 代理

app: nginx-deploy # 所有匹配到这些标签的 pod 都可以通过该 service 进行访问

ports: # 端口映射

  • port: 80 # service 自己的端口,在使用内网 ip 访问时使用

targetPort: 80 # 目标 pod 的端口

nodePort: 32000 # 固定绑定到所有 node 的 32000 端口上

name: web # 为端口起个名字

type: NodePort # 随机启动一个端口(30000~32767),映射到 ports 中的端口,该端口是直接绑定在 node 上的,且集群中的每一个 node 都会绑定这个端口

也可以用于将服务暴露给外部访问,但是这种方式实际生产环境不推荐,效率较低,而且 Service 是四层负载

```

接着创建Service:`kubectl create -f nginx-svc.yaml`

查看 Service 列表:

```sh

root@docker-54 \~# kubectl get svc

NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE

kubernetes ClusterIP 10.96.0.1 <none> 443/TCP 160d

nginx ClusterIP None <none> 80/TCP 5d19h

nginx-svc NodePort 10.96.169.50 <none> 80:31772/TCP 3d18h

root@docker-54 \~#

```

查看 service 信息,通过 service 的 cluster ip 进行访问:

```sh

root@docker-54 services# kubectl get svc

NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE

kubernetes ClusterIP 10.96.0.1 <none> 443/TCP 160d

nginx ClusterIP None <none> 80/TCP 5d19h

nginx-svc NodePort 10.96.169.50 <none> 80:31772/TCP 3d18h

root@docker-54 services#

root@docker-54 services# curl 10.96.169.50

<!DOCTYPE html>

<html>

<head>

<title>Welcome to nginx!</title>

<style>

body {

width: 35em;

margin: 0 auto;

font-family: Tahoma, Verdana, Arial, sans-serif;

}

</style>

</head>

<body>

<h1>Welcome to nginx!</h1>

<p>If you see this page, the nginx web server is successfully installed and

working. Further configuration is required.</p>

<p>For online documentation and support please refer to

<a href="http://nginx.org/">nginx.org</a>.<br/>

Commercial support is available at

<a href="http://nginx.com/">nginx.com</a>.</p>

<p><em>Thank you for using nginx.</em></p>

</body>

</html>

相关推荐
成为你的宁宁15 小时前
【Kubernetes集群证书续签】
kubernetes·证书过期
her_heart18 小时前
ChatGPT 5.6 实战:用 AI 做云成本治理,从账单复盘到 K8s 优化
人工智能·云原生·chatgpt·kubernetes·测试用例
花和满楼18 小时前
K8s 1.36 ImageVolume GA:OCI 镜像不再只能跑容器
java·容器·kubernetes
bukeyiwanshui2 天前
20260626 k8sControllers介绍
云原生·容器·kubernetes
能有时光2 天前
] K8s 核心组件使用指南
云原生·容器·kubernetes
云烟成雨TD2 天前
Kubernetes 系列【13】控制器:可视化操作 Deployment
云原生·容器·kubernetes
运维老郭2 天前
【K8s运维实战】Kubernetes临时存储卷实战:emptyDir核心用法与gitRepo弃用迁移指南
运维·云原生·kubernetes
千维百策6663 天前
AI 编码智能体平台如何提升研发效能:从 CI 修复到工程工作流自动化
人工智能·ci/cd·自动化
gs801403 天前
记一次多 Agent 架构在单节点 K8s 触发的 PID 耗尽与 Pod 驱逐(Evicted)大摸排
容器·架构·kubernetes
bukeyiwanshui3 天前
20260701 k8s Metric Server
容器·贪心算法·kubernetes