K8S客户端二 使用Rancher部署服务

Rancher容器云管理平台

本博客中使用了四台服务器,如下

  1. rancher服务器
  2. k8s-master
  3. k8s-worker01
  4. k8s-worker02

一、主机硬件说明

序号硬件操作及内核
1CPU 4 Memory 4G Disk 100GCentOS7
2CPU 4 Memory 4G Disk 100GCentOS7
3CPU 4 Memory 4G Disk 100GCentOS7
4CPU 4 Memory 4G Disk 100GCentOS7

二、主机配置

四台主机都要做

2.1 主机名

# hostnamectl set-hostname rancherserver
# hostnamectl set-hostname k8s-master01
# hostnamectl set-hostname k8s-worker01
# hostnamectl set-hostname k8s-worker02

2.2 四台服务器的IP地址(添加最后四行)

[root@rancherserver ~]# vim /etc/sysconfig/network-scripts/ifcfg-ens33 
# cat /etc/sysconfig/network-scripts/ifcfg-ens33
TYPE="Ethernet"
PROXY_METHOD="none"
BROWSER_ONLY="no"
BOOTPROTO="none"
DEFROUTE="yes"
IPV4_FAILURE_FATAL="no"
IPV6INIT="yes"
IPV6_AUTOCONF="yes"
IPV6_DEFROUTE="yes"
IPV6_FAILURE_FATAL="no"
IPV6_ADDR_GEN_MODE="stable-privacy"
NAME="ens33"
UUID="ec87533a-8151-4aa0-9d0f-1e970affcdc6"
DEVICE="ens33"
ONBOOT="yes"
IPADDR="192.168.10.130"
PREFIX="24"
GATEWAY="192.168.10.2"
DNS1="119.29.29.29"
[root@k8s-master01 ~]# vim /etc/sysconfig/network-scripts/ifcfg-ens33 
[root@k8s-master01 ~]# cat /etc/sysconfig/network-scripts/ifcfg-ens33
TYPE="Ethernet"
PROXY_METHOD="none"
BROWSER_ONLY="no"
BOOTPROTO="none"
DEFROUTE="yes"
IPV4_FAILURE_FATAL="no"
IPV6INIT="yes"
IPV6_AUTOCONF="yes"
IPV6_DEFROUTE="yes"
IPV6_FAILURE_FATAL="no"
IPV6_ADDR_GEN_MODE="stable-privacy"
NAME="ens33"
UUID="ec87533a-8151-4aa0-9d0f-1e970affcdc6"
DEVICE="ens33"
ONBOOT="yes"
IPADDR="192.168.10.131"
PREFIX="24"
GATEWAY="192.168.10.2"
DNS1="119.29.29.29"
[root@k8s-worker01 ~]# vim /etc/sysconfig/network-scripts/ifcfg-ens33 
[root@k8s-worker01 ~]# cat /etc/sysconfig/network-scripts/ifcfg-ens33
TYPE="Ethernet"
PROXY_METHOD="none"
BROWSER_ONLY="no"
BOOTPROTO="none"
DEFROUTE="yes"
IPV4_FAILURE_FATAL="no"
IPV6INIT="yes"
IPV6_AUTOCONF="yes"
IPV6_DEFROUTE="yes"
IPV6_FAILURE_FATAL="no"
IPV6_ADDR_GEN_MODE="stable-privacy"
NAME="ens33"
UUID="ec87533a-8151-4aa0-9d0f-1e970affcdc6"
DEVICE="ens33"
ONBOOT="yes"
IPADDR="192.168.10.132"
PREFIX="24"
GATEWAY="192.168.10.2"
DNS1="119.29.29.29"
[root@k8s-worker02 ~]# vim /etc/sysconfig/network-scripts/ifcfg-ens33 
[root@k8s-worker02 ~]# cat /etc/sysconfig/network-scripts/ifcfg-ens33
TYPE="Ethernet"
PROXY_METHOD="none"
BROWSER_ONLY="no"
BOOTPROTO="none"
DEFROUTE="yes"
IPV4_FAILURE_FATAL="no"
IPV6INIT="yes"
IPV6_AUTOCONF="yes"
IPV6_DEFROUTE="yes"
IPV6_FAILURE_FATAL="no"
IPV6_ADDR_GEN_MODE="stable-privacy"
NAME="ens33"
UUID="ec87533a-8151-4aa0-9d0f-1e970affcdc6"
DEVICE="ens33"
ONBOOT="yes"
IPADDR="192.168.10.133"
PREFIX="24"
GATEWAY="192.168.10.2"
DNS1="119.29.29.29"

