首页 > 其他分享 >在K8S中,外部如何访问集群内的服务?

在K8S中,外部如何访问集群内的服务?

时间:2024-10-10 13:34:25浏览次数:7  
标签:Ingress name Service 外部 访问 集群 K8S

在Kubernetes(K8s)中,外部访问集群内的服务通常依赖于几种不同的方法,这些方法的选择取决于集群的部署环境、网络架构以及安全性和可扩展性的要求。以下是一些常见的方式:

1. 使用NodePort类型的Service
  1. 定义:NodePort类型的Service会在每个集群节点上开放一个特定的端口(可以是系统自动分配的,也可以是用户指定的范围内的端口),并将流量转发到对应Service背后的Pod。
  2. 访问方式:外部客户端可以通过任意节点的IP地址和这个NodePort来访问集群内部的服务。
  3. 示例
apiVersion: v1  
kind: Service  
metadata:  
  name: my-nodeport-service  
spec:  
  selector:  
    app: MyApp  
  type: NodePort  
  ports:  
  - name: http  
    port: 80  
    targetPort: 8080  
    nodePort: 30080
2. 使用LoadBalancer类型的Service
  1. 定义:如果集群部署在支持云提供商负载均衡器的环境中(如AWS、GCP、Azure等),可以创建LoadBalancer类型的Service。Kubernetes会自动配置一个外部负载均衡器,并将其指向Service。
  2. 访问方式:外部客户端通过负载均衡器的公网IP地址访问服务。
  3. 示例
apiVersion: v1  
kind: Service  
metadata:  
  name: my-loadbalancer-service  
spec:  
  selector:  
    app: MyApp  
  type: LoadBalancer  
  ports:  
  - name: http  
    port: 80  
    targetPort: 8080
3. 使用Ingress资源与Ingress控制器
  1. 定义:Ingress是Kubernetes中的一个资源对象,用于管理外部访问流量的路由。Ingress控制器(如nginx-ingress、traefik等)负责根据Ingress规则将外部请求代理到不同的Service。
  2. 访问方式:外部客户端通过访问Ingress控制器的IP地址或域名(通常是外部DNS解析到的地址)来访问集群中的应用程序。Ingress规则定义了如何根据URL路径、主机名等信息将请求路由到相应的Service。
  3. 示例
apiVersion: networking.k8s.io/v1  
kind: Ingress  
metadata:  
  name: my-ingress  
spec:  
  rules:  
  - host: my-app.example.com  
    http:  
      paths:  
      - path: /  
        pathType: Prefix  
        backend:  
          service:  
            name: my-service  
            port:  
              name: http
4. 使用ExternalIPs
  1. 定义:对于具有固定外部IP地址的集群节点,可以在Service中直接指定externalIPs字段。这样,外部客户端就可以从这些特定的外部IP地址访问服务。
  2. 访问方式:外部客户端通过指定的ExternalIP和Service的端口访问服务。
  3. 示例
apiVersion: v1  
kind: Service  
metadata:  
  name: my-externalip-service  
spec:  
  selector:  
    app: MyApp  
  type: ClusterIP  
  externalIPs:  
  - 192.0.2.10  
  ports:  
  - name: http  
    port: 80  
    targetPort: 8080
5. 使用Port-forwarding(端口转发)
  1. 定义:在开发和测试阶段,可以使用kubectl port-forward命令将本地机器的端口与集群中的Pod的端口进行映射。
  2. 访问方式:外部客户端通过访问本地机器的端口来间接访问集群中的服务。
  3. 注意:这不是一个生产环境中的长期解决方案,仅适用于开发和测试阶段。
7. 注意事项
  1. 安全性:在开放外部访问时,需要特别注意安全性问题。例如,使用HTTPS加密通信、配置防火墙规则、限制访问来源等。
  2. 可扩展性:根据业务需求选择合适的外部访问方式,并确保系统能够随着业务增长而平滑扩展。
  3. 网络架构:外部访问方式的选择需要考虑集群的网络架构和部署环境。例如,在云环境中可以使用LoadBalancer类型的Service,而在私有部署环境中可能需要使用NodePort或Ingress等方式。

综上所述,Kubernetes提供了多种外部访问集群内服务的方式。具体选择哪种方式取决于集群的部署环境、网络架构以及安全性和可扩展性的要求。

