5.2 连接集群外部的服务

本文详细介绍了Kubernetes服务Endpoint的原理、如何手动配置无选择器服务、外部服务别名的创建,以及使用Endpoint的优势。通过实例展示了如何操作和服务管理,适合理解K8s服务架构的开发者。
摘要由CSDN通过智能技术生成
  1. 前提条件

    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

  2. 介绍服务endpoint
    1. 服务并不是和pod直接相连的,有一种资源结余两者之间:Endpoint资源
      kubectl describe svc kubia-svc
    2. 查看对应的endpoint资源,Endpoint资源就是暴露一个服务的IP地址和端口的列表
      kubectl get endpoints kubia-svc
    3. 尽管spec服务中定义了pod选择器,但在重定向传入连接时不会直接使用它。相反,选择器用于构建IP和端口列表,然后存储在Endpoint资源中。当客户端连接到服务时,服务代理选择这些IP和端口对中的一个,并将传入连接重定向到在该位置监听的服务器。
  3. 手动配置服务的Endpoint
    1. 创建没有选择器的服务
      1. 定义external-svc.yaml
      apiVersion: v1
      kind: Service
      metadata:
        name: external-svc
      spec:
        ports:
        - port: 80
      
      1. 创建服务
        kubectl create -f external-svc.yaml
      2. 查看并确认服务没有关联Endpoint
        kubectl describe svc external-svc
    2. 为没有选择器的服务创建Endpoint资源
      1. 定义external-svc-endpoints.yaml(连接到我的个人网站)【服务名必须和Endpoint名字一致】
      apiVersion: v1
      kind: Endpoints
      metadata:
        name: external-svc
      subsets:
        - addresses:
          - ip: 49.234.211.155
          ports:
          - port: 80
      
      1. 创建Endpoint
        kubectl create -f external-svc-endpoints.yaml
      2. 查看并确认服务已经关联Endpoint
        kubectl describe svc external-svc
      3. pod内访问服务
        kubectl exec kubia-svc-test-pod -- curl -s http://external-svc
    3. 使用Endpoint的好处:
      1. 如果稍后决定经外部服务迁移到k8s中运行的pod,可以为服务添加选择器,从而对Endpoint进行自动管理
      2. 如果将pod迁移到外部:将选择器从服务中移除,k8s将停止更新Endpoint。
  4. 为外部服务创建别名
    1. 创建ExternalName类型的服务
      1. 定义external-svc-en.yaml
      apiVersion: v1
      kind: Service
      metadata:
        name: external-svc-en
      spec:
        type: ExternalName
        externalName: okracode.com
        ports:
        - port: 80
      
      1. 创建服务:
        kubectl create -f external-svc-en.yaml
      2. pod内访问服务
        kubectl exec kubia-svc-test-pod -- curl -s http://external-svc-en
    2. 优点:隐藏了服务的实际FQDN,后期允许修改服务定义中指向或者类型。
  5. 资源清理
    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
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值