2.3 主机名与IP地址解析

四台服务器都配置

# cat /etc/hosts
127.0.0.1   localhost localhost.localdomain localhost4 localhost4.localdomain4
::1         localhost localhost.localdomain localhost6 localhost6.localdomain6
192.168.52.130 rancherserver
192.168.52.131 k8s-master01
192.168.52.132 k8s-worker01
192.168.52.133 k8s-worker02

2.4 主机安全设置

# systemctl stop firewalld;
# systemctl disable firewalld

# firewall-cmd --state
not running
# sed -ri 's/SELINUX=enforcing/SELINUX=disabled/' /etc/selinux/config

2.5 主机时钟同步

# 查看系统是否已安装chrony
rpm -qa |grep chrony
# 没有安装环境的话,执行以下命令进行安装
yum install chrony 
# 安装后,直接执行这俩命令,进行时间同步
systemctl start chronyd
systemctl enable chronyd

2.6 关闭swap

关闭k8s集群节点swap

# cat /etc/fstab

默认开启,修改后关闭(把下边这行注释掉即可)
#/dev/mapper/centos-swap swap                    swap    defaults        0 0
临时关闭所有
# swapoff -a

2.7 配置内核路由转发

# vim /etc/sysctl.conf
# cat /etc/sysctl.conf
...
# 开启ip转发功能
net.ipv4.ip_forward=1
# sysctl -p
net.ipv4.ip_forward = 1

三、docker安装

docker分为ce和ee版本,ce免费,ee收费,这里安装的是ce版

所有主机安装docker 安装docker步骤 参考里边的第二章安装docker部分

四、rancher安装

只在rancherserver服务器执行即可,其他三台不需要安装

在docker官网利寻找自己想要的版本,即自定义版本安装 docker官网

在这里插入图片描述

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-R4OmXrnq-1684673185368)(Rancher容器云管理平台.assets/image-20220816144953656.png)]

[root@rancherserver ~]# docker pull rancher/rancher:v2.7.1
# 如果下载最新版本使用如下命令
docker pull rancher/rancher:latest
# 存储rancher相关信息,如用户名、密码等
[root@rancherserver ~]# mkdir -p /opt/data/rancher_data

启动

[root@rancherserver ~]# docker run -d --privileged -p 80:80 -p 443:443 -v /opt/data/rancher_data:/var/lib/rancher --restart=always --name rancher-2.7.1 rancher/rancher:v2.7.1
[root@rancherserver ~]# docker ps
CONTAINER ID   IMAGE                     COMMAND           CREATED          STATUS          PORTS                                                                      NAMES
b4fb6c11ce5a   rancher/rancher:v2.7.1   "entrypoint.sh"   26 seconds ago   Up 26 seconds   0.0.0.0:80->80/tcp, :::80->80/tcp, 0.0.0.0:443->443/tcp, :::443->443/tcp   rancher-2.7.1

五、通过Rancher部署kubernetes集群

5.1 Rancher访问

直接访问Rancher所在服务器地址即可:http://192.168.10.130
在这里插入图片描述
第一次安装会生成密码,查看密码步骤如下:
在这里插入图片描述

在这里插入图片描述
上边下方红框里就是登录密码,复制到下边密码框即可
在这里插入图片描述
可以自定义密码

注意:密码至少需要12个字符
在这里插入图片描述
完成
在这里插入图片描述

5.2 Rancher导入Kubernetes集群

这里我们导入已有集群,至于创建集群步骤,请参考右侧第二章节:创建k8s集群

在这里插入图片描述
在这里插入图片描述

复制第二个命令到master服务器执行即可(node节点不需要执行)

在这里插入图片描述
在这里插入图片描述

等两三分钟后执行下边命令查看namespace

kubectl get ns

在这里插入图片描述

也可以在web界面看
在这里插入图片描述
大概5~7f分钟后,这里才变成Active
在这里插入图片描述
如果状态一直是pending,则可能是网络插件flannel的问题,查看master机器的/run/flannel/目录下是否有一个subnet.env文件,没有的话,新增这个文件,内容如下,然后重新导入集群即可

FLANNEL_NETWORK=10.244.0.0/16
FLANNEL_SUBNET=10.244.0.1/24
FLANNEL_MTU=1450
FLANNEL_IPMASQ=true

等到状态都是true即可

在这里插入图片描述
可以看到所有主机都加进来了
在这里插入图片描述

查看集群,点击自己新建的集群
在这里插入图片描述

5.3 创建项目

点击左侧自己新建的集群
在这里插入图片描述
选择“项目-命名空间”,左上角“创建项目”