标签:Ingress,name,Service,外部,访问,集群,K8S
From: https://www.cnblogs.com/huangjiabobk/p/18456135

相关文章

  • 在K8S中,Headless Service是什么?
    在Kubernetes(K8s)中,HeadlessService(无头服务)是一种特殊类型的服务发现机制,它允许用户直接访问集群中的Pod实例,而不是通过Service的负载均衡机制转发到某个具体的Endpoint(Pod)。以下是关于HeadlessService的详细解释:1.定义与特点定义:HeadlessService是一种特殊类型的Service,其......
  • 搭建Redis哨兵集群并使用RedisTemplate实现读写分离
    一、理论相关通过上篇博客:搭建Redis“主-从-从”模式集群并使用RedisTemplate实现读写分离,我们已经搭建好了Redis“主-从-从”模式集群并且实现读写分离,这里会出现几个问题:如果主库宕机了,我们就需要运行一个新主库,比如说把一个从库切换为主库,把它当成主库。这就会涉及到三个......
  • VScode远程访问虚拟机
    下载vscode插件RemoteDevelopment该插件包括了wsl,remotessh等四个插件,均是用于远程访问虚拟机。 通过ssh访问虚拟机下载后在工具栏索引可以看到如下标识,按顺序点击进入,然后在“3”显示的搜索框通过“sshusername@ipAddr”访问,这是方法一。 方法二,还可以通过选择“2......
  • 大数据存储计算平台EasyMR:多集群统一管理助力企业高效运维
    随着全球企业进入数字化转型的快车道,数据已成为企业运营、决策和增长的核心驱动力。为了处理海量数据,同时应对数据处理的复杂性和确保系统的高可用性,企业往往选择部署多个Hadoop集群,这样的策略可以将生产环境、测试环境和灾备恢复环境分开管理,从而提高数据处理的效率和安全性。然......
  • 【ClickHouse 表引擎&SQL操作&副本&分片集群 02】
    一、表引擎表引擎决定了如何存储表的数据。类似mysql的引擎InnoDB,MyISAM数据的存储方式和位置,写到哪里以及从哪里读取数据一般的引擎都存储在本地的磁盘,clickhouse存储的位置在:/var/lib/clickhouse -->其中data存储数据,metadata存储建表语句支持那些查询以及如何支持并......
  • 宝塔修改端口后无法访问
    如果你在宝塔面板中修改了网站端口后发现无法访问,可以按照以下步骤进行排查和解决:确认端口更改正确:确认你已经正确地将网站端口修改为你想要的新端口,并且保存了更改。检查防火墙设置:进入宝塔面板的“安全”选项,检查防火墙是否放行了新的端口。如果没有放行,请添加新的......
  • 宝塔面板无法访问,常见原因及如何快速解决?
    宝塔面板无法访问可能由多种原因导致,以下是一些常见的原因及其快速解决方法:服务器连接问题:检查服务器是否正常运行,确认服务器没有宕机。检查服务器的网络连接状态,确保服务器能够正常上网或被外部网络访问。域名解析问题:如果您是通过域名访问宝塔面板,请检查域名解析设......
  • 宝塔面板利用ip访问不了呀
    如果你遇到通过IP地址无法访问宝塔面板的情况,可以按照以下步骤进行排查和解决:检查服务器状态:确认服务器是否正常运行。检查服务器网络连接是否正常。确认宝塔面板端口:默认宝塔面板管理端口为8888,如果是默认端口,请确保没有更改过。如果修改了端口,请使用正确的端口号尝......
  • K8S配置MySQL主从自动水平扩展
    前提环境操作系统Ubuntu22.04K8S1.28.2集群(1个master+2个node)MySQL5.7.44部署在K8S的主从集群metrics-serverv0.6.4概念简介在K8s中扩缩容分为两种●Node层面:对K8s物理节点扩容和缩容,根据业务规模实现物理节点自动扩缩容●Pod层面:一般会使用Deployment中的Re......
  • 【K8s】专题十四(1):Kubernetes 安全机制之 RBAC
    本文内容均来自个人笔记并重新梳理,如有错误欢迎指正!如果对您有帮助,烦请点赞、关注、转发、订阅专栏!专栏订阅入口| 精选文章 | Kubernetes |Docker|Linux |羊毛资源 | 工具推荐 |往期精彩文章【Docker】(全网首发)KylinV10下MySQL容器内存占用异常的解决......