OpenEuler24.03 LTS-SP1 + Rancher2.10.1+Jenkins+GitLab安装
机器规则
注:机器至少是2核2G的配置
机器可以是虚拟机、也可以是四台物理机器。我使用的是四台OpenEuler24.03 LTS-SP1的虚拟机!
hostname | ip地址 | 用途 | 配置 |
---|---|---|---|
k8s-master01 | 192.168.28.161 | master节点 | 2核4G |
k8s-worker01 | 192.168.28.171 | worker01节点 | 2核8G |
k8s-worker02 | 192.168.28.172 | worker02节点 | 2核8G |
k8s-ranncher | 192.168.28.181 | rancher节点 | 2核8G |
搭建教程
除特别说明外,以下命令需在四台机器中都执行,建议找一个可以同时在多台机器中执行命令的工具(采用xshell工具)
1. 配置教程
配置机器的host文件
#添加如下内容
192.168.28.161 k8s-master01
192.168.28.171 k8s-worker01
192.168.28.172 k8s-worker02
192.168.28.181 k8s-ranncher
执行ping k8s-master01 看配置是否成功
修改k8s-master01的主机名
hostnamectl set-hostname k8s-master01
修改k8s-worker01的主机名
hostnamectl set-hostname k8s-worker01
修改k8s-worker02的主机名
hostnamectl set-hostname k8s-worker02
修改k8s-ranncher的主机名
hostnamectl set-hostname k8s-ranncher
2. 禁用防火墙
#docker会产生很多端口规则,为了引起不必要的麻烦,自己关闭掉(反正这个环境只是学习使用的,生成环境不要这么做)
systemctl stop firewalld
systemctl disable firewalld
systemctl stop iptables
systemctl disable iptables
3. 禁用linux系统的安全服务
selinux是linux下的一个安全服务,安装软件会产生各种奇葩问题,直接禁用掉
vi /etc/selinux/config
#设置如下内容
SELINUX=disabled
4.禁用swap分区
作用是在物理内存使用完之后虚拟磁盘空间作为内存使用,开启此会产生性能影响,在搭建k8s集群的时候如果开启的话还需要特别说明
vi /etc/fstab
#注释最后一行(/dev/mapper/centos-swap swap
5.修改linux内核参数
#加载网桥过滤模块
modprobe br_netfilter
echo “br_netfilter” > /etc/modules-load.d/br_netfilter.conf
查看网桥过滤模块是否加载成功
lsmod|grep br_netfilter
#修改linux内核参数,添加网桥过滤和地址转发功能
vi /etc/sysctl.d/kubernetes.conf
# 添加如下配置
net.bridge.bridge-nf-call-ip6tables = 1
net.bridge.bridge-nf-call-iptables = 1
net.ipv4.ip_forward = 1
# 重新加载配置
sysctl --system
6.配置ipvs功能
#安装ipset、ipvsadm
yum -y install ipset ipvsadm
#添加需要加载的模块,写入到脚本文件中
vi /etc/sysconfig/modules/ipvs.modules
#内容如下
#!/bin/bash
modprobe -- ip_vs
modprobe -- ip_vs_rr
modprobe -- ip_vs_wrr
modprobe -- ip_vs_sh
modprobe -- nf_conntrack_ipv4
#为脚本文件添加执行权限
chmod +x /etc/sysconfig/modules/ipvs.modules
#执行脚本文件
/bin/bash /etc/sysconfig/modules/ipvs.modules
#查询对应模块是否加载成功
lsmod |grep -e ip_vs -e nf_conntrack_ipv4
7.安装docker
1)配置docker源(用于安装docker)
- 1.安装相关依赖
yum install -y yum-utils device-mapper-persistent-data lvm2
- 2.下载官方的docker yum源文件
yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
- 3.替换yum源地址
sed -i 's+download.docker.com+mirrors.tuna.tsinghua.edu.cn/docker-ce+' /etc/yum.repos.d/docker-ce.repo
- 4.并修改/etc/yum.repos.d/docker-ce.repo/etc/yum.repos.d/docker-ce.repo将其中$releasever替换为9
vim /etc/yum.repos.d/docker-ce.repo/etc/yum.repos.d/docker-ce.repo
输入:s/$releasever/9/g,保存退出。
vim /etc/yum.repos.d/docker-ce.repo/etc/yum.repos.d/docker-ce.repo
[docker-ce-stable]
name=Docker CE Stable - $basearch
baseurl=https://mirrors.aliyun.com/docker-ce/linux/centos/9/$basearch/stable
enabled=1
gpgcheck=1
gpgkey=https://mirrors.aliyun.com/docker-ce/linux/centos/gpg
[docker-ce-stable-debuginfo]
name=Docker CE Stable - Debuginfo $basearch
baseurl=https://mirrors.aliyun.com/docker-ce/linux/centos/9/debug-$basearch/stable
enabled=0
gpgcheck=1
gpgkey=https://mirrors.aliyun.com/docker-ce/linux/centos/gpg
[docker-ce-stable-source]
name=Docker CE Stable - Sources
baseurl=https://mirrors.aliyun.com/docker-ce/linux/centos/9/source/stable
enabled=0
gpgcheck=1
gpgkey=https://mirrors.aliyun.com/docker-ce/linux/centos/gpg
[docker-ce-test]
name=Docker CE Test - $basearch
baseurl=https://mirrors.aliyun.com/docker-ce/linux/centos/9/$basearch/test
enabled=0
gpgcheck=1
gpgkey=https://mirrors.aliyun.com/docker-ce/linux/centos/gpg
[docker-ce-test-debuginfo]
name=Docker CE Test - Debuginfo $basearch
baseurl=https://mirrors.aliyun.com/docker-ce/linux/centos/9/debug-$basearch/test
enabled=0
gpgcheck=1
gpgkey=https://mirrors.aliyun.com/docker-ce/linux/centos/gpg
[docker-ce-test-source]
name=Docker CE Test - Sources
baseurl=https://mirrors.aliyun.com/docker-ce/linux/centos/9/source/test
enabled=0
gpgcheck=1
gpgkey=https://mirrors.aliyun.com/docker-ce/linux/centos/gpg
[docker-ce-nightly]
name=Docker CE Nightly - $basearch
baseurl=https://mirrors.aliyun.com/docker-ce/linux/centos/9/$basearch/nightly
enabled=0
gpgcheck=1
gpgkey=https://mirrors.aliyun.com/docker-ce/linux/centos/gpg
[docker-ce-nightly-debuginfo]
name=Docker CE Nightly - Debuginfo $basearch
baseurl=https://mirrors.aliyun.com/docker-ce/linux/centos/9/debug-$basearch/nightly
enabled=0
gpgcheck=1
gpgkey=https://mirrors.aliyun.com/docker-ce/linux/centos/gpg
[docker-ce-nightly-source]
name=Docker CE Nightly - Sources
baseurl=https://mirrors.aliyun.com/docker-ce/linux/centos/9/source/nightly
enabled=0
gpgcheck=1
gpgkey=https://mirrors.aliyun.com/docker-ce/linux/centos/gpg
- 5.安装docker-ce
yum install -y docker-ce
- 6.启动docker
systemctl enable --now docker
#检查
docker version
修改docker境像
sudo tee /etc/docker/daemon.json <<EOF
{
"registry-mirrors": [
"https://docker.1ms.run",
"https://hub.rat.dev",
"https://docker.1panel.live"
]
}
EOF
sudo systemctl daemon-reload
sudo systemctl restart docker
2)自动补全
sudo dnf install -y bash-completion
部署devops应用
1.部署Rancher2.10.1
1)开放80和443端口
firewall-cmd --zone=public --add-port=80/tcp --permanent
firewall-cmd --zone=public --add-port=443/tcp --permanent
firewall-cmd --reload
2)创建挂载目录
mkdir -p /opt/data/rancher-home/rancher
mkdir -p /opt/data/rancher-home/log
mkdir -p /opt/data/rancher-home/cni
mkdir -p /opt/data/rancher-home/kubelet
3)启动容器
#采用阿里云
docker run -d --restart=unless-stopped \
-p 80:80 -p 443:443 --privileged \
-v /opt/data/rancher-home/rancher:/var/lib/rancher \
-v /opt/data/rancher-home/rancher/log:/var/log \
-v /opt/data/rancher-home/rancher/cni:/var/lib/cni \
-v /opt/data/rancher-home/rancher/kubelet:/var/lib/kubelet \
-e CATTLE_SYSTEM_DEFAULT_REGISTRY=registry.cn-hangzhou.aliyuncs.com \
--name rancher -e JAVA_OPTS="-Xmx1024m" registry.cn-hangzhou.aliyuncs.com/rancher/rancher:v2.11.0
#采用默认
docker run -d --restart=unless-stopped \
-p 80:80 -p 443:443 --privileged \
-v /opt/data/rancher-home/rancher:/var/lib/rancher \
-v /opt/data/rancher-home/rancher/log:/var/log \
-v /opt/data/rancher-home/rancher/cni:/var/lib/cni \
-v /opt/data/rancher-home/rancher/kubelet:/var/lib/kubelet \
--name rancher -e JAVA_OPTS="-Xmx1024m" rancher/rancher:laster
参数说明:
-d 后台运行
–name 容器名称
-p 端口映射: 主机:容器内部
-v 数据卷:主机:容器内部
–restart 自启动选项: unless-stopped-表示容器退出时总是重启,但是不考虑docker守护进程运行时就已经停止的容器
– privileged 使用privileged标志时,容器内的进程将具有以下能力:1、拥有访问主机上所有设备的权限。
2、可以使用主机的所有内核功能。
3、可以使用主机上所有的文件系统
2.安装jenkins
在rancher的部署页中做如下操作
- 1.输入名称 jenkins
- 2.输入镜像名称 jenkins/jenkins:alpine
- 3.添加端口映射 30000(主机):8080(容器)和30001(主机):30001(容器)
- 4.添加一个路径映射卷,卷名为jenkins-home
主机路径的话就是填入先前创建的/water/runfile/docker_volume/jenkins-home,选择为现有目录并映射到容器路径/var/jenkins_home上档路径,
选择为现有目录并映射到容器路径/var/jenkins_home目录路径 - 4.0.1后面maven的配置文件
- 4.1因为要在jenkins下执行docker命令,所以再挂载两个宿言主机的路径/var/run/docker.sock:/var/run/docker.sock和/usr/bin/docker:/usr/bin/docker
- 4.2因为jennkins里要执行docker命令,所以将用户设置为uid为0的用户启动。点击container-0,安全性上下文,用户uid填写0
- 5.点击启动按钮
以上部署其实对应docker容器中就如下面的命令:
docker run -d --restart unless-stopped --name jenkins \
-p 30000:8080 -p 30001:30001 \
-v /water/runfile/docker_volume/jenkins-home:/var/jenkins_home \
jenkins/jenkins:alpine
刷新等待,直到等到服务状态为Active后说明部署成功
3.安装gitlab
1)开放端口
#开放服务端端口
firewall-cmd --zone=public --add-port=9980/tcp --permanent
firewall-cmd --zone=public --add-port=9922/tcp --permanent
#重启防火墙
firewall-cmd --reload
2)创建挂载目录
mkdir -p /opt/soft/docker/gitlab/etc
mkdir -p /opt/soft/docker/gitlab/log
mkdir -p /opt/soft/docker/gitlab/opt
3)启动容器
docker run -itd \
-p 9980:80 \
-p 9922:22 \
-v /opt/soft/docker/gitlab/etc:/etc/gitlab \
-v /opt/soft/docker/gitlab/log:/var/log/gitlab \
-v /opt/soft/docker/gitlab/opt:/var/opt/gitlab \
--restart always \
--privileged=true \
--name gitlab gitlab/gitlab-ce
参数说明:
-i 以交互模式运行容器,通常与 -t 同时使用命令解释
-t 为容器重新分配一个伪输入终端,通常与 -i 同时使用
-d 后台运行容器,并返回容器ID
-p 9980:80 将容器内80端口映射至宿主机9980端口,这是访问gitlab的端口
-p 9922:22 将容器内22端口映射至宿主机9922端口,这是访问ssh的端口
-v /opt/soft/docker/gitlab/etc:/etc/gitlab 将容器/etc/gitlab目录挂载到宿主机/opt/soft/docker/gitlab/etc目录下,若宿主机内此目录不存在将会自动创建,其他两个挂载同这个一样
–restart alway 容器自启动
–privileged=true 让容器获取宿主机root权限
–name gitlab 设置容器名称为gitlab
gitlab/gitlab-ce 镜像的名称,这里也可以写镜像ID