K8S使用NodePort类型Service

2023-10-12 20:30

本文主要是介绍K8S使用NodePort类型Service,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

1、使用nodetype类型

1.1、第一种类型创建:直接在yaml中标记是nodePort

apiVersion: v1
kind: Service
metadata:name: nginx-service-nodeport
spec:selector:app: nginxports:- name: httpport: 8000protocol: TCPtargetPort: 80- name: httpsport: 8443protocol: TCPtargetPort: 443type: NodePort

1.1、查询service进行比较

-1、观察对比可以看见,在暴露的端口后面跟着一个端口
-2、pod还是上一个步骤创建的pod,并没有发生任何改变

 

-3、也就是说pod的访问方式还是可以进行的

 

 


-4、那么创建的service如果进行访问?

 

 

 

 

 

 

  • service的clusterip可以使用,使用方式serviceClusterIP:port(其他方式都不行),所有的节点都可以通过访问serviceClusterIP:port进行访问服务
  • pod的clusterip进行访问,使用方式podClusterIP:targetport,但是每个节点只能使用自己节点的podClusterIP访问自己的pod
  • node的ip进行访问,使用方式nodeIP:nodePort(如果nodePort没有指定,创建service会自动生成一个)

1.2、使用错误说明:

  •  

     

    如果pod在running,但是服务不能访问,就查看一下service的pod有没有写正确

     

     

     

     


2、直接暴露端口,不创建service使用nodetype类型

2.1、创建pod

apiVersion: v1
kind: Service
metadata:name: nginx-service
spec:selector:app: nginxports:- name: httpport: 8000protocol: TCPtargetPort: 80- name: httpsport: 8443protocol: TCPtargetPort: 443

2.2、直接暴露端口

kubectl run --port=80(或者kubectl expose --port=80)
kubectl expose deployment nginx-deployment-2 --type=NodePort
  •  

     

    直接对deployment进行expose,指定暴露类型

     

     

  • 直接expose,会生成一个和deployment一样名称的service
  •  

     

    直接expose,不指定暴露的端口,会默认将targetPort(80)暴露到一个随机的端口(22796)上

     

     

     

     

  •  

     

    依然可以使用serviceIP:targetPort进行服务访问

     

     

  • 使用方式和修改yaml添加type是完全一样的
  •  

     

    如果直接expose指定port,会使用你指定的端口去覆盖你最开始设置的targetPort和port

     

     

  • 以前在进行service创建的时候,port和targetPort可以不一样,但是如果直接expose就会直接修改port和targetPort,可能导致我们的pod不能访问,所以在expose的时候,最好不要添加"port=8081"
#最好不使用port=8081参数,会修改port和target导致不能访问
kubectl expose deployment nginx-deployment-2 --type=NodePort --port=8081
  •  

     

    创建service时,保持targetPort和containerPort一致,最好也和port一样,免得生是非

     

     


3、使用nodetype类型总结

1、没有办法在外部网络访问一个IP直接进行pod负载,只能通过nodeIP:nodePort进行同一个Node上pod的负载访问
2、没有办法访问一个名称映射到服务上面
3、最好的方式,创建完deployment之后,直接expose生成service,此时你就不用管你到底要暴露什么port和targetport,系统会自动帮你生成,如果此时你感觉nodePort不是你要的,或者clusterIP不是你要的,你直接edit创建的service即可
4、如果感觉expose有点麻烦,还是想创建service.yaml文件,就直接按照下面模板进行更改即可

apiVersion: v1
kind: Service
metadata:labels:app: nginxname: nginx-servicenamespace: default
spec:clusterIP: 10.68.232.62(可以手动指定)externalTrafficPolicy: Clusterports:- name: nginxprotocol: TCPport: 80targetPort: 80nodePort: 26363(范围:20000-40000)selector:app: nginxtype: NodePort

K8S



作者:糖纸疯了
链接:https://www.jianshu.com/p/75af95641c91

