在Kubernetes(K8s)中,可以通过以下几种方式对外访问Service:

1、NodePort:

这是最常见的对外访问Service的方式。通过将Service的类型设置为NodePort,Kubernetes会在每个Node上打开一个特定的端口,并将流量路由到Service的ClusterIP。外部系统可以通过访问任何Node的IP地址加上这个NodePort来访问Service。

2、LoadBalancer:

如果你的Kubernetes集群部署在支持LoadBalancer的云平台上,你可以将Service的类型设置为LoadBalancer。这将自动创建一个负载均衡器,并将外部流量路由到Service的ClusterIP。负载均衡器提供了一个稳定的IP地址,外部系统可以通过这个IP地址访问Service。

3、Ingress:

Ingress是Kubernetes的一个资源对象,用于配置集群外部的访问规则。通过Ingress,你可以定义路由规则,将外部流量路由到不同的Service。Ingress控制器(如Nginx Ingress Controller、Traefik等)负责处理实际的流量转发。要使用Ingress对外访问Service,你需要创建一个Ingress资源,并配置相应的路由规则。

下面是一个简单的示例,展示了如何使用Nginx Ingress Controller和Ingress资源来对外访问一个名为my-service的Service:

步骤 1:部署Nginx Ingress Controller

你可以使用以下命令来部署Nginx Ingress Controller:

bash复制代码

kubectl apply -f https://raw.githubusercontent.com/kubernetes/ingress-nginx/master/deploy/static/mandatory.yaml

步骤 2:创建Ingress资源

创建一个名为my-ingress.yaml的Ingress资源文件,内容如下:

apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
name: my-ingress
annotations:
nginx.ingress.kubernetes.io/rewrite-target: /
spec:
rules:
- host: example.com
http:
paths:
- path: /
pathType: Prefix
backend:
service:
name: my-service
port:
number: 80

然后应用这个Ingress资源:

bash复制代码

kubectl apply -f my-ingress.yaml

步骤 3:配置DNS解析

在DNS管理界面中,将example.com解析到Ingress控制器的IP地址。

步骤 4:验证配置

通过浏览器访问http://example.com,你应该能够看到my-service的响应。

4、ExternalName:

Service的另一种类型是ExternalName,它允许你将Service映射到一个已存在的DNS域名。通过配置ExternalName类型的Service,你可以将外部流量直接路由到指定的域名,而不需要在Kubernetes集群内部创建额外的资源。

为了对外访问Service,你需要确保Kubernetes集群的网络策略允许外部流量进入集群,并且已经正确配置了相应的Service和访问规则。此外,还需要考虑安全性因素,如使用TLS加密、配置访问控制列表(ACLs)或限制访问的IP地址范围等。

选择哪种方式取决于你的具体需求、集群环境以及部署的云平台。在生产环境中,通常推荐使用LoadBalancer或Ingress来管理外部访问。