在这里插入图片描述
填写项目信息后,点击右下角“创建”
在这里插入图片描述

5.4 创建namespace命名空间

找到刚创建的项目,点击右侧“创建命名空间”

在这里插入图片描述
填写命名空间信息,点击右下角“创建”
在这里插入图片描述

可以在后台查到这个ns
在这里插入图片描述

在上边创建好的命名空间(ns)里就可以发布应用了

5.5 创建Deployment

注意,下边所有内容,起名称的时候,都是小写字母,或者小写字母加数字即可(a~z, 0~9),不然无法创建

Deployment是pod控制器,点击左侧Deployments,然后点击“创建”
在这里插入图片描述
创建deployment时,切记记得选择命名空间,否则是在ns为default下创建了deployment
在这里插入图片描述

在这里插入图片描述

部署一个nginx,下边这个30080端口就是以后浏览器要访问的nginx端口
在这里插入图片描述

开启健康检查
在这里插入图片描述

创建好后,查看,发现已经运行起来
在这里插入图片描述

访问k8s的master服务器地址+30080端口:
在这里插入图片描述

5.6 使用Rancher创建k8s集群

找到左侧“集群管理”
在这里插入图片描述
点击右侧“创建”
在这里插入图片描述
选择“总定义”
在这里插入图片描述
其他一般默认即可,这里可以更改目录
在这里插入图片描述
在这里插入图片描述
点击下一步之后:
在这里插入图片描述
把下边的命令复制到master、worker等节点执行
在这里插入图片描述
结果:
在这里插入图片描述

六 使用rancher部署mysql

6.1 安装NFS服务

NFS是Network File System的缩写,中文意思是网络文件系统。主要功能是网络让不同的主机系统之间可以共享文件或目录。
NFS客户端(一般为应用服务器,Web、)可以通过挂载(mount)的方式将NFS服务器端共享的数据目录挂载到NFS客户端本地系统中(某一个挂载点下)。
从NFS客户端的机器本地看,NFS服务器端共享的目录就好像是客户端自己的磁盘分区或目录一样,实际上是远端的NFS服务器的目录。

新启一个NFS服务器,在该服务器里安装nfs服务。用来存储MySql的数据

查看是否安装了nfs软件包

rpm -qa|grep nfs-utils

安装nfs软件包

yum -y install nfs-utils

创建挂载目录

mkdir -p /nfs/mysql
# 修改权限
chmod 777 /nfs/mysql
# 编辑该文件
vim /etc/exports

写入如下内容

/nfs/mysql *(insecure,fsid=0,rw,sync,no_root_squash,acl)

更新配置文件

exportfs -r

启动NFS服务,并查看服务状态。

# 启动NFS服务
systemctl start nfs-server
# 查看NFS状态
systemctl status nfs-server
# 查看NFS进程
ps -ef | grep nfs
# 重启NFS命令
service nfs restart
# 查看NFS日志信息
cat /var/log/messages | grep mount

配置NFS服务开机自启动

systemctl enable nfs-server

查看NFS服务共享盘挂载情况

showmount -e localhost

在所有node节点都安装nfs服务

yum install -y nfs-utils
# 创建挂载目录
mkdir -p /nfs/mysql
# 修改权限
chmod 7777 /nfs/mysql/
# 启动并且开机启动
systemctl start nfs && systemctl enable nfs

6.2 Rancher部署MySql

在rancher上部署MySQL,必须要先创建PVC和PV,PVC和PV创建之后会自动绑定,然后部署MySQL才会成功。

创建PVC和PV的顺序是固定的,必须先创建PV,再创建PVC;因为PVC是绑定在PV上的。
删除PVC和PV的顺序也是固定的,必须先删除PVC,再删除PV;如果不删除PVC直接去删除PV,是无法删除的。

创建PV

选择“持久卷”,点击“创建”
在这里插入图片描述
配置PV参数

注意 PV存储空间一定要大于后边创建的PVC的空间(注意nfs挂载路径和上边的/etc/export/文件里的路径一致,都是/nfs/mysql)
在这里插入图片描述
在这里插入图片描述
创建后可以看到创建成功
在这里插入图片描述

6.3 创建PVC

在这里插入图片描述
填写相关内容
在这里插入图片描述
在这里插入图片描述
可以看到创建成功,并且自动绑定到pvc上了
在这里插入图片描述

6.4 创建“服务发现”

部署MySQL之前一定一定要先添加服务发现,否则就会报错
在这里插入图片描述
选择Headless
在这里插入图片描述
填写信息
在这里插入图片描述
填写选择器
在这里插入图片描述
可以看到创建成功
在这里插入图片描述

