zoukankan      html  css  js  c++  java
  • *如何访问 Service?【转】

    除了 Cluster 内部可以访问 Service,很多情况我们也希望应用的 Service 能够暴露给 Cluster 外部。Kubernetes 提供了多种类型的 Service,默认是 ClusterIP。

    ClusterIP 
    Service 通过 Cluster 内部的 IP 对外提供服务,只有 Cluster 内的节点和 Pod 可访问,这是默认的 Service 类型,前面实验中的 Service 都是 ClusterIP。

    NodePort 
    Service 通过 Cluster 节点的静态端口对外提供服务。Cluster 外部可以通过 <NodeIP>:<NodePort> 访问 Service。

    LoadBalancer 
    Service 利用 cloud provider 特有的 load balancer 对外提供服务,cloud provider 负责将 load balancer 的流量导向 Service。目前支持的 cloud provider 有 GCP、AWS、Azur 等。

    下面我们来实践 NodePort,Service httpd-svc 的配置文件修改如下:

    添加 type: NodePort,重新创建 httpd-svc

    Kubernetes 依然会为 httpd-svc 分配一个 ClusterIP,不同的是:

    1. EXTERNAL-IP 为 nodes,表示可通过 Cluster 每个节点自身的 IP 访问 Service。

    2. PORT(S) 为 8080:323128080 是 ClusterIP 监听的端口,32312 则是节点上监听的端口。Kubernetes 会从 30000-32767 中分配一个可用的端口,每个节点都会监听此端口并将请求转发给 Service。

    下面测试 NodePort 是否正常工作。

    通过三个节点 IP + 32312 端口都能够访问 httpd-svc

    接下来我们深入探讨一个问题:Kubernetes 是如何将 <NodeIP>:<NodePort> 映射到 Pod 的呢?

    与 ClusterIP 一样,也是借助了 iptables。与 ClusterIP 相比,每个节点的 iptables 中都增加了下面两条规则:

    规则的含义是:访问当前节点 32312 端口的请求会应用规则 KUBE-SVC-RL3JAE4GN7VOGDGP,内容为:

    其作用就是负载均衡到每一个 Pod。

    NodePort 默认是的随机选择,不过我们可以用 nodePort 指定某个特定端口。

    现在配置文件中就有三个 Port 了:
    nodePort 是节点上监听的端口。
    port 是 ClusterIP 上监听的端口。
    targetPort 是 Pod 监听的端口。

    最终,Node 和 ClusterIP 在各自端口上接收到的请求都会通过 iptables 转发到 Pod 的 targetPort

    应用新的 nodePort 并验证:

    nodePort: 30000 已经生效了。

    小结

    本章我们讨论访问应用的机制 Service,学习了如何创建 Service;Service 的三种类型 ClusterIP、NodePort 和 LoadBalancer,以及它们各自的适用场景。

    下一节我们开始学习 Rolling Update。

  • 相关阅读:
    ERROR 2003 (HY000): Can't connect to MySQL server on 'localhost' (10061)
    查看windows和linux下端口是否被占用
    linux系统的默认用户
    修改mysql、oracle、sqlserver默认端口
    linux(centos)下密码有效期和密码复杂度设置
    linux下设置账户锁定阈值:登录失败n次,多长时间后解锁重新登录
    linux账户的锁定和解锁、禁用账号
    执行./install.sh时报错-bash: ./install.sh: /bin/bash^M: 坏的解释器: 没有那个文件或目录
    突然虚拟机无法联网解决办法,且报错Failed to start LSB: Bring up/down
    kubernetes集群环境搭建(7)
  • 原文地址:https://www.cnblogs.com/twobrother/p/11089915.html
Copyright © 2011-2022 走看看