k8s如何对外访问service的更多相关文章

  1. k8s Nodeport方式下service访问,iptables处理逻辑(转)

    原文 https://www.myf5.net/post/2330.htm k8s Nodeport方式下service访问,iptables处理逻辑 2017年07月11日 0条评论 976次阅读 ...

  2. 【转帖】k8s之Deployment与service

    k8s之Deployment与service 2018年08月05日 18:11:00 xiyou_pen/pen 阅读数 5894   版权声明:本文为博主原创文章,遵循CC 4.0 by-sa版权 ...

  3. 外网如何访问 Service?- 每天5分钟玩转 Docker 容器技术(139)

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

  4. centos7下kubernetes(15。kubernetes-外网访问service)

    kubernetes提供了多种类型的service,默认是cluster IP ClusterIP cluster内部IP对外提供服务,只有cluster内的节点和pod可访问,这是默认的servic ...

  5. k8s nodeport下访问请求未被分发到所有node的排错(转)

    原文 https://www.myf5.net/post/2343.htm 现象: 从内部某个pod的容器里直接访问service的cluster地址,请求可以被正常转发到各个node上的pod里 但 ...

  6. Linux中如何开启8080端口供外界访问 和开启允许对外访问的端口8000

    举例: 开放10000端口的解决步骤如下: 1.修改/etc/sysconfig/iptables文件,增加如下一行: -A INPUT -m state --state NEW -m tcp -p ...

  7. 外网如何访问 Service?【转】

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

  8. LINUX开启允许对外访问的网络端口

    LINUX开启允许对外访问的网络端口  LINUX通过下面的命令可以开启允许对外访问的网络端口: /sbin/iptables -I INPUT -p tcp --dport 8000 -j ACCE ...

  9. 如何访问 Service?- 每天5分钟玩转 Docker 容器技术(99)

    前面我们已经学习了如何部署 service,也验证了 swarm 的 failover 特性.不过截止到现在,有一个重要问题还没有涉及:如何访问 service?这就是本节要讨论的问题. 为了便于分析 ...

  10. DNS 访问 Service - 每天5分钟玩转 Docker 容器技术(138)

    在 Cluster 中,除了可以通过 Cluster IP 访问 Service,Kubernetes 还提供了更为方便的 DNS 访问. kubeadm 部署时会默认安装 kube-dns 组件. ...

随机推荐

  1. Flask 框架:运用SocketIO实现WebSSH

    Flask 框架中如果想要实现WebSocket功能有许多种方式,运用SocketIO库来实现无疑是最简单的一种方式,Flask中封装了一个flask_socketio库该库可以直接通过pip仓库安装 ...

  2. python使用selenium控制已打开的Chrome浏览器

    环境 Python3.11 selenium 4.9.0 Chrome 112.0.5615.138 步骤 为了便于和平常用的Chrome浏览区分,可以先创建一个专门用于开发的Chrome浏览器, 添 ...

  3. SpringSecurity 的登录流程

    ​ 用过SpringSecurity的小伙伴,都知道 Authentication 这个接口,我们在任何地方通过这个接口来获取到用户登录的信息,而我们用的频繁的一个它的一个实现类就是 Username ...

  4. 普及100Hz高刷+1ms响应 微星发布27寸显示器:仅售799元

    不论办公还是游戏,高刷及低响应时间都很重要,微星现在推出了一款27寸显示器PRO MP273A,售价只有799元,但支持100Hz高刷.1ms响应时间,还有FreeSync技术减少撕裂. PRO MP ...

  5. PHP header的几种用法

    PHP header的几种用法 定义:header() 函数向客户端发送原始的 HTTP 报头. 1. 跳转页面 header('Location:'.$url); //Location和" ...

  6. 48从零开始用Rust编写nginx,搭建一个简单又好看官方网站

    wmproxy wmproxy已用Rust实现http/https代理, socks5代理, 反向代理, 负载均衡, 静态文件服务器,websocket代理,四层TCP/UDP转发,内网穿透等,会将实 ...

  7. 《ASP.NET Core 微服务实战》-- 读书笔记(第12章)

    第 12 章 设计汇总 微服务开发并不是要学习 C#.Java 或者 Go 编程--而是要学习如何开发应用以适应并充分利用弹性伸缩环境的优势,它们对托管环境没有偏好,并能瞬间启停 换句话说,我们要学习 ...

  8. java实现幂等性校验

    我们在做web应用的时候通常会遇到前端提交按钮重复点击的场景,在某些新增操作上就需要做幂等性限制来保证数据的可靠性.下面来用java aop实现幂等性校验. 一:首先我们需要一个自定义注解 packa ...

  9. NOI 2021 补全记录

    来补题了昂. D1T1 轻重边 对于原树进行重链剖分,使用一颗线段树维护每一条重边是否时"重边",然后对于轻边,在父亲出维护最后一次通过 \(1\) 操作清空"重边&qu ...

  10. zookeeper源码(08)请求处理及数据读写流程

    ServerCnxnFactory 用于接收客户端连接.管理客户端session.处理客户端请求. ServerCnxn抽象类 代表一个客户端连接对象: 从网络读写数据 数据编解码 将请求转发给上层组 ...