rancher2.3.6
构建 kubernets
集群作者:lizhonglin
github: https://github.com/Leezhonglin/
blog: https://leezhonglin.github.io
「centosos7」
系统的机器.10.0.0.110 rancher-1 #1 为了下面文章好用,进行的编号.
10.0.0.111 master-1 #2
10.0.0.112 node-1 #3
docker
安装源1).设置每台机器的docker
源.
yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo
2).在每台机器上面安装docker
.
安装 Docker Engine-Community
,下面的命令默认安装最新版本的docker
.
yum install -y docker-ce docker-ce-cli containerd.io
安装好docker之后可以使用查看docker版本。
docker version
实例:
[root@k8s-master-1 ~]# docker version
Client: Docker Engine - Community
Version: 19.03.8
API version: 1.40
Go version: go1.12.17
Git commit: afacb8b
Built: Wed Mar 11 01:27:04 2020
OS/Arch: linux/amd64
Experimental: false
Server: Docker Engine - Community
Engine:
Version: 19.03.8
API version: 1.40 (minimum version 1.12)
Go version: go1.12.17
Git commit: afacb8b
Built: Wed Mar 11 01:25:42 2020
OS/Arch: linux/amd64
Experimental: false
containerd:
Version: 1.2.13
GitCommit: 7ad184331fa3e55e52b890ea95e65ba581ae3429
runc:
Version: 1.0.0-rc10
GitCommit: dc9208a3303feef5b3839f4323d9beb36df0a9dd
docker-init:
Version: 0.18.0
GitCommit: fec3683
[root@k8s-master-1 ~]#
hosts
1).修改主机名称.
使用vim
打开/etc/hostname
文件.编辑成自己需要的主机名称修改保存即可.
2).修改每台机器的hosts
文件 .
使用vim
打开/etc/hosts
文件.编辑文件写下如下内容:
10.0.0.110 k8s-master-1
10.0.0.111 k8s-node-1
10.0.0.112 k8s-node-2
1). 如果是实验环境可以关闭防火墙.
# 关闭防火墙开机启动
systemctl disable firewalld
# 停止防火墙
systemctl stop firewalld
2).如果是生产环境建议开启防火墙,对项目需要使用的所有端口开放即可。
开放端口的命令:
firewall-cmd --zone=public --add-port=80/tcp --permanent
--zone
:作用域
--add-port=80/tcp
:添加端口,格式为:端口/通讯协议
--permanent
:永久生效,没有此参数重启后失效
重启防火墙:
firewall-cmd --reload
5.修改每台机器的docker
仓库地址配置.
使用vim
打开/etc/docker/daemon.json
文件.如果没有这个文件就新建一个.
{
"registry-mirrors":[
"https://registry.docker-cn.com",
"https://kfwkfulq.mirror.aliyuncs.com",
"https://2lqq34jg.mirror.aliyuncs.com",
"https://pee6w651.mirror.aliyuncs.com",
"http://hub-mirror.c.163.com"
],
"insecure-registries":["10.0.0.110:5000"],
"exec-opts":["native.cgroupdriver=systemd"]
}
在
registry-mirrors
中可以添加镜像源地址.
insecure-registries
:是自己的私有仓库地址.这个是自己提前确定好的地址.
6.安装好后启动docker
.
# 设置为开机启动
systemctl enable docker
# 启动docker
systemctl satrt docker
# 重启docker
systemctl restart docker
7.拉取镜像
docker pull registry:latest
8.创建本地镜像仓库
1).首先在1号机器上面创建一个存放镜像的文件夹,来用做本地镜像仓库。
mkdir /usr/local/docker_registry
2).启动本地镜像仓库
docker run -d -p 5000:5000 --name=local_registry --restart=always -- privileged=true -v /usr/local/docker_registry:/var/lib/registry registry
-p 5000:5000
:端口
--name=local_registry
:运行的容器名称
--restart=always
:自动重启 :centos7
中的安全模块selinux
把权限禁止了,加上这行是给容器增加执行权限.
-v /usr/local/docker_registry:/var/lib/registry
: 把的/usr/local/docker_registry
:目录挂载到registry
容器的/var/lib/registry
目录下, 假如有删除容器操作,我们的镜像也不会被删除
registry
: 镜像名称
docker
常用基本操作:
# 查看本地镜像:
docker images
# 从远程镜像仓库下拉镜像源
docker pull 镜像源名称
#镜像搜索
docker search nginx(镜像源名称)
# 运行镜像
docker run -it(以交互的方式运行) python:3.6.4(镜像名称和版本号) python(在镜像内执行的命令)
# 停止容器
docker stop 容器名称
# 重启容器
docker restart 容器名称
# 启动容器
docker start 容器名称
# 查看运行的容器
docker ps -a
# 删除容器
docker rm 容器名称
# 在容器中执行命令
docker exec 命令
# 删除镜像
docker rmi 镜像名称
# 提交镜像
docker commit -m="xxx" -a="xxx" e218edb10161 centos7/centos7.3.8:v1
-m: 提交的描述信息
-a: 指定镜像作者
e218edb10161:容器 ID
centos7/centos7.3.8:v1: 指定要创建的目标镜像名和tag
# 杀死所有正在运行的容器
docker kill $(docker ps -a -q)
# 删除所有已经停止的容器
docker rm $(docker ps -a -q)
# 删除所有未打 dangling 标签的镜
docker rmi $(docker images -q -f dangling=true)
# 删除所有镜像
docker rmi $(docker images -q)
# 强制删除 无法删除的镜像
docker rmi -f <IMAGE_ID>
docker rmi -f $(docker images -q)
# 杀死所有正在运行的容器.
alias dockerkill='docker kill $(docker ps -a -q)'
# 删除所有已经停止的容器.
alias dockercleanc='docker rm $(docker ps -a -q)'
# 删除所有未打标签的镜像.
alias dockercleani='docker rmi $(docker images -q -f dangling=true)'
# 删除所有已经停止的容器和未打标签的镜像.
alias dockerclean='dockercleanc || true && dockercleani'
rancher
1).拉取rancher
镜像 我这里的版本的2.3.6
docker pull rancher/rancher:stable
2).启动rancher
.
docker run -d --restart=unless-stopped -p 80:80 -p 443:443 -v /docker_volume/rancher_home/rancher:/var/lib/rancher -v /docker_volume/rancher_home/auditlog:/var/log/auditlog --name rancher rancher/rancher:stable
3).查看rancher是否启动.
docker ps -a
示例:
[root@k8s-master-1 ~]# docker ps -a
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
a0e13ed8a7d3 rancher/rancher:stable "entrypoint.sh" 47 hours ago Up About an hour 0.0.0.0:80->80/tcp, 0.0.0.0:443->443/tcp rancher
9181c2c1cdb0 registry "/entrypoint.sh /etc…" 2 days ago Up About an hour 0.0.0.0:5000->5000/tcp local_registry
[root@k8s-master-1 ~]#
状态是Up
.说明就启动成功了.
就可以通过浏览器访问了
https://10.0.0.110
会提示你设置密码。我这里都使用的是admin
.
[这步可以不做,也可以提前做好,如果不拉取的话rancher安装的时候也会自动拉取相关镜像的,如果拉取了安装会快一些.]然后分别在2,3号机器上面拉取rancher
相关镜像.如下图
4).使用rancher添加集群
根据自己的实际情况选择和填写相关信息.
点击下一步按照节点来购选:
master节点
node节点:
分别对应不同的节点拷贝不通的命令取对于的节点执行。执行后如果没有拉取上面的镜像就需要等待一段时间让集群启动起来。如果已经拉取了上面的镜像,应该很快就能够启动起来。集群启动成功后如下图:
查看
如果是下图这样的话:
这个样rancher添加集群就已经启动成功.
1).安装过程中遇到了问题一,三个服务器时间不同步的问题。
[etcd] Failed to bring up Etcd Plane: [etcd] Etcd Cluster is not healthy
需要在每台服务器上面安装一个服务器时间同步工具
yum install ntp ntpdate -y
选择一台服务器作为时间同步服务器,我这里选择的是10.0.0.110
使用vim
打开/etc/ntp.conf
文件
添加:
restrict 10.0.0.0 mask 255.255.255.0 nomodify notrap
server ntp3.aliyun.com iburst
如下图:
其他服务器上面添加:
server 10.0.0.110 prefer
修改完成后,分别在每台服务器上面执行:
systemctl restart ntpd
systemctl disable chronyd.service
chkconfig --level 345 ntpd on
再在非 10.0.0.110
的其他服务上面执行
ntpq -p
会看见如下所示的内容,说明成功了.
[root@k8s-node-1 ~]# ntpq -p
remote refid st t when poll reach delay offset jitter
==============================================================================
*k8s-master-1 203.107.6.88 3 u 3 512 377 0.555 -1.802 2.876
[root@k8s-node-1 ~]#
到此为止。在重新按照[安装rancher]
的步骤重新安装就可以安装成功了。