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,说明部署成功

在这里插入图片描述

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

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

相关文章

Linux的基本指令(五)

目录 前言 tar指令(重要) 再次思考,为什么要打包和压缩呢? 实例:基于xshell进行压缩包在Windows与Linux之间的互传 实例:实现两个Linux系统之间的文件互传 bc指令 uname -r指令 重要的热键 关机与开机 扩展命令 shell及…

国际语音群呼系统的产品优势有哪些?为什么要使用国际语音群呼系统?

一、国际语音群呼系统的产品优势: 1.巨量群呼 支持大容量并发群呼,呼叫不受限制,充裕的线路保障造就百万级平台容量,可以短时间内同时拨打大量电话,让语音快速到达,大大提高发送效率; 2.自主…

Android12蓝牙框架

参考: https://evilpan.com/2021/07/11/android-bt/ https://source.android.com/docs/core/connect/bluetooth?hlzh-cn https://developer.android.com/guide/topics/connectivity/bluetooth?hlzh-cn https://developer.android.com/guide/components/intents-fi…

FL Studio Producer Edition21.0.3中文版安装详解(附下载链接)

fl studio 21中文版是Image-Line公司继20版本之后更新的水果音乐制作软件,很多用户不太理解,为什么新版本不叫fl studio 21或fl studio2024,非得直接跳到21.2版本,其实该版本是为了纪念该公司22周年,所以该版本也是推出…

使用gcloud SDK 管理和部署 Cloud run service

查看cloud run 上的service 列表: gcloud run services list > gcloud run services listSERVICE REGION URL LAST DEPLOYED BY LAST DEPL…

小米秒享3--非小米电脑

小米妙享中心是小米最新推出的一款功能,能够为用户们提供更加舒适便利的操作体验。简单的说可以让你的笔记本和你的小米手机联动,比如你在手机的文档,连接小米共享后,可以通过电脑进行操作。 对于非小米电脑想要体验终版秒享AIOT…

使用java批量生成Xshell session(*.xsh)文件

背景 工作中需要管理多套环境, 有时需要同时登陆多个节点, 且每个环境用户名密码都一样, 因此需要一个方案来解决动态的批量登录问题. XShell Xshell有session管理功能: 提供了包括记住登录主机、用户名、密码及登录时执行命令或脚本(js,py,vbs)的功能 session被存储在xsh文…

计算机组成学习-数据的表示和运算总结

1、进制与编码 1.1 进位计数法 常用的进位计数法有十进制、二进制、八进制、十六进制等。十六进制每个 数位可取0〜9、A、B、C、D、E、F中的任意一个,其中A、B、C、D、E、F分别表示 10〜15。 八进制数字通常以前缀 "0"(零)加上数…

GoLong的学习之路,进阶,RabbitMQ (消息队列)

快有一周没有写博客了。前面几天正在做项目。正好,项目中需要MQ(消息队列),这里我就补充一下我对mq的理解。其实在学习java中的时候,自己也仿照RabbitMQ自己实现了一个单机的mq,但是mq其中一个特点也就是&a…

基于ResNet18网络完成图像分类任务

目录 1 数据处理 1.1 数据集介绍 1.2 数据读取 1.3 构造Dataset类 2 模型构建 3 模型训练 4 模型评价 5 模型预测 6 什么是预训练模型和迁移学习 7 比较“使用预训练模型”和“不使用预训练模型”的效果。 总结 在本实践中,我们实践一个更通用的图像分类任务…

rust-flexi_logger

flexi_logger 是字节开源的rust日志库。目前有log4rs、env_log 等库,综合比较下来,还是flexi_logger简单容易上手,而且自定义很方便,以及在效率方面感觉也会高,下篇文章我们来测试下。 下面来看下怎么使用 关注 vx gol…

探索未来能源:可控核聚变的挑战与希望

探索未来能源:可控核聚变的挑战与希望 引言 随着人类社会的不断发展,对能源的需求也在持续增长。传统的化石燃料能源在燃烧过程中会产生大量的二氧化碳和其他温室气体,导致全球气候变暖,对环境产生了重大威胁。因此,寻找一种清洁、可持续、高效的能源成为了当务之急。在…

Redis hash表源码解析

整体数据结构:链式hash解决hash冲突、采用渐进式hash来完成扩容过程。 /** 哈希表节点*/ typedef struct dictEntry {// 键void *key;// 值union {void *val;uint64_t u64;int64_t s64;} v;// 指向下个哈希表节点,形成链表struct dictEntry *next;} dict…

ubuntu22.04离线手动安装openstack yoga和ceph quincy

目录 写在前面材料准备一. OpenStack部1. 创建虚拟网络和虚拟机2. 配置离线环境3. 环境准备3.1 配置网络3.2 配置主机名并配置解析3.3 时间调整3.4 安装openstack客户端3.5 安装部署MariaDB3.6 安装部署RabbitMQ控制节点操作3.7 安装部署Memcache控制节点操作 4. 部署配置keyst…

TwinCAT3一个PLC设备里多个程序工程之间通讯

目录 1、创建TwinCAT3工程,再分别创建两个PLC程序工程 2、PLC1工程中添加如下代码,然后编译重新生成PLC1工程 3、PLC2工程中添加如下代码,然后编译重新生成PLC2工程 4、变量关联 5、一个PLC运行多个PLC工程设置 7、工程下载链接 1、创建…

配置中心--Spring Cloud Config

目录 概述 环境说明 步骤 创建远端git仓库 准备配置文件 配置中心--服务端 配置中心--客户端 配置中心的高可用 配置中心--服务端 配置中心--客户端 消息总线刷新配置 配置中心--服务端 配置中心--客户端 概述 因为微服务架构有很多个服务,手动一个一…

wireshark自定义协议插件开发

目录 脚本代码 报文显示 脚本代码 local NAME "test" test_proto Proto("test", "test Protocol") task_id ProtoField.uint16("test.task_id", "test id", base.DEC) cn ProtoField.uint8("test.cn", &qu…

【Java 基础】15 注解

文章目录 1.什么是注解2.元注解1)定义2)分类 3.内置注解4.自定义注解5.注解的基本语法6.验证注解是否生效7.注解的使用场景8.注解的注意事项结语 1.什么是注解 注解(Annotation)可以理解成一种特殊的 “注释” 注解定义时以 符号…

多线程06 单例模式,阻塞队列以及模拟实现

前言 上篇文章我们讲了wait和notify两个方法的使用.至此,多线程的一些基本操作就已经结束了,今天我们来谈谈多线程的一些简单应用场景. 单例模式 单例模式,顾名思义,只有一个实例的模式,我们有两种实现方式,分别是懒汉式和饿汉式,我们来分别给出代码. 饿汉式(此处的饿表示创建实…

详解Spring中的Aop编程原理JDK动态代理和CGLIB动态代理

😉😉 学习交流群: ✅✅1:这是孙哥suns给大家的福利! ✨✨2:我们免费分享Netty、Dubbo、k8s、Mybatis、Spring...应用和源码级别的视频资料 🥭🥭3:QQ群:583783…