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

本文涉及的产品
RDS MySQL Serverless 基础系列,0.5-2RCU 50GB
云数据库 RDS MySQL,集群系列 2核4GB
推荐场景:
搭建个人博客
云数据库 RDS PostgreSQL,集群系列 2核4GB
简介: 使用rancher服务操作步骤

Rancher容器云管理平台

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

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

一、主机硬件说明

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

二、主机配置

四台主机都要做

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官网

image.png

image.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
image.png

第一次安装会生成密码,查看密码步骤如下:
image.png

image.png

上边下方红框里就是登录密码,复制到下边密码框即可
image.png

可以自定义密码

注意:密码至少需要12个字符
image.png

完成
image.png

5.2 Rancher导入Kubernetes集群

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

image.png

image.png

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

image.png

image.png

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

kubectl get ns

image.png

也可以在web界面看
image.png

大概5~7f分钟后,这里才变成Active
image.png

如果状态一直是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即可

image.png

可以看到所有主机都加进来了
image.png

查看集群,点击自己新建的集群
image.png

5.3 创建项目

点击左侧自己新建的集群
image.png

选择“项目-命名空间”,左上角“创建项目”

image.png

填写项目信息后,点击右下角“创建”
image.png

5.4 创建namespace命名空间

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

image.png

填写命名空间信息,点击右下角“创建”
image.png

可以在后台查到这个ns
image.png

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

5.5 创建Deployment

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

Deployment是pod控制器,点击左侧Deployments,然后点击“创建”
image.png

创建deployment时,切记记得选择命名空间,否则是在ns为default下创建了deployment
image.png

image.png

部署一个nginx,下边这个30080端口就是以后浏览器要访问的nginx端口
image.png

开启健康检查
image.png

创建好后,查看,发现已经运行起来
image.png

访问k8s的master服务器地址+30080端口:
image.png

5.6 使用Rancher创建k8s集群

找到左侧“集群管理”
image.png

点击右侧“创建”
image.png

选择“自定义”
image.png

其他一般默认即可,这里可以更改目录
image.png

image.png

点击下一步之后:
image.png

把下边的命令复制到master、worker等节点执行
image.png

结果:
image.png

六 使用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

选择“持久卷”,点击“创建”
image.png

配置PV参数

注意 PV存储空间一定要大于后边创建的PVC的空间(注意nfs挂载路径和上边的/etc/export/文件里的路径一致,都是/nfs/mysql)
image.png

创建后可以看到创建成功
image.png

6.3 创建PVC

image.png

填写相关内容
image.png

image.png

可以看到创建成功,并且自动绑定到pvc上了
image.png

6.4 创建“服务发现”

部署MySQL之前一定一定要先添加服务发现,否则就会报错
image.png

选择Headless
image.png

填写信息
image.png

填写选择器
image.png

可以看到创建成功
image.png

6.5 部署mysql服务

创建StatefulSets
image.png

填写信息
image.png

配置环境变量——密码
image.png

docker官网查看mysql环境变量 dockerhub官网
image.png

往下拉,找到环境变量
image.png

image.png

image.png

pod选择存储卷
image.png

填写NFS服务器信息(挂载路径 /nfs/mysql)
image.png

在容器里选择存储卷
image.png

填写挂载路径(这里的路径是/var/lib/mysql)
image.png

点击右下角“创建”后,发现对应pod已经运行了
image.png

上图红框里是pod名称,如果状态一直是containering时,说明大概率报错了,在k8s的master机器执行以下命令查看日志

kubectl describe pod     mysqlstateful-0 -n mytns

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

cat /var/log/messages | grep mount

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

image.png

