一  通过NodePort来暴露服务

  前面已经介绍的服务的一些作用,例如将集群内部的应用暴露给集群内部的pod使用,将外部的应用通过服务暴露给内部应用使用,但是服务最大的作用不仅仅是这些

而是将集群内部的应用暴露给外部客户端进行访问,这种实现方式有多种,列举出其中2种进行介绍

  • 第一种是:通过创建NodePort类型的服务提供给外部的访问
  • 第二种是:创建Ingress来对集群内部的pod对外进行暴露

二  定义NodePort类型的服务资源

apiVersion: v1
kind: Service
metadata:
name: kubia-nodeport
spec:
type: NodePort
ports:
- port: 80
targetPort: 8080
nodePort: 30123
selector:
app: kubia
  • 内容很简单,只是比普通的service多了个type类型字段,并且在ports里面添加nodePoer和需要访问的目标端口

三 验证是否符合预期

  如果除了之前的能通过集群分配给服务的固定IP和端口进行访问,还能通过集群里面的任意的节点加:30123的端口进行访问则说明可以通过

此种方式对服务进行暴露

[root@node01 Chapter05]# k get po
NAME READY STATUS RESTARTS AGE
kubia-7q8c5 1/1 Running 0 81m
kubia-7w5tq 1/1 Running 0 81m
kubia-ch6qk 1/1 Running 0 81m

[root@node01 Chapter05]# k get svc
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE
kubernetes ClusterIP 10.96.0.1 <none> 443/TCP 3d4h
kubia-nodeport NodePort 10.101.58.249 <none> 80:30123/TCP 20m

[root@node01 Chapter05]# k exec kubia-7q8c5 -- curl -s http://10.101.58.249
You've hit kubia-7w5tq

[root@node01 Chapter05]# k get no -o wide
NAME STATUS ROLES AGE VERSION INTERNAL-IP EXTERNAL-IP OS-IMAGE KERNEL-VERSION CONTAINER-RUNTIME
master Ready master 3d4h v1.14.2 172.16.70.6 <none> CentOS Linux 7 (Core) 3.10.0-514.el7.x86_64 docker://18.9.6
node01 Ready <none> 3d4h v1.14.2 172.16.70.4 <none> CentOS Linux 7 (Core) 3.10.0-514.el7.x86_64 docker://18.9.6
node02 Ready <none> 3d4h v1.14.2 172.16.70.5 <none> CentOS Linux 7 (Core) 3.10.0-514.el7.x86_64 docker://18.9.6

[root@node01 Chapter05]# k exec kubia-7q8c5 -- curl -s http://172.16.70.6:30123
You've hit kubia-ch6qk

[root@node01 Chapter05]# k exec kubia-7q8c5 -- curl -s http://172.16.70.5:30123
You've hit kubia-ch6qk

[root@node01 Chapter05]# k exec kubia-7q8c5 -- curl -s http://172.16.70.4:30123
You've hit kubia-ch6qk
  • 根据执行的结果以及代码可以看到,我们任意进入一个pod,无论是通过集群分配的IP或者是node:port都能够正确的访问到该服务后面挂载的pod
  • 甚至可以尝试通过浏览器直接访问哦也是可以访问的

