一文读懂k8s的外网访问方式,Ingress/NodePort/LoadBanlancer

这篇具有很好参考价值的文章主要介绍了一文读懂k8s的外网访问方式,Ingress/NodePort/LoadBanlancer。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

本文首发自「慕课网」,想了解更多IT干货内容,程序员圈内热闻,欢迎关注"慕课网"!

作者:一凡|慕课网讲师

集群内访问

在k8s中创建的微服务,大部分都是在集群内部互相调用,这时候,使用DNS就可以很方面访问。

比如:服务名是 my-service,端口号是8080,命名空间是yifan,那么就可以通过域名+端口 “my-service.yifan.svc.cluster.local:8080” 在集群内访问。

当然,也可以直接用服务的ClusterIP+服务的端口号,只是这么使用的较少。

DNS解析到的IP也就是这个服务的ClusterIP,只是咱们不需要记住ClusterIP,记住服务名对应的域名更加容易。

一文读懂k8s的外网访问方式,Ingress/NodePort/LoadBanlancer

如上图所示,就是k8s集群内的服务访问流程。

客户端通过DNS服务的域名解析 my-service.yifan.svc.cluster.local 返回这个服务的ClusterIP。

然后创建TCP连接到这个ClusterIP+端口号上。

网络请求经过Iptables/ipvs规则处理,经过负载均衡策略,把这个ClusterIP重定向到服务的后端实例,也就是这个服务的某一个Pod得PodIP。

这样TCP连接成功创建,客户端也就建立了与服务的后端实例的连接,也就可以进行后续的请求了。

下面是Cluster类型的service的yaml文件示例:

apiVersion: v1
kind: Service
metadata:
  name: my-service
spec:
  type: ClusterIP
  selector:
    app: my-app
  ports:
    - name: http
      port: 80
      targetPort: 8080

这个YAML文件包含以下内容:

  • apiVersion: 指定Kubernetes API的版本。
  • kind: 指定要创建的对象类型,此处为Service。
  • metadata.name: 指定Service的名称,此处为“my-service”。
  • spec.type: 指定Service的类型,此处为“ClusterIP”。
  • spec.selector: 指定要为Service选择的Pod或副本集的标签选择器。在这个例子中,标签选择器是“app=my-app”。
  • spec.ports: 指定要公开的端口及其配置信息。在这个例子中,将公开端口80,名称为“http”,将流量转发到Pod中的端口8080。

要使用此YAML文件创建Service,请使用以下命令:

kubectl apply -f service.yaml

这是集群内访问的流程,接下来,再来看看本文的核心内容,外网如何访问。

集群外访问

k8s集群的外网访问方式有3种:

Ingress, NodePort和LoadBanlancer。

其中Ingress是k8s的一个抽象层,有很多的IngressController和服务可以来实现这个Ingress服务,然后由这个Ingress服务把外网的请求转发到集群内的服文章来源地址https://www.toymoban.com/news/detail-499777.html

