Kubernetes 实战 —— 05. 服务:让客户端发现 pod 并与之通信(上)

简介 P121

pod 通常需要对来自集群内部其他 pod ,以及来自集群外部的客户端的 HTTP 请求作出响应,所以需要一种寻找其他 pod 的方法来使用其他 pod 提供的服务。 P121

在 Kubernetes 中通过服务 (service) 解决以下问题: P121

  • pod 是短暂的: pod 随时启动和关闭
  • Kubernetes 在 pod 启动前会给已经调度到节点上的 pod 分配 IP 地址:客户端不能提前知道 pod 的 IP 地址
  • 水平伸缩意味着多个 pod 可能提供相同的服务:每个 pod 都有自己的 IP 地址
介绍服务 P122

Kubernetes 服务是一种为一组功能相同的 pod 提供但以不变的接入点的资源。当服务存在时,它的 IP 地址和端口不会改变。与服务建立的连接会被路由到提供该服务的任意一个 pod 上。 P122

图 5.1 内部和外部客户端通常通过服务连接到 pod.png

创建服务 P123

服务使用标签选择器(03. pod: 运行于 Kubernetes 中的容器 中介绍过标签选择器及使用方式)来指定属于同一组的 pod 。 P123

图 5.2 标签选择器决定哪些 pod 属于服务.png

通过 kubectl expose 创建服务 P124

创建服务的最简单的方法就是通过 kubectl expose ,在 02. 开始使用 Kubernetes 和 Docker 中就使用该方法创建服务来暴露 DeploymentP124

通过 YAML 描述文件来创建服务 P124

为了将创建服务,我们需要使用以下 kubia-svc.yaml 描述文件进创建。

# 遵循 v1 版本的 Kubernetes API
apiVersion: v1
# 资源类型为 Service
kind: Service
metadata:
  # Service 的名称
  name: kubia
spec:
  # 该服务可用的端口
  ports:
    # 第一个可用端口的名字
    - name: http
      # 可用端口为 80
      port: 80
      # 服务将连接转发到容器的 8080 端口
      targetPort: 8080
    # 第二个可用端口的名字
    - name: https
      # 可用端口为 443
      port: 443
      # 服务将连接转发到容器的 8443 端口
      targetPort: 8443
  # 具有 app=kubia 标签的 pod 都属于该服务
  selector:
    app: kubia

kubectl create -f kubia-svc.yaml: 创建服务

kubectl get services: 查看当前所有服务

NAME         TYPE        CLUSTER-IP       EXTERNAL-IP   PORT(S)          AGE
kubernetes   ClusterIP   10.96.0.1        <none>        443/TCP          12d
kubia        Clus
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值