6.5 部署mysql服务

创建StatefulSets
在这里插入图片描述
填写信息
在这里插入图片描述

配置环境变量——密码
在这里插入图片描述
docker官网查看mysql环境变量 dockerhub官网
在这里插入图片描述
往下拉,找到环境变量
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
pod选择存储卷
在这里插入图片描述
填写NFS服务器信息(挂载路径 /nfs/mysql)
在这里插入图片描述
在容器里选择存储卷
在这里插入图片描述
填写挂载路径(这里的路径是/var/lib/mysql)
在这里插入图片描述

点击右下角“创建”后,发现对应pod已经运行了
在这里插入图片描述
上图红框里是pod名称,如果状态一直是containering时,说明大概率报错了,在k8s的master机器执行以下命令查看日志

kubectl describe pod 	mysqlstateful-0 -n mytns

或者在nfs服务器执行以下命令查看挂载是否报错

cat /var/log/messages | grep mount

使用navicat客户端连接mysql,说明部署成功

在这里插入图片描述

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

剑指 Offer(第2版)面试题 15:二进制中1的个数

剑指 Offer(第2版)面试题 15:二进制中1的个数 剑指 Offer(第2版)面试题 15:二进制中1的个数解法1:位运算解法2:n & (n - 1)相关题目 剑指 Offer(第2版)面…

Java数据结构之《希尔排序》题目

一、前言: 这是怀化学院的:Java数据结构中的一道难度中等的一道编程题(此方法为博主自己研究,问题基本解决,若有bug欢迎下方评论提出意见,我会第一时间改进代码,谢谢!) 后面其他编程题只要我写完…

最小生成树算法

文章目录 最小生成树概述 P r i m Prim Prim 算法 - 稠密图 - O ( n 2 ) O(n^2) O(n2)思路概述时间复杂度分析AcWing 858. Prim算法求最小生成树CODE K r u s k a l Kruskal Kruskal 算法 - 稀疏图 - O ( m l o g m ) O(mlogm) O(mlogm)思路解析时间复杂度分析AcWing 859. Kr…

Raft 算法

Raft 算法 1 背景 当今的数据中心和应用程序在高度动态的环境中运行,为了应对高度动态的环境,它们通过额外的服务器进行横向扩展,并且根据需求进行扩展和收缩。同时,服务器和网络故障也很常见。 因此,系统必须在正常…

Flask使用线程异步执行耗时任务

1 问题说明 1.1 任务简述 在开发Flask应用中一定会遇到执行耗时任务,但是Flask是轻量级的同步框架,即在单个请求时服务会阻被塞,直到任务完成(注意:当前请求被阻塞不会影响到其他请求)。 解决异步问题有…

已解决AttributeError: module ‘gradio‘ has no attribute ‘outputs‘

问题描述 Traceback (most recent call last): File "/media/visionx/monica/project/ResShift/app.py", line 118, in <module> gr.outputs.File(label"Download the output")AttributeError: module gradio has no attribute outputs 解决办…

vscode 调试jlink

文章目录 软件使用说明1、启动GDB Server2、下载gdb3、vscode配置4、调试 软件 vscodejlink - (JLinkGDBServer.exe)gcc-arm-none-eabi-10-2020-q4-major (arm-none-eabi-gdb.exe) 使用说明 vscode通过TCP端口调用JLinkGDBServer通过jlink连接和操作设备&#xff0c;vscode不…

创建腾讯云存储桶---上传图片--使用cos-sdk完成上传

创建腾讯云存储桶—上传图片 注册腾讯云账号https://cloud.tencent.com/login 登录成功&#xff0c;选择右边的控制台 点击云产品&#xff0c;选择对象存储 创建存储桶 填写名称&#xff0c;选择公有读&#xff0c;私有写一直下一步&#xff0c;到创建 选择安全管理&#…

无人机助力电力设备螺母缺销智能检测识别,python基于YOLOv7开发构建电力设备螺母缺销小目标检测识别系统

传统作业场景下电力设备的运维和维护都是人工来完成的&#xff0c;随着现代技术科技手段的不断发展&#xff0c;基于无人机航拍飞行的自动智能化电力设备问题检测成为了一种可行的手段&#xff0c;本文的核心内容就是基于YOLOv7来开发构建电力设备螺母缺销检测识别系统&#xf…

智能优化算法应用:基于黄金正弦算法无线传感器网络(WSN)覆盖优化 - 附代码