到了这里,关于一文读懂k8s的外网访问方式,Ingress/NodePort/LoadBanlancer的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • k8s中部署nginx-ingress实现外部访问k8s集群内部服务

    k8s通过nginx-ingress实现集群外网访问功能 1.1 ingress 工作原理 step1:ingress contronler通过与k8s的api进行交互,动态的去感知k8s集群中ingress服务规则的变化,然后读取它,并按照定义的ingress规则,转发到k8s集群中对应的service。 step2:而这个ingress规则写明了哪个域名对应k8s集群中的

    2024年02月07日
    浏览(38)
  • k8s ingress访问响应慢的问题(阿里云环境)

       生产环境采用的是ingress,对接阿里云SLB,但出现了多次访问服务就会有一次响应特别慢的故障,记录一下处理方法。    后端ingress的pod 上进行抓包,抓一下ingress的网络流量,多访问复现几次问题,看看从ingress pod 的网络抓包里看看能否看到访问超时的情况,从网络连接

    2024年02月02日
    浏览(37)
  • k8s 对外服务之 ingress|ingress的对外暴露方式|ingress http,https代理|ingress nginx的认证,nginx重写

    service的作用体现在两个方面,对集群内部,它不断跟踪pod的变化,更新endpoint中对应pod的对象,提供了ip不断变化的pod的服务发现机制;对集群外部,他类似负载均衡器,可以在集群内外部对pod进行访问。 在Kubernetes中,Pod的IP地址和service的ClusterIP仅可以在集群网络内部使用,

    2024年02月10日
    浏览(46)
  • K8s 持久化存储有几种方式?一文了解本地盘/CSI 外接存储/K8s 原生存储的优缺点

    当今云原生环境中,Kubernetes(K8s)已成为既定的容器编排工具。随着 K8s 的普及,存储也成为 K8s 用户关注的一个重要问题:为了满足不同的场景需求,K8s 可以支持基于不同架构的多种存储方案。这些方案间有什么区别?用户应如何选择? 本文将从架构角度出发,详细介绍本

    2024年02月10日
    浏览(44)
  • 从外部访问K8s中Pod的五种方式

    hostNetwork、 hostPort、 NodePort、 LoadBalancer、 Ingress 暴露Pod与Service一样,因为Pod就是Service的backend 这是一种直接定义 Pod 网络的方式。 如果在 Pod 中使用 hostNetwork:true 配置, pod 中运行的应用程序可以直接看到 pod 启动的主机的网络接口。 在主机的所有网络接口上都可以访问到该

    2024年02月12日
    浏览(37)
  • k8s ingress

    一、浅谈ingress (ingress 是与service配合使用的)  Ingress能把Service(Kubernetes的服务)配置成外网能够访问的URL,流量负载均衡,及SSL,并提供域名访问的虚拟主机等,客户通过访问URL(API资源服务的形式,例如:caas.one/kibana)进入和请求Service,一个Ingress控制器负责处理所有

    2024年02月12日
    浏览(38)
  • 【K8S 云原生】K8S的对外服务—ingress

    目录 一、K8S的Service 1、Service的作用 2、Service类型: 二、ingress 1、ingress的组成: 2、ingress资源的定义项: 三、nginx-ingress-controller暴露服务端的方式 1、Deployment+LoadBalancer模式: 1、工作流程图: 2、Daemonset+hostnetwork+nodeSelector模式: 1、工作流程图 2、实验: 3、deployment+NodePort

    2024年01月18日
    浏览(44)
  • 通过curl访问k8s集群获取证书或token的方式

    K8S安全控制框架主要由下面3个阶段进行控制,每一个阶段都支持插件方式,通过API Server配置来启用插件。 1. Authentication(认证) 2. Authorization(授权) 3. Admission Control(准入控制) 客户端(kubectl或curl等)要想访问K8s集群API Server,一般需要证书、Token或者用户名+密码。如果

    2024年01月24日
    浏览(47)
  • k8s ingress (二)

    k8s ingress ( 二 ) Ingress介绍 在前面课程中已经提到,Service对集群之外暴露服务的主要方式有两种:NodePort和LoadBalancer,但是这两种方式,都有一定的缺点: NodePort方式的缺点是会占用很多集群机器的端口,那么当集群服务变多的时候,这个缺点就愈发明显 LB方式的缺点是每个

    2024年02月11日
    浏览(48)
  • K8S中的ingress

    前言: Kubernetes暴露服务的方式目前只有三种:LoadBlancer Service、NodePort Service、Ingress;这一片主要聊聊Ingress。 简单说,是一个代理,可以根据配置转发请求到指定的服务上。 通俗来讲,ingress和之前提到的Service、Deployment,也是一个k8s的资源类型,ingress用于实现用域名的方式访

    2024年01月17日
    浏览(45)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包