这篇关于K8S使用NodePort类型Service的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!


原文地址:https://blog.csdn.net/lly337/article/details/110872615
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.chinasem.cn/article/198282

相关文章

C++ Sort函数使用场景分析

《C++Sort函数使用场景分析》sort函数是algorithm库下的一个函数,sort函数是不稳定的,即大小相同的元素在排序后相对顺序可能发生改变,如果某些场景需要保持相同元素间的相对顺序,可使... 目录C++ Sort函数详解一、sort函数调用的两种方式二、sort函数使用场景三、sort函数排序

Java String字符串的常用使用方法

《JavaString字符串的常用使用方法》String是JDK提供的一个类,是引用类型,并不是基本的数据类型,String用于字符串操作,在之前学习c语言的时候,对于一些字符串,会初始化字符数组表... 目录一、什么是String二、如何定义一个String1. 用双引号定义2. 通过构造函数定义三、St

Pydantic中Optional 和Union类型的使用

《Pydantic中Optional和Union类型的使用》本文主要介绍了Pydantic中Optional和Union类型的使用,这两者在处理可选字段和多类型字段时尤为重要,文中通过示例代码介绍的... 目录简介Optional 类型Union 类型Optional 和 Union 的组合总结简介Pyd

Vue3使用router,params传参为空问题

《Vue3使用router,params传参为空问题》:本文主要介绍Vue3使用router,params传参为空问题,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐... 目录vue3使用China编程router,params传参为空1.使用query方式传参2.使用 Histo

使用Python自建轻量级的HTTP调试工具

《使用Python自建轻量级的HTTP调试工具》这篇文章主要为大家详细介绍了如何使用Python自建一个轻量级的HTTP调试工具,文中的示例代码讲解详细,感兴趣的小伙伴可以参考一下... 目录一、为什么需要自建工具二、核心功能设计三、技术选型四、分步实现五、进阶优化技巧六、使用示例七、性能对比八、扩展方向建

使用Python实现一键隐藏屏幕并锁定输入

《使用Python实现一键隐藏屏幕并锁定输入》本文主要介绍了使用Python编写一个一键隐藏屏幕并锁定输入的黑科技程序,能够在指定热键触发后立即遮挡屏幕,并禁止一切键盘鼠标输入,这样就再也不用担心自己... 目录1. 概述2. 功能亮点3.代码实现4.使用方法5. 展示效果6. 代码优化与拓展7. 总结1.

使用Python开发一个简单的本地图片服务器

《使用Python开发一个简单的本地图片服务器》本文介绍了如何结合wxPython构建的图形用户界面GUI和Python内建的Web服务器功能,在本地网络中搭建一个私人的,即开即用的网页相册,文中的示... 目录项目目标核心技术栈代码深度解析完整代码工作流程主要功能与优势潜在改进与思考运行结果总结你是否曾经

Linux中的计划任务(crontab)使用方式

《Linux中的计划任务(crontab)使用方式》:本文主要介绍Linux中的计划任务(crontab)使用方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录一、前言1、linux的起源与发展2、什么是计划任务(crontab)二、crontab基础1、cro

kotlin中const 和val的区别及使用场景分析

《kotlin中const和val的区别及使用场景分析》在Kotlin中,const和val都是用来声明常量的,但它们的使用场景和功能有所不同,下面给大家介绍kotlin中const和val的区别,... 目录kotlin中const 和val的区别1. val:2. const:二 代码示例1 Java

Oracle数据库常见字段类型大全以及超详细解析

《Oracle数据库常见字段类型大全以及超详细解析》在Oracle数据库中查询特定表的字段个数通常需要使用SQL语句来完成,:本文主要介绍Oracle数据库常见字段类型大全以及超详细解析,文中通过... 目录前言一、字符类型(Character)1、CHAR:定长字符数据类型2、VARCHAR2:变长字符数