k8s学习(四) k8s使用nodeport方式配置service对外暴露服务

2023-11-12

Pod是有生命周期的,使用凡人皆有一死来描述pod很贴切,当一个工作节点(node)销毁时,节点上运行的pods也会被销毁, ReplicationController会动态地在其他节点上创建Pod来保持应用程序的运行,每一个Pod都有一个独立的IP地址,甚至是同一个节点上的Pod,可以看出Pod的IP是动态的,它随Pod的创建而创建,随Pod的销毁而消失,这就引出一个问题:如果由一组Pods组合而成的集群来提供服务,那如何访问这些Pods呢?
Kubenetes的Service就是用来解决这个问题的。一个Service可以看作一组提供相同服务的Pods的对外访问接口,Service作用于哪些Pods是通过label selector来定义的,这些Pods能被Service访问,Pod之间的发现和路由(如应用中的前端和后端组件)由Kubernetes Service处理。
Service有四种type: ClusterIP(默认)、NodePort、LoadBalancer、ExternalName. 其中NodePort和LoadBalancer两类型的Services可以对外提供服务。
这是使用NodePort来配置

1、创建yaml service.yaml

---
apiVersion: v1
kind: Service
metadata:
  name: kube-node-service
  labels:
    name: kube-node-service
spec:
  type: NodePort      #这里代表是NodePort类型的
  ports:
  - port: 8080        #这里的端口和clusterIP对应,即ip:8080,供内部访问。
    targetPort: 8080  #端口一定要和container暴露出来的端口对应
    protocol: TCP
    nodePort: 32143   # 所有的节点都会开放此端口,此端口供外部调用。
  selector:
    app: web          #这里选择器一定要选择容器的标签,之前写name:kube-node是错的。

2、应用yaml

kubectl create -f service.yaml

3、检验配置是否正确

//测试主节点访问
[root@k8s-node1 k8s]# curl 192.168.100.89:32143/index
hello,world

[root@k8s-node1 k8s]# kubectl get services
NAME                TYPE        CLUSTER-IP     EXTERNAL-IP   PORT(S)          AGE
kube-node-service   NodePort    10.96.77.110   <none>        8080:32143/TCP   21m
kubernetes          ClusterIP   10.96.0.1      <none>        443/TCP          4d

//测试内部访问(clusterIp:PORT)
curl 10.96.77.110:8080

[root@k8s-node1 k8s]# curl 10.96.77.110:8080/index
hello,world

[root@k8s-node1 k8s]# kubectl get pods -o wide
NAME                        READY   STATUS    RESTARTS   AGE   IP            NODE        NOMINATED NODE   READINESS GATES
kube-node-87dcfc9cf-9kj8j   1/1     Running   0          75m   10.244.1.23   k8s-node3   <none>           <none>
kube-node-87dcfc9cf-l2ppz   1/1     Running   0          75m   10.244.2.24   k8s-node2   <none>           <none>

[root@k8s-node1 k8s]# curl 10.244.1.23:8080/index
hello,world

[root@k8s-node1 k8s]# curl 10.244.2.24:8080/index
hello,world

//测试slave节点访问
[root@k8s-node1 k8s]# curl 192.168.100.91:32143/index
hello,world
[root@k8s-node1 k8s]# curl 192.168.100.92:32143/index
hello,world

从浏览器访问测试 http://192.168.100.89:32143/index
				 http://192.168.100.91:32143/index
				 http://192.168.100.92:32143/index
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

k8s学习(四) k8s使用nodeport方式配置service对外暴露服务 的相关文章