相关实践学习
通过Ingress进行灰度发布
本场景您将运行一个简单的应用,部署一个新的应用用于新的发布,并通过Ingress能力实现灰度发布。
容器应用与集群管理
欢迎来到《容器应用与集群管理》课程,本课程是“云原生容器Clouder认证“系列中的第二阶段。课程将向您介绍与容器集群相关的概念和技术,这些概念和技术可以帮助您了解阿里云容器服务ACK/ACK Serverless的使用。同时,本课程也会向您介绍可以采取的工具、方法和可操作步骤,以帮助您了解如何基于容器服务ACK Serverless构建和管理企业级应用。 学习完本课程后,您将能够: 掌握容器集群、容器编排的基本概念 掌握Kubernetes的基础概念及核心思想 掌握阿里云容器服务ACK/ACK Serverless概念及使用方法 基于容器服务ACK Serverless搭建和管理企业级网站应用
相关文章
|
2月前
|
Kubernetes 持续交付 Docker
利用 Docker 和 Kubernetes 实现微服务部署
【10月更文挑战第2天】利用 Docker 和 Kubernetes 实现微服务部署
|
8天前
|
存储 Kubernetes 容器
K8S部署nexus
该配置文件定义了Nexus 3的Kubernetes部署,包括PersistentVolumeClaim、Deployment和服务。PVC请求20Gi存储,使用NFS存储类。Deployment配置了一个Nexus 3容器,内存限制为6G,CPU为1000m,并挂载数据卷。Service类型为NodePort,通过30520端口对外提供服务。所有资源位于`nexus`命名空间中。
|
2月前
|
Prometheus Kubernetes 监控
k8s部署针对外部服务器的prometheus服务
通过上述步骤,您不仅成功地在Kubernetes集群内部署了Prometheus,还实现了对集群外服务器的有效监控。理解并实施网络配置是关键,确保监控数据的准确无误传输。随着监控需求的增长,您还可以进一步探索Prometheus生态中的其他组件,如Alertmanager、Grafana等,以构建完整的监控与报警体系。
142 60
|
2月前
|
Prometheus Kubernetes 监控
k8s部署针对外部服务器的prometheus服务
通过上述步骤,您不仅成功地在Kubernetes集群内部署了Prometheus,还实现了对集群外服务器的有效监控。理解并实施网络配置是关键,确保监控数据的准确无误传输。随着监控需求的增长,您还可以进一步探索Prometheus生态中的其他组件,如Alertmanager、Grafana等,以构建完整的监控与报警体系。
271 62
|
1月前
|
Kubernetes Cloud Native 微服务
云原生入门与实践:Kubernetes的简易部署
云原生技术正改变着现代应用的开发和部署方式。本文将引导你了解云原生的基础概念,并重点介绍如何使用Kubernetes进行容器编排。我们将通过一个简易的示例来展示如何快速启动一个Kubernetes集群,并在其上运行一个简单的应用。无论你是云原生新手还是希望扩展现有知识,本文都将为你提供实用的信息和启发性的见解。
|
1月前
|
存储 Kubernetes 网络协议
k8s的无头服务
Headless Service 是一种特殊的 Kubernetes 服务,其 `spec:clusterIP` 设置为 `None`,不会分配 ClusterIP,通过 DNS 解析提供服务发现。与普通服务不同,Headless Service 不提供负载均衡功能,每个 Pod 都有唯一的 DNS 记录,直接映射到其 IP 地址,适用于有状态应用的场景,如与 StatefulSet 一起部署数据库。示例中通过创建 Nginx 的 StatefulSet 和 Headless Service,展示了如何直接访问单个 Pod 并进行内容修改。
53 3
|
1月前
|
存储 Kubernetes Devops
Kubernetes集群管理和服务部署实战
Kubernetes集群管理和服务部署实战
59 0
|
2月前
|
Kubernetes Cloud Native 流计算
Flink-12 Flink Java 3分钟上手 Kubernetes云原生下的Flink集群 Rancher Stateful Set yaml详细 扩容缩容部署 Docker容器编排
Flink-12 Flink Java 3分钟上手 Kubernetes云原生下的Flink集群 Rancher Stateful Set yaml详细 扩容缩容部署 Docker容器编排
93 3
|
2月前
|
负载均衡 Kubernetes 区块链
随机密码生成器+阿里k8s负载均衡型服务加证书方法+移动终端设计+ico生成器等
随机密码生成器+阿里k8s负载均衡型服务加证书方法+移动终端设计+ico生成器等
67 1
|
2月前
|
NoSQL 关系型数据库 Redis
高可用和性能:基于ACK部署Dify的最佳实践
本文介绍了基于阿里云容器服务ACK,部署高可用、可伸缩且具备高SLA的生产可用的Dify服务的详细解决方案。

热门文章

最新文章