http,https端口

apiVersion: extensions/v1beta1
kind: Ingress
metadata:
name: kubernetes-dashboard
namespace: kube-system
annotations:
kubernetes.io/ingress.class: "nginx"
nginx.ingress.kubernetes.io/ssl-redirect: "true"
nginx.ingress.kubernetes.io/backend-protocol: "HTTPS"
spec:
tls:
- hosts:
- ks.hongda.com
secretName: hongda-com-tls-secret
rules:
- host: ks.hongda.com
http:
paths:
- path: /
backend:
serviceName: kubernetes-dashboard
servicePort: 443

执行:

kubectl apply -f ingress-kubernetes-dashboard.yaml

具体说明

  • kubernetes.io/ingress.class: "nginx":Inginx Ingress Controller 根据该注解自动发现 Ingress;
  • nginx.ingress.kubernetes.io/backend-protocol: Controller 向后端 Service 转发时使用 HTTPS 协议
  • secretName: kube-dasboard-ssl:https 证书 Secret;
  • host: ks.hongda.com:对外访问的域名;
  • serviceName: kubernetes-dashboard:集群对外暴露的 Service 名称;
  • servicePort: 443:service 监听的端口;

注意:创建的 Ingress 必须要和对外暴露的 Service 在同一命名空间下!

ConfigMap暴露TCP端口

Ingress 不支持TCP 和 UDP 服务,可以通过 Ingress controller 来实现

默认的yaml中已经设置:

...
spec:
hostNetwork: true # <--
containers:
- args:
- /nginx-ingress-controller
- --configmap=$(POD_NAMESPACE)/nginx-configuration
- --tcp-services-configmap=$(POD_NAMESPACE)/tcp-services
- --udp-services-configmap=$(POD_NAMESPACE)/udp-services
- --publish-service=$(POD_NAMESPACE)/ingress-nginx
- --annotations-prefix=nginx.ingress.kubernetes.io
env:
...

通过 tcp-services-configmap.yaml 设置映射tcp, 通过 udp-services-configmap.yaml 映射udp

tcp-services-configmap.yaml

apiVersion: v1
kind: ConfigMap
metadata:
name: tcp-services
namespace: ingress-nginx
data:
2181: "kafka/kafka-zookeeper:2181"
9092: "kafka/kafka:9092"

udp-services-configmap.yaml

apiVersion: v1
kind: ConfigMap
metadata:
name: udp-services
namespace: ingress-nginx
data:
53: "kube-system/kube-dns:53"

Ingress服务公开端口

更新Ingress安装文件

controller:
replicaCount: 1
hostNetwork: true
nodeSelector:
node-role.kubernetes.io/edge: ''
affinity:
podAntiAffinity:
requiredDuringSchedulingIgnoredDuringExecution:
- labelSelector:
matchExpressions:
- key: app
operator: In
values:
- nginx-ingress
- key: component
operator: In
values:
- controller
topologyKey: kubernetes.io/hostname
tolerations:
- key: node-role.kubernetes.io/master
operator: Exists
effect: NoSchedule
- key: node-role.kubernetes.io/master
operator: Exists
effect: PreferNoSchedule
defaultBackend:
nodeSelector:
node-role.kubernetes.io/edge: ''
tolerations:
- key: node-role.kubernetes.io/master
operator: Exists
effect: NoSchedule
- key: node-role.kubernetes.io/master
operator: Exists
effect: PreferNoSchedule
# TCP service key:value pairs
tcp:
2181: "kafka/kafka-zookeeper:2181"
9092: "kafka/kafka:9092"

底部新增了

# TCP service key:value pairs
tcp:
2181: "kafka/kafka-zookeeper:2181"
9092: "kafka/kafka:9092"

更新:

helm upgrade nginx-ingress stable/nginx-ingress \
-f ingress-nginx.yaml

查看:

[root@master home]# netstat -ano |grep 2181
tcp 0 0 0.0.0.0:2181 0.0.0.0:* LISTEN off (0.00/0/0)
tcp6 0 0 :::2181 :::* LISTEN off (0.00/0/0)

这样暴露以后就可以直接调用zk,连接地址:

zk.hongda.com:2181
18.16.202.163:2181

参考:

使用 Kubernetes Ingress 对外暴露服务

使用OpenVPN将Kubernetes集群网络暴露给本地开发网络

Kubernetes Ingress实战(二):使用Ingress将第一个HTTP服务暴露到集群外部

IngressController使用和它的高可用落地

Kubernetes Ingress管理

Exposing TCP and UDP services

TCP LoadBalancing

How to load balance Ingress traffic to TCP or UDP based application

Kubernetes Ingress Controller的使用介绍及高可用落地

