飞鼠异地组网工具实战之访问k8s集群内部服务

news2024/11/18 1:45:41

飞鼠异地组网工具实战之访问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 本次实践前提

  1. 本次实践前提为已经搭建好飞鼠异地组网的初步环境。
  • 参考博文:飞鼠异地组网工具基本使用教程
  1. 本地局域网环境已经提前部署好k8s单master集群环境。
  2. 需要提前在华为云或其他云厂商购买一台云服务器模拟外部客户端。

2.3 本次实践环境规划

  • 本次实践环境
hostnameIP地址操作系统版本服务器类别角色备注
cloud内网IP:172.22.48.72、公网IP:120.79.233.45ubuntu22.04阿里云服务器中心控制器(master)阿里云VPC专有网络:172.22.48.0/24
jeven192.168.3.246ubuntu22.04本地服务器子网节点本地局域网:192.168.3.0/24
mywin10192.168.3.168win10——本地客户端192.168.3.0/24
ecs-e238192.168.0.168Windows Server2012 R2——外部客户端华为云VPC虚拟私有云:192.168.0.0/24
  • 本地局域网k8s环境
hostnameIP地址操作系统版本k8s版本角色
k8s-master192.168.3.201centos7.6v1.27.4master节点
k8s-node01192.168.3.202centos7.6v1.27.4worker节点
k8s-node02192.168.3.203centos7.6v1.27.4worker节点

三、检查本地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: wordpress
  namespace: wordpress
  labels:
    app: wordpress
spec:
  ports:
    - protocol: TCP
      targetPort: 80
      port: 80
      nodePort: 30020
  selector:
    app: wordpress
  type: NodePort

---

apiVersion: apps/v1
kind: Deployment
metadata:
  name: wordpress
  namespace: wordpress
  labels:
    app: wordpress
spec:
  replicas: 2
  selector:
    matchLabels:
      app: wordpress
  template:
    metadata:
      labels:
        app: wordpress
    spec:
      containers:
        - name: wordpress
          image: wordpress
          ports:
            - containerPort: 80
          env:
            - name: WORDPRESS_DB_HOST
              value: 10.96.0.100
            - name: WORDPRESS_DB_USER
              value: wordpress
            - name:  WORDPRESS_DB_PASSWORD
              valueFrom:      
                secretKeyRef:
                  name: mysecret
                  key: password
          volumeMounts:
            - mountPath: "/var/www/html"
              name: wordpress-data
      volumes:
        - name: wordpress-data
          hostPath:
            path: /data/wordpress/data         

---

apiVersion: v1
kind: Service
metadata:
  name: wordpress-mysql
  namespace: wordpress
  labels:
    app: wordpress
spec:
  ports:
    - port: 3306
  type: ClusterIP
  clusterIP: 10.96.0.100
  selector:
    app: wordpress
    tier: mysql

---

apiVersion: apps/v1
kind: StatefulSet
metadata:
  name: wordpress-mysql
  namespace: wordpress
  labels:
    app: wordpress
spec:
  replicas: 1
  selector:
    matchLabels:
      app: wordpress
      tier: mysql
  serviceName: "wordpress-mysql"
  template:
    metadata:
      labels:
        app: wordpress
        tier: mysql
    spec:
      nodeSelector:
        kubernetes.io/hostname: k8s-node01
      containers:
        - name: mysql
          image: mysql:5.7
          env:
            - name: MYSQL_ROOT_PASSWORD
              valueFrom:
                secretKeyRef:
                  name: mysecret
                  key: password
            - name: MYSQL_DATABASE
              value: wordpress
            - name: MYSQL_USER
              valueFrom:      
                secretKeyRef:
                  name: mysecret
                  key: username
            - name: MYSQL_PASSWORD
              valueFrom:
                secretKeyRef:
                  name: mysecret
                  key: password
             
          ports:
            - containerPort: 3306
              name: mysql
          volumeMounts:
            - mountPath: /var/lib/mysql
              name: mysql-storage
      volumes:
        - name: mysql-storage
          hostPath:
            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

