k8s网络服务

k8s 中向外界提供服务的几种方法port-forwardNodePort,以及 更加常用的提供服务的资源ingress。

1  kubectl port-forward service/redis 6379:6379  现在k8s中有一个pod运行在6379,本机访问映射到6379上,它可以针对部署,服务,pod类型,效果相同

启用后会占用当前终端的标准输出,可以在后面添加&来指定后台运行:

kubectl port-forward service/redis 6379:6379 &

如图在前台运行情况:它会监听虚拟机的127.0.0.1的6379端口转发到port中去从而能访问资源,但没有NodePoint使用的多

更改收听地址:

Kubectl 默认绑定127.0.0.1(IPv4) 和::1(IPv6) 地址上的本地端口。您可以通过在运行命令–address时提供标志来指定自己的 IP 集:port-forward2 NodePort 映射服务到节点端口。

kubectl port-forward deployment/mysql :3306 --address 127.0.0.1,192.168.0.1

该标志只接受 IP 地址和localhost关键字。后者被解释为包含127.0.0.1and ,当省略::1时匹配命令的默认值。–address、port-forward可以将 pod 临时映射出来,一般用于测试资源是否可用,在生产环境并不会大规模应用。

2 服务非代理模式NodePort

相对于上一种port-forward来说,这一种要正式的多,NodePort可以将其 转发到所有 k8s 节点的指定端口上,并且不会像port-forward一样在前台运行。

kubectl create deployment redis --image=redis 创建一个部署

kubectl expose deployment redis --type=NodePort --port=6379 暴露一个服务,并且它能实现负载均衡根据集群ip访问不同主机下的指定端口,可以查看服务详情minikube service 加服务名如

,其中url中的ip是pod所在的上层虚拟环境ip地址,虚拟机可以根据这个虚拟ip环境中的port进行资源访问,问题?现在虚拟机加pod所在的虚拟ip才能访问,现在我想虚拟机直接访问下层的虚拟ip的环境,这就用到上面的第一个,使用kubelctl将本地ip和pod资源直接绑定,假设虚拟机环境ip为192.168.56.2,kubectl在该环境下,连接的其他环境的pod,环境ip地址是192.168.67.2,现在使用nodepoint的映射单口加ip直接就能访问,要kubectl访问它所连接到的远程资源,就把它当成代理,监听本地请求然后转发响应,方式如上默认监听是127.0.01的地址如果ip想对外使用可以监听多个,如下:kubectl port-forward service/redis 6379:6379 --address 127.0.0.1,192.168.56.1

kubectl port-forward --address 0.0.0.0  service/redis 6379:6379 使更多虚拟机的ip地址,只要物理机对虚拟机ip能ping通就能访问到目标,前提是虚拟机的防火墙要关闭,本人之前就是没关闭物理机无法访问。systemctl status/stop firewalld 它是centos7以后的默认防火墙。

由于防火墙会被用来实现k8s的网络代理服务如kube-peoxy中就是以防火前模块实现所以这里关闭防火墙可以让物理机访问到虚拟机和minikube中的pod,当如果关闭防火墙就意味着minikube环境失去了对虚拟宿主机的依赖,就无法使用网络,更不可能拉取镜像。

这样你在虚拟机中就可以telnet +ip+端口 物理机也能访问该虚拟机

但是这里有个问题,假如我的 k8s 里运行了多个 web 应用服务器,我总不能让用户通过端口号http://domain:8081http://domain:8082来访问不同的 web 服务吧。能不能处理成http://domain/web1http://domain/web2 ...这种形式呢?当然可以,这个就是接下来要说的Ingress

4 使用ssh连接,密钥对或者使用密码连接,直接访问目标服务

 minikube dashboard开启了之后生成有一个虚拟机的可访问地址,如果不使用代理通过物理机ssh -f -N -L 35967:localhost:35967 vagrant@虚拟ip,输入密码会在前台阻塞运行,此时就能访问,它也不能能绕过防火墙,因为它需要kubectl在虚拟机暴露的端口,但也可以物理机直接连接minikube虚拟机来绕过防火墙直接访问docker中的服务,不需要绕来绕去,转来转去。

另外一种不适用默认生成的,查看服务的运行端口通过

 kubectl get service kubernetes-dashboard -n kubernetes-dashboa

服务运行在80端口上,内部容器运行在9090端口上可以查看pod的详细信息