Ingress对外暴露端口的更多相关文章

  1. ubuntu安装mysql 并对外暴露3306端口

    安装 sudo apt-get install mysql-client mysql-server vi /etc/mysql/mysql.conf.d/mysqld.cnf bind 127注掉 m ...

  2. Kubernetes基于haproxy实现ingress服务暴露

    HAproxy Ingress控制器 HAproxy Ingress简介 HAProxy Ingress watches in the k8s cluster and how it builds HA ...

  3. K8S(05)核心插件-ingress(服务暴露)控制器-traefik

    K8S核心插件-ingress(服务暴露)控制器-traefik 1 K8S两种服务暴露方法 前面通过coredns在k8s集群内部做了serviceNAME和serviceIP之间的自动映射,使得不 ...

  4. sdk开发时,对外暴露的接口封装

    思考,用同步还是异步? 实质就是屏蔽一些东西,让使用者直接传参数 拿结果 而不用关心具体实现 eg.登陆接口 1.定义接口LoginCallBack,两个函数 请求成功和失败 public inter ...

  5. C++中模块(Dll)对外暴露接口的方式

    总结下C++中模块(Dll)对外暴露接口的方式: (1)导出API函数的方式这种方式是Windows中调用DLL接口的最基本方式,GDI32.dll, User32.dll都是用这种方式对外暴露系统A ...

  6. linux暴露端口可以被外部访问

    linux暴露端口可以被外部访问,把端口号换成要暴露的端口:/sbin/iptables -I INPUT -p tcp --dport 3306 -j ACCEPT Centos 7 开启端口Cen ...

  7. istio实现对外暴露服务

    1.确认istio-ingressgateway是否有对外的IP kubectl get service istio-ingressgateway -n istio-system 如果 EXTERNA ...

  8. docker容器添加对外映射端口

    一般在运行容器时,我们都会通过参数 -p(使用大写的-P参数则会随机选择宿主机的一个端口进行映射)来指定宿主机和容器端口的映射,例如 docker run -it -d --name [contain ...

  9. Docker动态给容器Container暴露端口

    查看Container的IP地址 docker inspect <container name or id>| grep IPAddress 查看Container的映射的端口 docke ...

随机推荐

  1. SpringBoot集成Spring Security(5)——权限控制

    在第一篇中,我们说过,用户<–>角色<–>权限三层中,暂时不考虑权限,在这一篇,是时候把它完成了. 为了方便演示,这里的权限只是对角色赋予权限,也就是说同一个角色的用户,权限是 ...

  2. fiddler抓包-2-5分钟学会手机端抓包

    前言 小伙伴们在前篇是否学会了简单的电脑web或其它软件抓包了呢?今天小编给大家带来的是fiddler设置手机代理抓手机端的数据包. 大致流程如下: 1.准备一台wifi功能正常的真机或虚拟机:2.设 ...

  3. scala基础题--100以内的数求和,求出当和第一次大于20的当前数【for】

    import util.control.Breaks._ object work01 { def main(args: Array[String]): Unit = { //方式一 var sum:I ...

  4. Mono 下的 ASP.NET 可以运行在哪些 Web 服务器上?

    Mono has an implementation of ASP.NET 2.0, ASP.NET MVC and ASP.NET AJAX. Quick Resources: ASP.NET FA ...

  5. JavaIO学习:字节流

    JavaIO流之字节流 字节流 抽象基类:InputStream,OutputStream. 字节流可以操作任何数据. 注意: 字符流使用的数组是字符数组,char[] chs : 字节流使用的数组是 ...

  6. tornado6与python3.7,异步新姿势

    废话不多说,直接上代码 __auth__ = "aleimu" __doc__ = "学习tornado6.0+ 版本与python3.7+" import t ...

  7. vue-如何实现带参数跳转页面

    [前后端分离项目之vue框架经验总结] 文/朱季谦 在vue框架的前端页面上,若要实现页面之间的带参数跳转,可参考以下实现过程: 例如,点击截图中的“查看试卷”,可实现带参跳转到相应的试卷页面,该功能 ...

  8. kkpager 实现ajax分页查询

    前台分页数据,适合数据少量的时候,因为分页的数据是从后台获取的,大数据的话不建议使用 现看前台代码: @{ Layout = null; } <!DOCTYPE html> <htm ...

  9. js内存空间

    堆数据结构 堆数据结构是一种树状结构.它的存取数据的方式与书架和书非常相似.我们只需要知道书的名字就可以直接取出书了,并不需要把上面的书取出来.JSON格式的数据中,我们存储的key-value可以是 ...

  10. VMWare共享文件夹使用

    1. 先在windows中创建一个文件夹,使用英文名称. 2. VMWare中,菜单栏 虚拟机->设置 3. Linux中的访问目录  /mnt/hgfs/winshare winshare  ...