在这里插入图片描述

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

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

相关文章

局域网内Ubuntu上搭建Git服务器

1.在局域网内选定一台Ubuntu电脑作为Git服务端&#xff1a; (1).新建用户如为fbc&#xff0c;执行如下命令&#xff1a;需设置密码&#xff0c;此为fbc sudo adduser fbc (2).切换到fbc用户&#xff1a;需密码&#xff0c;此前设置为fbc su fbc (3).建一个空目录作为仓…

消息通讯-MQTT WebHookSpringBoot案例

一、EMQX WebHook介绍 1、EMQX WebHook 是由 emqx_web_hook (opens new window)插件提供的将EMQX中的钩子事件通知到某个Web服务的功能。 2、WebHook 的内部实现是基于钩子&#xff0c;借助 Webhook 可以完成设备在线、上下线记录&#xff0c;订阅与消息存储、消息送达确认等诸…

【Spring Boot 源码学习】Banner 信息打印流程

Spring Boot 源码学习系列 Banner 信息打印流程 引言往期内容主要内容1. printBanner 方法2. 关闭 Banner 信息打印3. SpringApplicationBannerPrinter 类3.1 LOG 模式打印3.1.1 getBanner 方法3.1.1.1 新建 Banners3.1.1.2 添加 ImageBanner3.1.1.3 添加 ResourceBanner3.1.1.…

Flume的安装部署及常见问题解决

1.安装地址 &#xff08;1&#xff09; Flume官网地址&#xff1a;http://flume.apache.org/ &#xff08;2&#xff09;文档查看地址&#xff1a;http://flume.apache.org/FlumeUserGuide.html &#xff08;3&#xff09;下载地址&#xff1a;http://archive.apache.org/dist…

RVC从入门到......

RVC变声器官方教程&#xff1a;10分钟克隆你的声音&#xff01;一键训练&#xff0c;低配显卡用户福音&#xff01;_哔哩哔哩_bilibili配音&#xff1a;AI逍遥散人&#xff08;已授权&#xff09;关注UP主并私信"RVC"&#xff08;三个字母&#xff09;自动获取一键训…

PS 颜色取样器标尺工具 基本使用讲解

上文 PS 吸管工具基本使用方法 我们讲完了 吸管工具 那么 我们继续 打开ps先 接着 我们选择这个 颜色取样器工具 选择之后 我们鼠标在图像上随便点一下 就会出现一个标记 然后 我们可以点多几个地方 边上的信息面板就会输出 点1 和 点2 甚至 多个 点3 点4 的 颜色 RGB代码 …

Python 如何实现备忘录设计模式?什么是备忘录设计模式?Python 备忘录设计模式示例代码

什么是备忘录&#xff08;Memento&#xff09;设计模式&#xff1f; 备忘录&#xff08;Memento&#xff09;设计模式是一种行为型设计模式&#xff0c;用于捕获一个对象的内部状态&#xff0c;并在对象之外保存这个状态&#xff0c;以便在需要时恢复对象到先前的状态。这种模…

[qemu逃逸] DefconQuals2018-EC3

前言 一道简单的套壳堆题.原本题目环境为 ubu16, 我这里使用的是 ubu18 设备逆向 qemu-system-x86_64 只开了 Canary 和 NX 保护. 比较简单, 主要逻辑在 mmio_write 里面, 其实现了一个菜单堆, 具有增删改的功能: 但是在释放堆块时并没有置空, 所以这里存在 UAF. 而程序还直…

三、程序员指南:数据平面开发套件

定时器库 定时器库为DPDK执行单元提供了定时器服务&#xff0c;以便异步执行回调函数。该库的特点包括&#xff1a; 定时器可以是周期性的&#xff08;多次触发&#xff09;或单次的&#xff08;一次性触发&#xff09;。定时器可以从一个核加载并在另一个核上执行。这必须在…

IntelliJ IDEA 2023 v2023.2.5

