飞鼠异地组网工具实战之访问k8s集群内部服务
飞鼠异地组网工具实战之访问k8s集群内部服务
- 一、飞鼠异地组网工具介绍
- 1.1 飞鼠工具简介
- 1.2 飞鼠工具官网
- 二、本次实践介绍
- 2.1 本次实践场景描述
- 2.2 本次实践前提
- 2.3 本次实践环境规划
- 三、检查本地k8s集群环境
- 3.1 检查k8s各节点状态
- 3.2 检查k8s版本
- 3.3 检查k8s系统pod状态
- 四、本地部署wordpress服务
- 4.1 创建部署目录
- 4.2 创建密码文件
- 4.3 创建命名空间
- 4.4 创建secret资源对象
- 4.5 查看secret资源对象状态
- 4.6 编辑wordpress.yaml文件
- 4.7 部署wordpress服务
- 4.8 检查pod状态
- 4.9 查看service状态
- 五、本地访问wordpres服务
- 5.1 wordpres初始化配置
- 5.2 设置站点信息
- 5.3 初始化完成
- 5.4 访问wordpress前台首页
- 六、飞鼠中心控制器节点后台设置工作
- 6.1 创建区域
- 6.2 添加用户
- 6.3 下载客户端配置文件
- 七、外部客户端安装wireguard
- 7.1 登录外部客户端
- 7.2 下载wireguard软件
- 7.3 运行wireguard
- 7.4 导入配置文件
- 7.5 连接隧道
- 7.6 查看VPN连接状态
- 八、外部客户端访问wordpress相关服务
- 8.1 外部客户端访问VPC内网IP
- 8.2 远程连接中心控制器节点服务器
- 8.3 访问k8s的wordpress的数据库服务
- 8.4 访问wordpress网站服务
一、飞鼠异地组网工具介绍
1.1 飞鼠工具简介
飞鼠异地组网工具是一款能够突破地域限制、实现高效异地组网的强大工具。它采用标准的OSPF路由协议,具备跨平台兼容性,可以应对大批量数据中心之间的异地组网需求。
1.2 飞鼠工具官网
飞鼠官方网站:https://www.feishuwg.com/
二、本次实践介绍
2.1 本次实践场景描述
1.本次实践的两个局域网为本地局域网和阿里云VPC专有网络;
2.其中阿里云服务器为中心控制器节点服务器,本地局域网部署子网节点服务器;
3.本地局域网部署k8s单master集群环境,k8s部署wordpress服务;
4.在华为云开通一台ECS弹性云服务器模拟外部外部出差员工,可以访问内网的wordpress网站服务及访问wordpress数据库。
2.2 本次实践前提
- 本次实践前提为已经搭建好飞鼠异地组网的初步环境。
- 参考博文:飞鼠异地组网工具基本使用教程
- 本地局域网环境已经提前部署好k8s单master集群环境。
- 需要提前在华为云或其他云厂商购买一台云服务器模拟外部客户端。
2.3 本次实践环境规划
- 本次实践环境
hostname | IP地址 | 操作系统版本 | 服务器类别 | 角色 | 备注 |
---|---|---|---|---|---|
cloud | 内网IP:172.22.48.72、公网IP:120.79.233.45 | ubuntu22.04 | 阿里云服务器 | 中心控制器(master) | 阿里云VPC专有网络:172.22.48.0/24 |
jeven | 192.168.3.246 | ubuntu22.04 | 本地服务器 | 子网节点 | 本地局域网:192.168.3.0/24 |
mywin10 | 192.168.3.168 | win10 | —— | 本地客户端 | 192.168.3.0/24 |
ecs-e238 | 192.168.0.168 | Windows Server2012 R2 | —— | 外部客户端 | 华为云VPC虚拟私有云:192.168.0.0/24 |
- 本地局域网k8s环境
hostname | IP地址 | 操作系统版本 | k8s版本 | 角色 |
---|---|---|---|---|
k8s-master | 192.168.3.201 | centos7.6 | v1.27.4 | master节点 |
k8s-node01 | 192.168.3.202 | centos7.6 | v1.27.4 | worker节点 |
k8s-node02 | 192.168.3.203 | centos7.6 | v1.27.4 | worker节点 |
三、检查本地k8s集群环境
3.1 检查k8s各节点状态
检查k8s各节点状态,确保k8s集群各节点状态正常。
[root@k8s-master ~]# kubectl get nodes
NAME STATUS ROLES AGE VERSION
k8s-master Ready control-plane 108d v1.27.4
k8s-node01 Ready <none> 108d v1.27.4
k8s-node02 Ready <none> 108d v1.27.4
3.2 检查k8s版本
查看k8s的版本,注意部署应用时兼容的k8s版本。
[root@k8s-master ~]# kubectl version --short
Flag --short has been deprecated, and will be removed in the future. The --short output will become the default.
Client Version: v1.27.4
Kustomize Version: v5.0.1
Server Version: v1.27.4
3.3 检查k8s系统pod状态
检查k8s集群的系统pod状态,确保所有系统pod运行正常。
[root@k8s-master ~]# kubectl get pods -n kube-system
NAME READY STATUS RESTARTS AGE
calico-kube-controllers-85578c44bf-rgxkx 1/1 Running 5 (14m ago) 5d23h
calico-node-8tts7 1/1 Running 10 (14m ago) 108d
calico-node-fx8mv 1/1 Running 10 (14m ago) 108d
calico-node-n8rt4 1/1 Running 11 (14m ago) 108d
coredns-7bdc4cb885-88qng 1/1 Running 3 (14m ago) 5d23h
coredns-7bdc4cb885-brdhk 1/1 Running 3 (14m ago) 5d23h
etcd-k8s-master 1/1 Running 11 (14m ago) 108d
kube-apiserver-k8s-master 1/1 Running 11 (14m ago) 108d
kube-controller-manager-k8s-master 1/1 Running 15 (14m ago) 108d
kube-proxy-6vvw5 1/1 Running 10 (14m ago) 108d
kube-proxy-867jg 1/1 Running 10 (14m ago) 108d
kube-proxy-lgsc8 1/1 Running 10 (14m ago) 108d
kube-scheduler-k8s-master 1/1 Running 14 (14m ago) 108d
四、本地部署wordpress服务
4.1 创建部署目录
创建wordpress应用的目录,使用以下命令创建 /data/wordpress 。
mkdir -p /data/wordpress && cd /data/wordpress
4.2 创建密码文件
使用以下命令,创建存放账号和密码的mysql_pw.txt文件。
cat << EOF > mysql_pw.txt
username=wordpress
password=wordpress
EOF
4.3 创建命名空间
创建命名空间wordpress
kubectl create namespace wordpress
4.4 创建secret资源对象
创建secret资源对象mysecret
kubectl --namespace=wordpress create secret generic mysecret --from-env-file=./mysql_pw.txt
4.5 查看secret资源对象状态
查看secret资源对象mysecret当前状态
[root@k8s-master wordpress]# kubectl get secrets -n wordpress
NAME TYPE DATA AGE
mysecret Opaque 2 14s
4.6 编辑wordpress.yaml文件
编辑wordpress.yaml部署文件,内容如下:
---apiVersion: v1
kind: Service
metadata:name: wordpressnamespace: wordpresslabels:app: wordpress
spec:ports:- protocol: TCPtargetPort: 80port: 80nodePort: 30020selector:app: wordpresstype: NodePort---apiVersion: apps/v1
kind: Deployment
metadata:name: wordpressnamespace: wordpresslabels:app: wordpress
spec:replicas: 2selector:matchLabels:app: wordpresstemplate:metadata:labels:app: wordpressspec:containers:- name: wordpressimage: wordpressports:- containerPort: 80env:- name: WORDPRESS_DB_HOSTvalue: 10.96.0.100- name: WORDPRESS_DB_USERvalue: wordpress- name: WORDPRESS_DB_PASSWORDvalueFrom: secretKeyRef:name: mysecretkey: passwordvolumeMounts:- mountPath: "/var/www/html"name: wordpress-datavolumes:- name: wordpress-datahostPath:path: /data/wordpress/data ---apiVersion: v1
kind: Service
metadata:name: wordpress-mysqlnamespace: wordpresslabels:app: wordpress
spec:ports:- port: 3306type: ClusterIPclusterIP: 10.96.0.100selector:app: wordpresstier: mysql---apiVersion: apps/v1
kind: StatefulSet
metadata:name: wordpress-mysqlnamespace: wordpresslabels:app: wordpress
spec:replicas: 1selector:matchLabels:app: wordpresstier: mysqlserviceName: "wordpress-mysql"template:metadata:labels:app: wordpresstier: mysqlspec:nodeSelector:kubernetes.io/hostname: k8s-node01containers:- name: mysqlimage: mysql:5.7env:- name: MYSQL_ROOT_PASSWORDvalueFrom:secretKeyRef:name: mysecretkey: password- name: MYSQL_DATABASEvalue: wordpress- name: MYSQL_USERvalueFrom: secretKeyRef:name: mysecretkey: username- name: MYSQL_PASSWORDvalueFrom:secretKeyRef:name: mysecretkey: passwordports:- containerPort: 3306name: mysqlvolumeMounts:- mountPath: /var/lib/mysqlname: mysql-storagevolumes:- name: mysql-storagehostPath:path: /var/lib/mysql
4.7 部署wordpress服务
执行wordpress.yaml文件,开始部署wordpress应用。
[root@k8s-master wordpress]# kubectl apply -f wordpress.yaml
service/wordpress created
deployment.apps/wordpress created
service/wordpress-mysql created
statefulset.apps/wordpress-mysql created
4.8 检查pod状态
在wordpress命名空间下,查看wordpress服务的pod状态,确保所有pod都正常启动。
[root@k8s-master wordpress]# kubectl get pods -n wordpress
NAME READY STATUS RESTARTS AGE
wordpress-7c68d9b7b6-g64s5 1/1 Running 0 2m12s
wordpress-7c68d9b7b6-zsgdg 1/1 Running 0 2m12s
wordpress-mysql-0 1/1 Running 0 2m12s
4.9 查看service状态
在wordpress命名空间下,查看wordpress服务的service状态,可以看到对外映射的访问端口为30020。
[root@k8s-master wordpress]# kubectl get service -n wordpress
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE
wordpress NodePort 10.110.180.202 <none> 80:30020/TCP 3m14s
wordpress-mysql ClusterIP 10.96.0.100 <none> 3306/TCP 3m14s
五、本地访问wordpres服务
5.1 wordpres初始化配置
访问地址:http://192.168.3.202:30020/,将IP替换为自己工作节点IP地址,进入 wordpres初始化配置界面,设置系统语言为简体中文。
5.2 设置站点信息
设置站点名称、用户名、密码、邮箱等信息,自定义设置即可。
5.3 初始化完成
初始化完成后,点击“登录”。
输入刚才设置的用户名和密码,进入wordpress后台管理页面。
5.4 访问wordpress前台首页
访问地址:http://192.168.3.202:30020/,将IP替换为自己服务器IP地址,进入wordpress前台首页。
六、飞鼠中心控制器节点后台设置工作
6.1 创建区域
在中心控制器节点的管理后台,区域管理——创建区域。
名字:自定义,这里填写my-k8s;
网络协议:FS-NAT,无限制访问;
选择端口:50030;
对外网络地址:选择公网IP地址,这里是中心控制器节点所在的公网IP地址;
网卡名称:选择本地网卡eth0;
允许网络:192.168.0.0/24,192.168.3.0/24,172.22.48.0/24,填写需要连接的局域网网络。
其余默认即可,选择“创建”。
6.2 添加用户
区域管理——新建的区域(my-k8s)——客户端管理,选择“添加用户”。
用户名:jeven;
Email地址:jeven@qq.com;
客户端IP:默认10.5.0.2/32;
保存即可。
6.3 下载客户端配置文件
点击下载,下载jeven.conf配置文件。
七、外部客户端安装wireguard
7.1 登录外部客户端
提前准备好一台华为云服务器或者其他云服务器,操作系统为windows即可,这里使用的是Windows Server2012 R2版本,使用远程桌面连接云服务器。
7.2 下载wireguard软件
下载地址:https://github.com/xingkongwangbin/feishuwg/releases/tag/1.0,打开下载地址,下载wireguard软件。
7.3 运行wireguard
将下载的wireguard安装包,在外部客户端直接运行即可。
7.4 导入配置文件
将之前下载的jeven.conf配置文件,导入到wireguard中。
7.5 连接隧道
在wireguard中,点击连接,可以看到处于已连接状态。
7.6 查看VPN连接状态
在my-k8s区域中,状态查看页面,可以看到VPN连接状态显示小绿灯,表示连接处于正常状态。
八、外部客户端访问wordpress相关服务
8.1 外部客户端访问VPC内网IP
外部客户端访问中心控制器节点的内网IP地址172.22.48.72,可以正常ping通。
8.2 远程连接中心控制器节点服务器
外部客户端远程连接中心控制器节点服务器
ssh root@172.22.48.72
8.3 访问k8s的wordpress的数据库服务
在master节点,远程访问子网节点服务器。如果k8s部署在中心控制器节点内网环境,则可以直接访问k8s映射的服务,无需在跳转到子网节点进行跳转连接。
ssh root@192.168.3.246
ssh远程连接k8s-master节点
ssh root@192.168.3.201
查看k8s的wordpress的数据库服务地址
[root@k8s-master ~]# kubectl get service -n wordpress
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE
wordpress NodePort 10.110.180.202 <none> 80:30020/TCP 14h
wordpress-mysql ClusterIP 10.96.0.100 <none> 3306/TCP 14h
访问k8s的wordpress的数据库服务
kubectl exec -it -n wordpress wordpress-mysql-0 -- /bin/bash
查询wordpress数据表
mysql> use wordpress;
Database changed
mysql> show tables;
+-----------------------+
| Tables_in_wordpress |
+-----------------------+
| wp_commentmeta |
| wp_comments |
| wp_links |
| wp_options |
| wp_postmeta |
| wp_posts |
| wp_term_relationships |
| wp_term_taxonomy |
| wp_termmeta |
| wp_terms |
| wp_usermeta |
| wp_users |
+-----------------------+
12 rows in set (0.00 sec)mysql>
8.4 访问wordpress网站服务
在外部客户端,通过以上方法连接到子网节点服务器后,可以直接links访问wordpress服务:http://192.168.3.202:30020,也可以自行安装火狐进行浏览器访问。
links http://192.168.3.202:30020
相关文章:

