- 前提条件
0.0 环境准备
0.1 安装docker
0.2 安装k8s
kubectl create -f kubia-rs-svc.yaml
kubectl create -f kubia-svc.yaml
kubectl create -f kubia-svc-test.yaml
- 介绍服务endpoint
- 服务并不是和pod直接相连的,有一种资源结余两者之间:Endpoint资源
kubectl describe svc kubia-svc
- 查看对应的endpoint资源,Endpoint资源就是暴露一个服务的IP地址和端口的列表
kubectl get endpoints kubia-svc
- 尽管spec服务中定义了pod选择器,但在重定向传入连接时不会直接使用它。相反,选择器用于构建IP和端口列表,然后存储在Endpoint资源中。当客户端连接到服务时,服务代理选择这些IP和端口对中的一个,并将传入连接重定向到在该位置监听的服务器。
- 服务并不是和pod直接相连的,有一种资源结余两者之间:Endpoint资源
- 手动配置服务的Endpoint
- 创建没有选择器的服务
- 定义external-svc.yaml
apiVersion: v1 kind: Service metadata: name: external-svc spec: ports: - port: 80
- 创建服务
kubectl create -f external-svc.yaml
- 查看并确认服务没有关联Endpoint
kubectl describe svc external-svc
- 为没有选择器的服务创建Endpoint资源
- 定义external-svc-endpoints.yaml(连接到我的个人网站)【服务名必须和Endpoint名字一致】
apiVersion: v1 kind: Endpoints metadata: name: external-svc subsets: - addresses: - ip: 49.234.211.155 ports: - port: 80
- 创建Endpoint
kubectl create -f external-svc-endpoints.yaml
- 查看并确认服务已经关联Endpoint
kubectl describe svc external-svc
- pod内访问服务
kubectl exec kubia-svc-test-pod -- curl -s http://external-svc
- 使用Endpoint的好处:
- 如果稍后决定经外部服务迁移到k8s中运行的pod,可以为服务添加选择器,从而对Endpoint进行自动管理
- 如果将pod迁移到外部:将选择器从服务中移除,k8s将停止更新Endpoint。
- 创建没有选择器的服务
- 为外部服务创建别名
- 创建ExternalName类型的服务
- 定义external-svc-en.yaml
apiVersion: v1 kind: Service metadata: name: external-svc-en spec: type: ExternalName externalName: okracode.com ports: - port: 80
- 创建服务:
kubectl create -f external-svc-en.yaml
- pod内访问服务
kubectl exec kubia-svc-test-pod -- curl -s http://external-svc-en
- 优点:隐藏了服务的实际FQDN,后期允许修改服务定义中指向或者类型。
- 创建ExternalName类型的服务
- 资源清理
kubectl delete rs kubia-rs-svc
kubectl delete po kubia-svc-test-pod
kubectl delete svc kubia-svc
kubectl delete svc external-svc
kubectl delete svc external-svc-en
5.2 连接集群外部的服务
最新推荐文章于 2024-10-20 18:38:35 发布
本文详细介绍了Kubernetes服务Endpoint的原理、如何手动配置无选择器服务、外部服务别名的创建,以及使用Endpoint的优势。通过实例展示了如何操作和服务管理,适合理解K8s服务架构的开发者。
摘要由CSDN通过智能技术生成