kubectl get describe pod -n kubernetes-dashboard kubernetes-dashboard-695b
有了这些信息可以通过代理直接让过给的访问地址,物理机通过虚拟机ip地址直接访问,这本质上和生成的url是一样的道理,只是在鉴定和绑定的ip范围变大了,更有利于外部访问,如果使用ssh来与连接到的主机建立一对一请求还需要外部物理机定义,而且物理机访问的路径不定可以多个ip。当使用转发时物理机会创建一个端口号来监听物理的请求路径,然后转发到虚拟机

虚拟机杀死进程后物理机也删除端口的占用。

  防火墙开启路由转发:

#临时开启
[root@snat zones]# echo 1 > /proc/sys/net/ipv4/ip_forward#永久开启
[root@snat zones]# echo 'net.ipv4.ip_forward = 1' >> /etc/sysctl.conf
[root@snat zones]# sysctl -p

firewalld防火墙开启masquerade, 实现地址转换

设置默认区域的SNAT的IP伪装
[root@snat zones]# firewall-cmd --add-masquerade --permanent
[root@snat zones]# firewall-cmd --reload
#################################下面部分不用执行#################################
查看默认区域的SNAT是否允许
[root@snat zones]# firewall-cmd --query-masquerade --permanent删除默认区域的SNAT功能
[root@snat zones]# firewall-cmd --remove-masquerade --permanent

3 通过 Ingress 暴露服务:nblogs.com/gaoyanbing/p/14031522✌ 

4 扩展 :端口状态 LISTENING、ESTABLISHED、TIME_WAIT及CLOSE_WAIT详解,以及三次握手,滑动窗口_established状态-CSDN博客

《Linux运维总结:firewalld防火墙使用教程》_firewalld教程-CSDN博客

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/diannao/62220.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

微信小程序按字母顺序渲染城市 功能实现详细讲解

在微信小程序功能搭建中,按字母渲染城市会用到多个ES6的方法,如reduce,map,Object.entries(),Object.keys() ,需要组合熟练掌握,才能优雅的处理数据完成渲染。 目录 一、数据分析 二、数据处理 …

前端JavaScript(一)---基本介绍

Javascript是一种由Netscape(网景)的LiveScript发展而来的原型化继承的面向对象的动态类型的区分大小写的客户端脚本语言,主要目的是为了解决服务器端语言,比如Perl,遗留的速度问题,为客户提供更流畅的浏览效果。当时服务端需要对…

git的使用(简洁版)

什么是 Git? Git 是一个分布式版本控制系统 (DVCS),用于跟踪文件的更改并协调多人之间的工作。它由 Linus Torvalds 在 2005 年创建,最初是为了管理 Linux 内核的开发。Git 的主要目标是提供高效、易用的版本控制工具,使得开发者…

vscode可以编译通过c++项目,但头文件有红色波浪线的问题