IntelliJ IDEA 2023是一款功能强大的集成开发环境&#xff08;IDE&#xff09;&#xff0c;为开发人员提供了许多特色功能&#xff0c;以下是其特色介绍&#xff1a; 新增语言支持&#xff1a;IntelliJ IDEA 2023新增对多种编程语言的支持&#xff0c;包括Kotlin、TypeScript、…

介绍交换空间概念以及如何设置交换空间

文章目录 什么交换空间新增交换空间 什么交换空间 交换空间&#xff08;Swap space&#xff09;是计算机内存的一种补充&#xff0c;位于硬盘驱动器上。当物理内存不足时&#xff0c;系统会将不活跃的页面移到交换空间中。 交换空间可以帮助系统在以下情况下运行&#xff1a…

mysql 实现去重

个人网站 首发于公众号小肖学数据分析 1、试题描述 数据表user_test如下&#xff0c;请你查询所有投递用户user_id并且进行去重展示&#xff0c;查询结果和返回顺序如下 查询结果和返回顺序如下所示 解题思路&#xff1a; (1) 对user_id列直接去重&#xff1a; &#xff…

Kotlin学习(一)

Kotlin学习&#xff08;一&#xff09; 1.使用IDEA构建Kotlin项目 新建工程即可 我这里选择的Build System是IntelliJ&#xff0c;虽然我没用过但是这是Kotlin基础学习应该不会用到其他依赖 2.Hello World package com.simonfun main(args:Array<String>){println(&q…

Go 语言中切片的使用和理解

切片与数组类似&#xff0c;但更强大和灵活。与数组一样&#xff0c;切片也用于在单个变量中存储相同类型的多个值。然而&#xff0c;与数组不同的是&#xff0c;切片的长度可以根据需要增长和缩小。在 Go 中&#xff0c;有几种创建切片的方法&#xff1a; 使用[]datatype{val…

使用 C 语言快速排序将字符串按照 ASCII 码升序排列

示例代码&#xff1a; #include <stdio.h> #include <string.h> #include <stdlib.h>static Comp(const void *a, const void *b) {char *pa (char *)a;char *pb (char *)b;return strcmp(a, b); }int main(void) {char strs[3][10] { "bd", &q…

C++ Qt 学习(十):Qt 其他技巧

1. 带参数启动外部进程 QProcess 用于启动外部进程int QProcess::execute(const QString &program, const QStringList &arguments);QObject *parent; ... QString program "./path/to/Qt/examples/widgets/analogclock"; QStringList arguments; argument…

卷积、卷积图像操作和卷积神经网络

好多内容直接看书确实很难坚持&#xff0c;就比如这个卷积&#xff0c;书上的一大堆公式和图表直接把人劝退&#xff0c;我觉得一般的学习流程应该是自顶向下&#xff0c;先整体后局部&#xff0c;先把握大概再推敲细节的&#xff0c;上来就事无巨细地展示对初学者来说很痛苦。…

泉盛UV-K5/K6全功能中文固件

https://github.com/wu58430/uv-k5-firmware-chinese/releases 主要功能&#xff1a; 中文菜单 许多来自 OneOfEleven 的模块&#xff1a; AM 修复&#xff0c;显著提高接收质量长按按钮执行 F 操作的功能复制快速扫描菜单中的频道名称编辑频道名称 频率显示选项扫描列表分配…

文本转语音

免费工具 音视频转译 通义听悟 | https://tingwu.aliyun.com/u/wg57n33kml5nkr3p 音色迁移 speechify | https://speechify.com/voice-cloning/ 视频生成 lalamu | http://lalamu.studio/demo/ 画质增强 topazlabs video AI | https://www.topazlabs.com 付费工具 rask | htt…

重生奇迹mu转职任务详解

重生奇迹mu神骑士怎么转 神骑士是一种转职类型&#xff0c;需要你的角色达到一定等级以及完成相应任务方可转职。以下是神骑士转职的具体步骤&#xff1a; 1.等级要求&#xff1a;首先&#xff0c;你的角色需要达到150级才能进行神骑士转职任务。 2.神骑士转职任务&#xff…