智能优化算法应用&#xff1a;基于黄金正弦算法无线传感器网络(WSN)覆盖优化 - 附代码 文章目录 智能优化算法应用&#xff1a;基于黄金正弦算法无线传感器网络(WSN)覆盖优化 - 附代码1.无线传感网络节点模型2.覆盖数学模型及分析3.黄金正弦算法4.实验参数设定5.算法结果6.参考…

熬夜会秃头——beta冲刺Day3

这个作业属于哪个课程2301-计算机学院-软件工程社区-CSDN社区云这个作业要求在哪里团队作业—beta冲刺事后诸葛亮-CSDN社区这个作业的目标记录beta冲刺Day3团队名称熬夜会秃头团队置顶集合随笔链接熬夜会秃头——Beta冲刺置顶随笔-CSDN社区 目录 一、团队成员会议总结 1、成员…

【UE】UEC++获取屏幕颜色GetPixelFromCursorPosition()

目录 【UE】UE C 获取屏幕颜色GetPixelFromCursorPosition() 一、函数声明与定义 二、函数的调用 三、运行结果 【UE】UE C 获取屏幕颜色GetPixelFromCursorPosition() 一、函数声明与定义 创建一个蓝图方法库方法 GetPixelFromCursorPosition()&#xff0c;并给他指定UF…

使用 STM32 微控制器读取光电传感器数据的实现方法

本文介绍了如何使用 STM32 微控制器读取光电传感器数据的实现方法。通过配置和使用STM32的GPIO和ADC功能&#xff0c;可以实时读取光电传感器的模拟信号并进行数字化处理。本文将介绍硬件连接和配置&#xff0c;以及示例代码&#xff0c;帮助开发者完成光电传感器数据的读取。 …

算法工程师面试八股(搜广推方向)

文章目录 机器学习线性和逻辑回归模型逻辑回归二分类和多分类的损失函数二分类为什么用交叉熵损失而不用MSE损失&#xff1f;偏差与方差Layer Normalization 和 Batch NormalizationSVM数据不均衡特征选择排序模型树模型进行特征工程的原因GBDTLR和GBDTRF和GBDTXGBoost二阶泰勒…

MATLAB R2022b 安装

文章用于学习记录 文章目录 前言下载解压安装包总结 前言 下载解压安装包 MATLAB R2022b —— A9z3 装载(Mount) MATLAB_R2022b_Win64.iso 打开装载好的 DVD 驱动器并找到 setup&#xff0c;单击鼠标右键以管理员身份运行&#xff1a; 点击窗口右上角的 高级选项下拉框&#…

Docker 镜像及其命令

文章目录 镜像Docker 镜像加载原理联合文件系统bootfs和rootfs镜像分层 镜像分层的优势容器层常用命令 镜像 镜像是一种轻量级、可执行的独立软件包&#xff0c;它包含运行某个软件所需的所有内容&#xff0c;我们把应用程序和配置依赖打包好形成一个可交付的运行环境&#xff…

AirServer怎么用?如何AirServer进行手机投屏

什么是 AirServer&#xff1f; AirServer 是适用于 Mac 和 PC 的先进的屏幕镜像接收器。 它允许您接收 AirPlay 和 Google Cast 流&#xff0c;类似于 Apple TV 或 Chromecast 设备。AirServer 可以将一个简单的大屏幕或投影仪变成一个通用的屏幕镜像接收器 &#xff0c;是一款…

深入理解Java中的锁机制

引言 大家好&#xff0c;我是小黑。今天咱们来聊聊Java中的锁机制&#xff0c;这可是并发编程的核心。你知道吗&#xff0c;在并发编程的世界里&#xff0c;正确地使用锁就像是掌握了一把神奇的钥匙&#xff0c;它能帮咱们在多线程的混战中保持秩序&#xff0c;防止数据被乱改…

实用工具网站合集值得收藏![搜嗖工具箱]

最近一段时间有点忙&#xff0c;一直没有更新在此给大家说声抱歉哈&#xff0c;有些小伙伴儿私信说想要用到的工具&#xff0c;茶壶儿也会尽可能满足大家&#xff01;今天我们要分享的工具主要有以下几款&#xff0c;我们来一起看一下吧&#xff1f; 一帧秒创 https://aigc.y…

2015年五一杯数学建模C题生态文明建设评价问题解题全过程文档及程序

2015年五一杯数学建模 C题 生态文明建设评价问题 原题再现 随着我国经济的迅速发展&#xff0c;生态文明越来越重要&#xff0c;生态文明建设被提到了一个前所未有的高度。党的十八大报告明确提出要大力推进生态文明建设&#xff0c;报告指出“建设生态文明&#xff0c;是关系…