飞鼠异地组网工具实战之访问k8s集群内部服务
飞鼠异地组网工具实战之访问k8s集群内部服务 一、飞鼠异地组网工具介绍1.1 飞鼠工具简介1.2 飞鼠工具官网 二、本次实践介绍2.1 本次实践场景描述2.2 本次实践前提2.3 本次实践环境规划 三、检查本地k8s集群环境3.1 检查k8s各节点状态3.2 检查k8s版本3.3 检查k8s系统pod状态 四…...

【Flink】窗口(Window)
窗口理解 窗口(Window)是处理无界流的关键所在。窗口可以将数据流装入大小有限的“桶”中,再对每个“桶”加以处理。 本文的重心将放在 Flink 如何进行窗口操作以及开发者如何尽可能地利用 Flink 所提供的功能。 对窗口的正确理解ÿ…...

读像火箭科学家一样思考笔记03_第一性原理(上)
1. 思维的两种障碍 1.1. 为什么知识会成为一种缺陷而非一种美德 1.1.1. 知识是一种美德 1.1.2. 知识同样的特质也会把它变成一种缺点 1.1.3. 知识确实是个好东西,但知识的作用应该是给人们提供信息,而不是起约束作用 1.1.4. 知识应该启发智慧&#…...
npm私有云
安装node时npm会自动安装,npm也可以单独安装。 package.json 在使用npm时,package.json文件是非常重要的,因为它包含了关于项目的必要信息,比如名称、版本、依赖项等。在初始化新项目时,通常会使用npm init命令生成一…...