随机推荐

  • nfsv4文件服务器,在CentOS 7上配置NFSv3和NFSv4的步骤

    本文介绍在CentOS 7上配置NFSv3和NFSv4的具体步骤 唯一的条件是你应该安装CentOS 7服务器和数据目录以通过NFS导出到其它服务器 安装请参考在VMware中安装CentOS操作系统教程 第1步 安装NFS服务器 使用以下
  • 阿里云oss出现No ‘Access-Control-Allow-Origin‘的问题

    解决办法 在oss管理控制台中设置bucket中数据安全的跨域设置 然后创建规则 来源是请求的网址 可以使用通配符 允许 Methods就是允许跨域的方法 可以多选 注意这里的规则最多10条
  • Arduino对57步进电机的控制

    最近实验室的智能车从大车路线改到了小车路线 于是笔者也跟着学习一些新的知识 大车的控制可以使用标准的CAN协议 很多方便的指令都能够通过CAN来传输给ECU并得到相应的反馈 然而对于最近接触的电动小白车 控制策略只能使用物理机械去控制 因此
  • 循环链表算法及代码实现

    一 循环单链表 直接上图就能够说明循环单链表的存储结构 简单直观 我们关注一下其特点 与非循环单链表相比 循环单链表 1 无空指针域 2 尾节点的判断条件为 p gt next L 二 循环双链表 同样直接上图 与非循环双链表相比 1 无空
  • 实现图片验证码【详细代码】

    实际开发过程中经常遇到要实现图片验证码来防止外部使用脚本刷接口 所以说图片验证码是很有必要的一个小功能 html div class user phone div
  • PyTorch模型 .pt、.pth与.pkl 的区别

    PyTorch模型 pt pth与 pkl 的区别 1 项目场景 2 问题描述 3 原因分析 1 项目场景 调试PyTorch代码保存训练模型的时候有些时候保存的格式是 pt 有些时候是 pth与 pkl 不禁好奇它们之间的区别 2 问题描
  • shell脚本系列:3、shell命令

    shell脚本系列 3 shell命令 文章目录 shell脚本系列 3 shell命令 1 保留字 2 简单的命令 3 管道 4 命令列表 5 复合循环指令 5 1 循环结构 5 2 条件结构 5 3 分组命令 6 协程 7 GUN Pa
  • MATLAB遍历子文件夹及其下文件

    MATLAB遍历子文件夹及其下文件 以前从未遇到过用MATLAB批处理文件的情况 此次项目需要批量将二进制数据文件导入matlab进行svm分类 现将matlab遍历子文件夹及其文件的方法记录下来 文件目录结构 maindir subdir
  • Java基础必知必会

    基础知识笔记记录 持续更新ing 个人博客 www zhazhapeng cn 1 JDK JRE的区别 JDK Java Development Kit 开发工具 基本类库 javac 编译 javap 反编译 javadoc 编译文档
  • C++ 基础: cin和getline() 有啥区别?

    所谓温故而知新 所以时不时会回头来看看我们最最基础的知识 获取标准键盘输入的方法有多种 以C 语言来说 最常用的就是cin 和geline 那么它们之间有什么区别呢 我们总结一下 一 cin和geline的异同点 在 C 中 cin 和 g
  • Boost电源原理及工作过程详解

    1 Boost电路基本介绍 Boost电路在电池的一些场景非常常见 用于给电池电压升压后再给电路进行供电的场景比较多 随着电动汽车的飞速发展 在汽车电子的场景使用也越来越多 开关电源的主要部件包括 输入源 开关管 储能电感 控制电路 二极管
  • C1认证:作业四

    1 任务背景 为了摆脱 成为 只会CRUD 没有自我核心竞争力 无思想的编程的大龄码农 所以 开展了本次实验 目的是 去了解算法 去欣赏它的美 去感受它的优雅 使自己成为有灵魂的工程师 2 任务大纲 一 任务一 轮播图片 HTML CSS
  • 开源 LLM (大语言模型)整理(一)

    Large Language Model LLM 即大规模语言模型 是一种基于深度学习的自然语言处理模型 它能够学习到自然语言的语法和语义 从而可以生成人类可读的文本 所谓 语言模型 就是只用来处理语言文字 或者符号体系 的 AI 模型 发
  • C++模板类中的成员函数以及模板函数在类外定义的方式

    如下模板类 template
  • 零跑汽车财报解读:短跑“增程”双动力,长跑“自研”加速度

    3月21日晚间 零跑汽车交出了上市后的首份年度成绩单 纵观零跑汽车这份财报 其2022年的发展不乏亮点 2022年 零跑汽车实现营收123 85亿元 同比增长295 41 以远超行业的水平实现营收的迅速增长 充分证明了零跑汽车强大的经营韧性
  • opencv从内存缓冲区中读取图像数据

    1 从内存中加载图像数据 s Image Info stDispImgInfo spImgInfo gt m stDispInfo cv InputArray pic arr stDispImgInfo pImageBuf nWidth n
  • 如何ping一个网段下的所有IP地址,并保存返回结果

    循环的ping一个网段的所有IP地址 for L i in 1 1 255 do ping n 1 w 60 192 168 1 i find 回复 gt gt d pingall txt n 表示一次ping几次 w 表示一次ping60
  • 稳定性和高可用如何保障?一手测评华为云网站高可用解决方案

    一 前言 在如今科技高速发展的时代 几乎每个企业都依赖互联网 离不开互联网 很多企业的业务也都依托于互联网 比如我们熟知的电商 股市 直播 甚至是用于乘坐地铁 公交买票过闸的APP 如今可以说是一个互联网时代的完全体 但你们是否想过一个问题
  • 大神之路-起始篇

    欢迎关注 WeiyiGeek 公众号 设为 星标 每天带你 基础入门 到 进阶实践 再到 放弃学习 涉及 网络安全运维 应用开发 物联网IOT 学习路径 个人感悟 等知识 花开堪折直须折 莫待无花空折枝 文章目录 第 4 部分 计算机软件与
  • k8s学习(四) k8s使用nodeport方式配置service对外暴露服务

    Pod是有生命周期的 使用凡人皆有一死来描述pod很贴切 当一个工作节点 node 销毁时 节点上运行的pods也会被销毁 ReplicationController会动态地在其他节点上创建Pod来保持应用程序的运行 每一个Pod都有一个独