kubernets之向外部应用暴露应用的更多相关文章

  1. 使用ASP.NET Core 3.x 构建 RESTful API - 4.1 面向外部的Model

    Entity Framework Core 使用的 Entity Model 是用来表示数据库里面的记录的. 而面向外部的 model 则表示了要传输的东西.这类 model 有时候叫做 Dto,有时 ...

  2. k8s暴露集群内和集群外服务的方法

    集群内服务 一般 pod 都是根据 service 资源来进行集群内的暴露,因为 k8s 在 pod 启动前就已经给调度节点上的 pod 分配好 ip 地址了,因此我们并不能提前知道提供服务的 pod ...

  3. Docker使用

    Docker使用注意 关于网络配置   在使用默认的桥接模式下,容器启动后会被分配一个与docker0在同一网段的地址,在容器内部默认显示为eth0,在宿主机上产生一个临时的vethXXX接口. 端口 ...

  4. AngularJS中实现无限级联动菜单

    多级联动菜单是常见的前端组件,比如省份-城市联动.高校-学院-专业联动等等.场景虽然常见,但仔细分析起来要实现一个通用的无限分级联动菜单却不一定像想象的那么简单.比如,我们需要考虑子菜单的加载是同步的 ...

  5. iOS多线程-05-多图下载

    效果图 常见问题及解决方法 图片重复下载 将内存保存在内存或沙盒中. 若下载的图片量较大,则会出现UI界面不流畅的现象 在子线程中执行下载操作,然后回到主线程成中进行UI界面的刷新. 由于cell的循 ...

  6. OC - 20.多图下载

    效果图 常见问题及解决方法 图片重复下载 将内存保存在内存或沙盒中. 若下载的图片量较大,则会出现UI界面不流畅的现象 在子线程中执行下载操作,然后回到主线程成中进行UI界面的刷新. 由于cell的循 ...

  7. ZooKeeper笔记--集群安装配置 【转】

    ZooKeeper是一个分布式开源框架,提供了协调分布式应用的基本服务,它向外部应用暴露一组通用服务——分布式同步(Distributed Synchronization).命名服务(Naming S ...

  8. 灵雀云CTO陈恺:从“鸿沟理论”看云原生,哪些技术能够跨越鸿沟?

    灵雀云CTO陈恺:从“鸿沟理论”看云原生,哪些技术能够跨越鸿沟? 历史进入2019年,放眼望去,今天的整个技术大环境和生态都发生了很大的变化.在己亥猪年春节刚刚过去的早春时节,我们来梳理和展望一下整个 ...

  9. DB9针和DB25针串口的引脚定义

    <设备监控技术详解>第3章串口设备监控,本章着力介绍串口交换机和串口联网方式.本节为大家介绍标准25针串口的引脚定义. 作者:李瑞民来源:机械工业出版社 3.3 串口线的制作和转换 串口的 ...

随机推荐

  1. 从零到一快速搭建个人博客网站(域名备案 + https免费证书)(一)

    环境介绍 资源 说明 centos v7.2 docker 快速部署项目环境 nginx 反向代理,同时配置https证书 halo v1.4.2,开源博客项目 Let's Encrypt 免费证书 ...

  2. common 模块的 context.py

    1.context.py  是写正则表达式的,源码如下: import re#s 是目标字符串#dict 是替换的内容#找到目标字符串里面的标识符KEY,去d里面拿到替换的值#替换到s 里面去,然后仔 ...

  3. Linux下安装mysql-5.7.24

    Mysql数据库的安装对于开发者来说,是我们必然会面对的问题,它的安装过程其实并不复杂,并且网络上的安装教程也非常多,但是对于新手来说,各种不同形式的安装教程,又给新手们带来了要选择哪种方式进行安装的 ...

  4. Hexo结合Stun静态博客搭建从入门到入土

    摘要 安装npm,安装hexo相关依赖,安装主题stun 修改hexo配置,修改stun配置,部署到github,gitee实现静态访问 给博客加上全局搜索,访问量统计 hexo博客编写模板 tips ...

  5. js深克隆与浅克隆

    定义: 浅克隆: 克隆对象的一层属性, 如果对象还有对象的话,里面的对象没有进行克隆,只是把地址给了别人.也可以理解为只是简单的克隆了躯体,但是没有得到其灵魂: 深克隆:克隆对象的多层属性,对象里面还 ...

  6. oracle 19c dataguard aws ORA-03186报错

    环境说明 在亚马逊云AWS上面安装了一套oracle 19c dataguard,linux centos 7.7的操作系统,开始时同步正常,实时应用redolog,一会儿之后就不行了.报错如下: o ...

  7. 个人MySQL的事务特性原理学习笔记总结

    目录 个人MySQL的事务特性原理笔记总结 一.基础概念 2. 事务控制语句 3. 事务特性 二.原子性 1. 原子性定义 2. 实现 三.持久性 1. 定义 2. 实现 3. redo log存在的 ...

  8. Mybatis 动态sql if 判读条件等于一个数字

    在Mybatis中 mapper中 boolean updateRegisterCompanyFlag(@Param(value = "companyId") String com ...

  9. 实体类转json 和 json转实体类

    1.new JSONObject().toJSONString(rootEntity) JSONObject.toJSONString(specPrices)//specPrices实体类   2. ...

  10. mongoose连接collections会自动加s的问题解决

    问题的出现: 最近在用到mongoose连接数据库时遇到了这样的问题,我在mongoodb上创建了一个collection为course,然后在配置完mongoose连接数据库后拿到的是一个空对象. ...