莹莹API管理系统源码附带两套模板
这是一个API后台管理系统的源码,可以自定义添加接口,并自带两个模板。 环境要求 PHP版本要求高于5.6且低于8.0,已测试通过的版本为7.4。 需要安装PHPSG11加密扩展。 已测试:宝塔/主机亲测成功搭建! 安装说明 &am…...
【Kingbase FlySync】命令模式:安装部署同步软件,实现KES到KES实现同步
【Kingbase FlySync】命令模式:安装部署同步软件,实现KES到KES实现同步迁移 概述准备环境目标资源1.测试虚拟机下载地址包含node1,node22.同步工具下载地址3.临时授权下载地址4.ruby工具下载地址5.EXAMv0.11.sql下载地址 实操:同步软件安装部署1.node1准…...

python使用selenium webDriver时 报错
可能原因和解决: 1. python 解释器 ----> 设置 2. 浏览器版本 与 浏览器驱动版本不一致 ----> 安装同一版本的 (下载chromedriver | 谷歌驱动更高版本的测试版) 参考:Python使用Selenium WebDriver的入门介绍及安装教程-CSDN博客 Selenium安…...
【ROS2机器人入门到实战】
ROS2机器人入门到实战教程(鱼香ROS) 写在前面 当前平台文章汇总地址:ROS2机器人从入门到实战获取完整教程及配套资料代码,请关注公众号<鱼香ROS>获取教程配套机器人开发平台:两驱版| 四驱版为方便交流,搭建了机器人技术问…...
Nuxt3框架局部文件引用外部JS/CSS文件的相关配置方法
引入外部JS: <script setup>useHead({script: [ {type: "text/javascript",src: https://cdnjs.cloudflare.com/ajax/libs/jquery/3.7.0/jquery.min.js}]}) </script>useHead只能与组件的setup和生命周期钩子一起使用 如果需要将js放置body区…...

Docker 可视化面板 ——Portainer
Portainer 是一个非常好用的 Docker 可视化面板,可以让你轻松地管理你的 Docker 容器。 官网:Portainer: Container Management Software for Kubernetes and Docker 【Docker系列】超级好用的Docker可视化工具——Portainer_哔哩哔哩_bilibili 环境 …...

Java 教育局民办教育信息服务与监管平台
1) 项目背景 按照《中华人民共和国民办教育促进法》和《中华人民共和国政府信息公开条例》的相关规定,为满足学生和家长、社会各界获取权威信息的需求,着力解决服务老百姓最后一公里问题,达到宣传民办教育和引导家长择校的效果࿰…...

小迪笔记(1)——操作系统文件下载反弹SHELL防火墙绕过
名词解释 POC:验证漏洞存在的代码; EXP:利用漏洞的代码; payload:漏洞利用载荷, shellcode:漏洞代码, webshell:特指网站后门; 木马:强调控制…...

Pytorch D2L Subplots方法对画图、图片处理
问题代码 def show_images(imgs, num_rows, num_cols, titlesNone, scale1.5): #save """绘制图像列表""" figsize (num_cols * scale, num_rows * scale) _, axes d2l.plt.subplots(num_rows, num_cols, figsizefigsize) axes axes.flatten…...
MATLAB算法实战应用案例精讲-【目标检测】YOLOV5(补充篇)
目录 算法原理 YOLOv5数据集训练 软硬件背景: 数据集准备 配置文件 模型训练...
WPF中可视化树和逻辑树的区别是什么
在WPF中,用户界面元素被组织成树形结构。这种结构主要分为两种:逻辑树(Logical Tree)和可视化树(Visual Tree)。它们在设计上各有特点和用途。 逻辑树(Logical Tree) 逻辑树是WPF中…...
小迪安全笔记(2)——web应用架构搭建漏洞HTTP数据包代理服务器
Web应用环境架构类 开发语言:php、java、python、ASP、ASPX等程序源码:用的人多了,就成CMS了。中间件容器:IIS、Apache、Nginx、Tomcat、Weblogic、Jboos、glasshfish等数据库类型:Access、Mysql、Mssql、Oracle、Redi…...

[AI]ChatGPT4 与 ChatGPT3.5 区别有多大
ChatGPT 3.5 注册已经不需要手机了,直接邮箱认证就可以,这可真算是好消息,坏消息是 ChatGPT 4 还是要收费。 那么 GPT-3.5 与 GPT-4 区别有多大呢,下面简单测试一下。 以从 TDengine 订阅数据为例,TDengine 算是不太小…...

node实战——koa实现文件上传
文章目录 ⭐前言⭐koa实现文件上传⭐foxapi测试⭐总结⭐结束⭐前言 大家好,我是yma16,本文分享关于node实战——node实战——koa实现文件上传。 本文适用对象:前端初学者转node方向,在校大学生,即将毕业的同学,计算机爱好者。 node系列往期文章 node_windows环境变量配置…...
C++中的this指针
C中的this指针 this 实际上是成员函数的一个形参,在调用成员函数时将对象的地址作为实参传递给 this。不过 this 这个形参是隐式的,它并不出现在代码中,而是在编译阶段由编译器默默地将它添加到参数列表中。 this指针是类的指针,…...
分析日志的一般套路
日志文件很多怎么快速查看? 整机日志一般会有统一的文件名命名规则(如包含时间点),可以根据问题现象时间点大致定位到相应的文件根据日志文件的修改时间属性,定位到相应的文件根据时间点全文件夹搜索内容,…...
后进先出(LIFO)详解
LIFO 是 Last In, First Out 的缩写,中文译为后进先出。这是一种数据结构的工作原则,类似于一摞盘子或一叠书本: 最后放进去的元素最先出来 -想象往筒状容器里放盘子: (1)你放进的最后一个盘子(…...
线程同步:确保多线程程序的安全与高效!
全文目录: 开篇语前序前言第一部分:线程同步的概念与问题1.1 线程同步的概念1.2 线程同步的问题1.3 线程同步的解决方案 第二部分:synchronized关键字的使用2.1 使用 synchronized修饰方法2.2 使用 synchronized修饰代码块 第三部分ÿ…...
服务器硬防的应用场景都有哪些?
服务器硬防是指一种通过硬件设备层面的安全措施来防御服务器系统受到网络攻击的方式,避免服务器受到各种恶意攻击和网络威胁,那么,服务器硬防通常都会应用在哪些场景当中呢? 硬防服务器中一般会配备入侵检测系统和预防系统&#x…...

技术栈RabbitMq的介绍和使用
目录 1. 什么是消息队列?2. 消息队列的优点3. RabbitMQ 消息队列概述4. RabbitMQ 安装5. Exchange 四种类型5.1 direct 精准匹配5.2 fanout 广播5.3 topic 正则匹配 6. RabbitMQ 队列模式6.1 简单队列模式6.2 工作队列模式6.3 发布/订阅模式6.4 路由模式6.5 主题模式…...

Python基于历史模拟方法实现投资组合风险管理的VaR与ES模型项目实战
说明:这是一个机器学习实战项目(附带数据代码文档),如需数据代码文档可以直接到文章最后关注获取。 1.项目背景 在金融市场日益复杂和波动加剧的背景下,风险管理成为金融机构和个人投资者关注的核心议题之一。VaR&…...

Web后端基础(基础知识)
BS架构:Browser/Server,浏览器/服务器架构模式。客户端只需要浏览器,应用程序的逻辑和数据都存储在服务端。 优点:维护方便缺点:体验一般 CS架构:Client/Server,客户端/服务器架构模式。需要单独…...
【FTP】ftp文件传输会丢包吗?批量几百个文件传输,有一些文件没有传输完整,如何解决?
FTP(File Transfer Protocol)本身是一个基于 TCP 的协议,理论上不会丢包。但 FTP 文件传输过程中仍可能出现文件不完整、丢失或损坏的情况,主要原因包括: ✅ 一、FTP传输可能“丢包”或文件不完整的原因 原因描述网络…...
41道Django高频题整理(附答案背诵版)
解释一下 Django 和 Tornado 的关系? Django和Tornado都是Python的web框架,但它们的设计哲学和应用场景有所不同。 Django是一个高级的Python Web框架,鼓励快速开发和干净、实用的设计。它遵循MVC设计,并强调代码复用。Django有…...

Win系统权限提升篇UAC绕过DLL劫持未引号路径可控服务全检项目
应用场景: 1、常规某个机器被钓鱼后门攻击后,我们需要做更高权限操作或权限维持等。 2、内网域中某个机器被钓鱼后门攻击后,我们需要对后续内网域做安全测试。 #Win10&11-BypassUAC自动提权-MSF&UACME 为了远程执行目标的exe或者b…...
虚幻基础:角色旋转
能帮到你的话,就给个赞吧 😘 文章目录 移动组件使用控制器所需旋转:组件 使用 控制器旋转将旋转朝向运动:组件 使用 移动方向旋转 控制器旋转和移动旋转 缺点移动旋转:必须移动才能旋转,不移动不旋转控制器…...