一  通过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. Docker部署Portainer搭建轻量级可视化管理UI

    1. 简介   Portainer是一个轻量级的可视化的管理UI,其本身也是运行在Docker上的单个容器,提供用户更加简单的管理和监控宿主机上的Docker资源. 2. 安装Docker   Doc ...

  2. hive行存储与列存储

    首先判断hive表是行存储还是列存储 判断方法: 1.使用hiveSQL"show create table table_name",这种方式,可以查看建表时候指定的那种方式; 2 ...

  3. Navicat Primium连接数据库报ORA-28547错误

    这个问题主要是Navicat Primium与orecal中的oci.dll版本不一致造成的,无论是本地数据库或者网络数据库. 解决方法:在数据库orecal安装目录中搜索oci.dll文件,找到后将 ...

  4. 单机编排之Docker Compose

    当在宿主机启动较多的容器时候,如果都是手动操作会觉得比较麻烦而且容器出错,这个时候推荐使用docker 单机编排工具docker compose,Docker Compose 是docker容器的一种 ...

  5. Python进阶学习_连接操作Redis数据库

    安装导入第三方模块Redis pip3 install redis import redis 操作String类型 """ redis 基本命令 String set(n ...

  6. Python 写了一个批量生成文件夹和批量重命名的工具

    Python 写了一个批量生成文件夹和批量重命名的工具 目录 Python 写了一个批量生成文件夹和批量重命名的工具 演示 功能 1. 可以读取excel内容,使用excel单元格内容进行新建文件夹, ...

  7. MySQL5.7.26安装及启动报错解决

    一.安装依赖包 [root@db01 ~]# yum install -y lrzsz [文件上传/下载] [root@db01 ~]# yum -y install xfsprogs [安装磁盘格式 ...

  8. JIRA 知多少:聊一聊 Android Studio 、工作流相关设置

    Android Studio 相关 配置 JIRA 服务器 如果细心的话会发现有一个选项卡:Commit Message.这一段代码是不是有点熟悉呢?你没有猜错,这段代码就是 commit 模板,当你 ...

  9. springMVC生成pdf文件

    pom.xml文件配置=== <!-- https://mvnrepository.com/artifact/com.itextpdf/itextpdf --> <dependenc ...

  10. 配置文件中配置集合类(Map、list)@Value注入map、List

    spel表达式就是spring表达式.在java代码中,还有这种写法: @Value("#{'${auth.filter.exclude-urls}'.split(',')}") ...