1、打开 VSCode 的设置,可以通过快捷键 Ctrl Shift P 打开命令面板,然后搜索并选择 “C/C: Edit Configurations (JSON)” 命令,这将在 .vscode 文件夹中创建或修改 c_cpp_properties.json 文件 {"configurations": [{"name…

VS Code前端常用插件

通用类 auto close tag auto rename tag beautify class autocomplete for html Code Runner css peek dash JavaScript Debugger document this eslint font-awesome codes for html filesize git history gitlens html css support HTMLHint htmltagwrap indenticator Intel…

Android 16 开发者预览版抢先使用

Android 16 开发者预览版 获取 Android 16在 Google Pixel 设备上获取 Android 16设置 Android 模拟器 设置 Android 16 SDK获取 Android Studio安装 SDK更新应用的 build 配置 获取 Android 16 你可以通过以下任一方式获取 Android 16 在 Google Pixel 设备上获取 Android 1…

解析生成对抗网络(GAN):原理与应用

目录 一、引言 二、生成对抗网络原理 (一)基本架构 (二)训练过程 三、生成对抗网络的应用 (一)图像生成 无条件图像生成: (二)数据增强 (三&#xff…

docker 安装mysql8.4.0

1、拉取mysql8.4.0镜像 docker pullmysql:8.4.0-oraclelinux8查看镜像 docker images2、新建宿主机本地目录:用来挂载MySQL容器所产生的数据的目录 mkdir -p /home/admin/data/mysql /home/admin/logs/mysql /home/admin/conf/mysql3、在/home/admin/conf/mysql目…

ABAP OOALV模板

自用模板,可能存在问题 一、主程序 *&---------------------------------------------------------------------* *& Report ZVIA_OO_ALV *&---------------------------------------------------------------------* REPORT ZVIA_OO_ALV.INCLUDE ZVI…

DeepSpeed-chat RLHF实战

轩辕-6bRLHF落地实战 模型介绍:轩辕-6B 模型库 (modelscope.cn) 1.1偏好数据集构建 ​ 1.1.1Prompt构建 1.1.2 Response生成 保证RM训练数据和测试数据分布一致 使用模型来生成response,为了评价response的质量,可以提高采样参数中的…

通过抓包,使用frida定位加密位置

首先我们抓取一下我们要测试的app的某一个目标api,通过抓api的包,得到关键字。 例如:关键字:x-sap-ri 我们得到想要的关键字后,通过拦截 类,寻找我们的关键字,及找到发包收包的位置&#xff0c…

无线WiFi网络版毫米波雷达人体传感器,智能家居节能减排照明有人无人识别

在这个科技日新月异的时代,智能家居已经不再是遥不可及的未来概念,而是悄然融入了我们的日常生活,为我们的生活带来了未有的便捷与舒适。今天,让我们一起探索一项创新性的智能家居技术——飞睿智能无线WiFi网络版毫米波雷达人体传…

Linux介绍与安装指南:从入门到精通

1. Linux简介 1.1 什么是Linux? Linux是一种基于Unix的操作系统,由Linus Torvalds于1991年首次发布。Linux的核心(Kernel)是开源的,允许任何人自由使用、修改和分发。Linux操作系统通常包括Linux内核、GNU工具集、图…

26.100ASK_T113-PRO 测试摄像头 输出信息

1.测试代码 读到摄象头参数 输出 video_test.c #include <sys/types.h> #include <sys/stat.h> #include <fcntl.h> #include <sys/ioctl.h> #include <unistd.h> #include <stdio.h> #include <string.h> #include <linux/type…

Qt读写Usb设备的数据

Qt读写Usb设备的数据 问题:要读取usb设备进行通讯&#xff0c;qt好像没有对应的库支持。解决&#xff1a;libusbwindow下载 :Linux下载: QtUsb 开源的第三方库库里面的函数说明&#xff1a;window版本&#xff1a;Linux中也提供的直接下载测试代码&#xff1a;库下载&#xff1…

2024最新python使用yt-dlp

2024最新python使用yt-dlp下载YT视频 1.获取yt的cookie1&#xff09;google浏览器下载Get cookies.txt LOCALLY插件2&#xff09;导出cookie 2.yt-dlp下载[yt-dlp的GitHub地址](https://github.com/yt-dlp/yt-dlp?tabreadme-ov-file)1&#xff09;使用Pycharm(2024.3)进行代码…

python学opencv|读取图像

【1】引言 前序学习了使用matplotlib模块进行画图&#xff0c;今天开始我们逐步尝试探索使用opencv来处理图片。 【2】学习资源 官网的学习链接如下&#xff1a; OpenCV: Getting Started with Images 不过读起来是英文版&#xff0c;可能略有难度&#xff0c;所以另推荐一…

27加餐篇:gRPC框架的优势与不足之处

gRPC作为一个现代的、开源的远程过程调用(RPC)框架,在多个方面都展现了其优雅之处,同时也存在一些不足之处。这篇文章我们就相对全面的分析一下gRPC框架那些优雅的地方和不足的地方。 优雅的地方 gRPC作为一个RPC框架,在编码、传输协议已经支持多语言方面都比较高效,下…

linux模拟HID USB设备及wireshark USB抓包配置

文章目录 1. 内核配置2. 设备配置附 wireshark USB抓包配置 linux下模拟USB HID设备的简单记录&#xff0c;其他USB设备类似。 1. 内核配置 内核启用USB Gadget&#xff0c;使用fs配置usb device信息。 Device Drivers ---> [*] USB support ---><*> USB …

Ubuntu20.04运行R-VIO2

目录 1.环境配置2.构建项目3. 运行 VIO 模式4.结果图 1.环境配置 CMakeLists.txt中 C 使用 14、opencv使用4 2.构建项目 克隆代码库&#xff1a; 在终端中执行以下命令克隆项目&#xff1a;git clone https://github.com/rpng/R-VIO2.git编译项目&#xff1a; 使用 catkin_m…