虚拟化运维--管理平台--Rancher2.x(十五)

一、节点分配

文档地址:https://www.rancher.cn/docs/rancher/v2.x/cn/overview/architecture/

  1. 服务器节点规划
主机名 操作系统 IP地址
master Centos 7.4-x86_64 192.168.247.130
node1 Centos 7.4-x86_64 192.168.247.131
node2 Centos 7.4-x86_64 192.168.247.132
  1. 主机名修改
[root@localhost ~]# vi /etc/hosts

192.168.247.130 master
192.168.247.131 node1
192.168.247.132 node2

  1. Kernel性能调优
[root@master ~]# cat >>/etc/sysctl.conf<
  1. 关闭防火墙(所有节点)
[root@master ~]# systemctl stop firewalld.service 
[root@master ~]#  systemctl disable firewalld.service

  1. 添加镜像
[root@master ~]# vi /etc/docker/daemon.json
# 内容
{
    "registry-mirrors": ["https://7bezldxe.mirror.aliyuncs.com"]
}
# 重载配置,重启docker

  1. 安装和配置kubectl
      kubectl是一个CLI命令行工具,用于运行Kubernetes集群的命令。Rancher 2.x中的许多维护和管理都需要它。
# 下载base,epel
[root@manager ~]# curl -o /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-7.repo
  % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current
                                 Dload  Upload   Total   Spent    Left  Speed
100  2523  100  2523    0     0   2773      0 --:--:-- --:--:-- --:--:--  2772

[root@manager ~]#  wget -O /etc/yum.repos.d/epel.repo http://mirrors.aliyun.com/repo/epel-7.repo

[root@manager ~]#  cat < /etc/yum.repos.d/kubernetes.repo
[kubernetes]
name=Kubernetes
baseurl=https://mirrors.aliyun.com/kubernetes/yum/repos/kubernetes-el7-x86_64/
enabled=1
gpgcheck=1
repo_gpgcheck=1
gpgkey=https://mirrors.aliyun.com/kubernetes/yum/doc/yum-key.gpg https://mirrors.aliyun.com/kubernetes/yum/doc/rpm-package-key.gpg
EOF

# 安装Kubernetes
[root@master ~]# yum install -y kubectl

# 同步时间
[root@master ~]# yum install ntp ntpdate -y
# 同步阿里云
[root@master ~]# ntpdate ntp1.aliyun.com

[root@master ~]# yum install -y ntp 
[root@master ~]# systemctl enable ntpd && systemctl start ntpd
[root@master ~]# timedatectl set-timezone Asia/Shanghai
[root@master ~]# timedatectl set-ntp yes
[root@master ~]# ntpq -p

二、安装Rancher2.x

  1. 安装(请安装稳定版)
# 创建目录
[root@master ~]# mkdir -p /opt/rancher
# 安装最新版
[root@localhost ~]# sudo docker run -d -v /opt/rancher:/var/lib/rancher --restart=unless-stopped -p 80:80 -p 443:443 rancher/rancher:latest

# 安装稳定版
[root@master ~]#  sudo docker run -d --restart=unless-stopped -v /opt/rancher:/var/lib/rancher/ -p 80:80 -p 443:443 rancher/rancher:stable

# 使用默认自签名证书(使用此安装方式)
[root@master ~]# docker run -d --restart=unless-stopped -p 80:80 -p 443:443 -v  /opt/rancher:/var/lib/rancher/ -v /root/var/log/auditlog:/var/log/auditlog -e AUDIT_LEVEL=3 rancher/rancher:stable

#  证书安装(需生成证书)
[root@master ~]# docker run -d --restart=unless-stopped   -p 80:80 -p 443:443   -v /opt/rancher:/var/lib/rancher   -v /var/log/rancher/auditlog:/var/log/auditlog   -v /home/anrj/ssl/cert.pem:/etc/rancher/ssl/cert.pem   -v /home/anrj/ssl/key.pem:/etc/rancher/ssl/key.pem   -e AUDIT_LEVEL=3   --name rancher_stable   rancher/rancher:stable --no-cacerts

安装后下载镜像为:rancher/rancher stable

  1. Web访问
    地址:https://192.168.247.130/


    虚拟化运维--管理平台--Rancher2.x(十五)_第1张图片
    登录
虚拟化运维--管理平台--Rancher2.x(十五)_第2张图片
保存URL

注:因为Rancher是自动使用的自签名证书,在第一次登录会提示安全授信问题,信任即可然后设置rancher server的url,这里就直接使用了虚拟机的内网ip了。

默认用户为:admin 密码: admin

  1. 设置语言(右下角)


    虚拟化运维--管理平台--Rancher2.x(十五)_第3张图片
    设置语言

二、创建集群

  1. 创建集群


    虚拟化运维--管理平台--Rancher2.x(十五)_第4张图片
    创建集群

    虚拟化运维--管理平台--Rancher2.x(十五)_第5张图片
    自定义集群

    添加名称,其它默认,点击下一步:


    虚拟化运维--管理平台--Rancher2.x(十五)_第6张图片
    添加名称

角色选择(一台主机可以对应多个角色,每个集群至少需要一个Etcd角色、一个Control角色、一个Worker角色):


虚拟化运维--管理平台--Rancher2.x(十五)_第7张图片
角色选择

注意:至少保证主机集群里有一个主机角色有etcd和Control2种。所以最好是一台主机的角色是etcd 和 Control,其他主机是work节点。

  1. 添加主机到集群中
    注:如果是多台主机,根据角色的不同,需要复制多次命令。
192.168.247.130--etcd
192.168.247.131--Control
192.168.247.132--work
虚拟化运维--管理平台--Rancher2.x(十五)_第8张图片
192.168.247.132--work
#  192.168.247.132--work
[root@node2 ~]# sudo docker run -d --privileged --restart=unless-stopped --net=host -v /etc/kubernetes:/etc/kubernetes -v /var/run:/var/run rancher/rancher-agent:v2.2.9 --server https://192.168.247.130 --token f8lvqwhcnzjdm4zrx7xmsw9jqs5zfxz4s46z8l7cghwfvckf9pj6fg --ca-checksum 83926781a69162022869e3b4b80d6b20c905bc2509ea685961bf7604ab6c4220 --worker
Unable to find image 'rancher/rancher-agent:v2.2.9' locally
v2.2.9: Pulling from rancher/rancher-agent
5667fdb72017: Pull complete 
d83811f270d5: Pull complete 
ee671aafb583: Pull complete 
7fc152dfb3a6: Pull complete 
0606171659a5: Pull complete 
91bb3d25889d: Pull complete 
fb492ec03242: Pull complete 
48b877ece6ea: Pull complete 
915307ab9059: Pull complete 
0b10a4dd7756: Pull complete 
Digest: sha256:268f8e30b4d26fc4dbe014ec5ac2c34b80842f8450bdc496ae52757e87c64fce
Status: Downloaded newer image for rancher/rancher-agent:v2.2.9
1365663d6cab948ec9f2962e5caf4ce919fae1fe436f947efceaccc225940641

# 下载镜像为:
[root@node2 ~]# docker images
REPOSITORY              TAG                 IMAGE ID            CREATED             SIZE
rancher/rancher-agent   v2.2.9              a1bf38ea4f5e        10 days ago         289MB

Universal Control Plane (UCP),基于 Web 的统一集群和应用管理解决方案。


虚拟化运维--管理平台--Rancher2.x(十五)_第9张图片
添加Control
# 192.168.247.131--controlplane
[root@node1 ~]# sudo docker run -d --privileged --restart=unless-stopped --net=host -v /etc/kubernetes:/etc/kubernetes -v /var/run:/var/run rancher/rancher-agent:v2.2.9 --server https://192.168.247.130 --token f8lvqwhcnzjdm4zrx7xmsw9jqs5zfxz4s46z8l7cghwfvckf9pj6fg --ca-checksum 83926781a69162022869e3b4b80d6b20c905bc2509ea685961bf7604ab6c4220 --controlplane
Unable to find image 'rancher/rancher-agent:v2.2.9' locally
v2.2.9: Pulling from rancher/rancher-agent
5667fdb72017: Pull complete 
d83811f270d5: Pull complete 
ee671aafb583: Pull complete 
7fc152dfb3a6: Pull complete 
0606171659a5: Pull complete 
91bb3d25889d: Pull complete 
fb492ec03242: Pull complete 
48b877ece6ea: Pull complete 
915307ab9059: Pull complete 
0b10a4dd7756: Pull complete 
Digest: sha256:268f8e30b4d26fc4dbe014ec5ac2c34b80842f8450bdc496ae52757e87c64fce
Status: Downloaded newer image for rancher/rancher-agent:v2.2.9
f331528b9a5d07ec876175776dde397868861fbf8b5b47325af5fae9c508506a
# 下载镜像为
[root@node1 ~]# docker images
REPOSITORY              TAG                 IMAGE ID            CREATED             SIZE
rancher/rancher-agent   v2.2.9              a1bf38ea4f5e        10 days ago         289MB

虚拟化运维--管理平台--Rancher2.x(十五)_第10张图片
添加
# 192.168.247.130--Etcd
[root@master ~]# sudo docker run -d --privileged --restart=unless-stopped --net=host -v /etc/kubernetes:/etc/kubernetes -v /var/run:/var/run rancher/rancher-agent:v2.2.9 --server https://192.168.247.130 --token f8lvqwhcnzjdm4zrx7xmsw9jqs5zfxz4s46z8l7cghwfvckf9pj6fg --ca-checksum 83926781a69162022869e3b4b80d6b20c905bc2509ea685961bf7604ab6c4220 --etcd
Unable to find image 'rancher/rancher-agent:v2.2.9' locally
v2.2.9: Pulling from rancher/rancher-agent
5667fdb72017: Already exists 
d83811f270d5: Already exists 
ee671aafb583: Already exists 
7fc152dfb3a6: Already exists 
0606171659a5: Pull complete 
91bb3d25889d: Pull complete 
fb492ec03242: Pull complete 
48b877ece6ea: Pull complete 
915307ab9059: Pull complete 
0b10a4dd7756: Pull complete 
Digest: sha256:268f8e30b4d26fc4dbe014ec5ac2c34b80842f8450bdc496ae52757e87c64fce
Status: Downloaded newer image for rancher/rancher-agent:v2.2.9
57e37fc9e50625f4cd004f7e735ffb1450209e3c0088641082c5777fe07c2774

# 下载镜为
[root@master ~]# docker images
rancher/rke-tools       v0.1.50             87d2dd9a046a        5 weeks ago         132MB
rancher/coreos-etcd     v3.3.10-rancher1    643c21638c1c        12 months ago       39.5MB
rrancher/hyperkube       v1.15.5-rancher1    fc2949858e47        11 days ago         1.15GB

虚拟化运维--管理平台--Rancher2.x(十五)_第11张图片
全部注册成功

此时我们的集群处于等待注册的状态,点击主机下的数字可以查看主机信息:

虚拟化运维--管理平台--Rancher2.x(十五)_第12张图片
进行注册
虚拟化运维--管理平台--Rancher2.x(十五)_第13张图片
等待注册
虚拟化运维--管理平台--Rancher2.x(十五)_第14张图片
激活成功
虚拟化运维--管理平台--Rancher2.x(十五)_第15张图片
主机信息
虚拟化运维--管理平台--Rancher2.x(十五)_第16张图片
主机查看
  1. 查看集群信息
# master主机
[root@master ~]# docker ps
CONTAINER ID        IMAGE                          COMMAND                  CREATED             STATUS              PORTS                                      NAMES
2f7c1712081e        rancher/rancher-agent:v2.3.1   "run.sh --server htt…"   3 minutes ago       Up 3 minutes                                                   awesome_dhawan
053a460a80da        rancher/rancher-agent:v2.3.1   "run.sh -- share-roo…"   3 minutes ago       Up 3 minutes                                                   share-mnt
f439c7775b6e        rancher/rancher-agent:v2.3.1   "run.sh --server htt…"   3 minutes ago       Up 3 minutes                                                   hardcore_boyd
c1bbb6072fab        rancher/rancher:latest         "entrypoint.sh"          3 hours ago         Up About a minute   0.0.0.0:80->80/tcp, 0.0.0.0:443->443/tcp   adoring_yalow

三、Rancher 部署服务

通过 Rancher UI 来一键式部署服务。
Rancher Server 中存在一个项目的概念,默认存在两个项目:default 和 system,类似于 namespaces 但是并不是 namespaces,而且 namespaces 还率属于某项目下,项目可以配置 Pod 安全策略以及资源配额,可以理解为更好的划分各个项目资源隔离。
default 项目可以理解为非系统项目的个人自定义项目;
system 项目可以理解为具有所有 Kubernetes 和 Rancher 系统命名空间的系统项目。


虚拟化运维--管理平台--Rancher2.x(十五)_第17张图片
项目
  1. 部署一个服务
    切换到集群 xtsz-k8s 下 default 命令空间下的工作负荷页面来部署一个服务。


    虚拟化运维--管理平台--Rancher2.x(十五)_第18张图片
    default 命令空间

    虚拟化运维--管理平台--Rancher2.x(十五)_第19张图片
    部署服务

    以 nginx 为例,在新的 default 命名空间内,启动一个新的 nginx Pod,并配置容器 80 端口映射到 NodePort 30001 端口来配置 Service,其它配置默认即可。


    虚拟化运维--管理平台--Rancher2.x(十五)_第20张图片
    Nginx服务部署
  2. 启动服务
    点击启动,稍等片刻,Rancher Server 就自动在default 命令空间系统内创建了 nginx-test Pod 资源。


    虚拟化运维--管理平台--Rancher2.x(十五)_第21张图片
    启动服务

    虚拟化运维--管理平台--Rancher2.x(十五)_第22张图片
    部署成功

    查看服务
  3. 测试访问
    地址:http://192.168.247.132:30001/


    虚拟化运维--管理平台--Rancher2.x(十五)_第23张图片
    访问测试

    之前我们是需要使用 kubectl 命令或者手写 yaml 文件来配置,现在只需要在 UI 页面上就可以完成了。当然 Rancher Server 底层还是将配置的参数转换成 yaml 文件方式,通过页面上也可以看到生成的 yaml 文件。


    虚拟化运维--管理平台--Rancher2.x(十五)_第24张图片
    查看yaml
虚拟化运维--管理平台--Rancher2.x(十五)_第25张图片
yaml文件
  1. 服务发现


    虚拟化运维--管理平台--Rancher2.x(十五)_第26张图片
    服务发现

四、常见问题:

  1. iptables failed: iptables --wait -t nat -A DOCKER -p tcp -d 0/0 --dport 6443 -j DNAT --to-destination 172.17.0.2:1337 ! -i docker0: iptables:
    解决:
# 重建docker0网络恢复
# pkill 命令和 killall 命令的用法相同,都是通过进程名杀死一类进程
[root@master ~]# pkill docker 
# 清空规则 
[root@master ~]# iptables -t nat -F 
# 关闭网卡
[root@master ~]# ifconfig docker0 down 
# 关闭网卡
[root@master ~]# yum -y install bridge-utils
[root@master ~]# brctl delbr docker0 
#  重启docker
[root@master ~]# systemctl restart docker

  1. 停用并删除容器
[root@node2 ~]# docker stop $(docker ps -q) 
[root@master ~]# docker rm $(docker ps -aq)

  1. [etcd] Failed to bring up Etcd Plane: [etcd] Etcd Cluster is not healthy
    由于etcd内存数据库问题:
# 安装etcd
[root@master ~]# yum install etcd
# 切换版本
[root@master ~]# etcdctl -version
etcdctl version: 3.3.11
API version: 2
# 配置
 vi /etc/etcd/etcd.conf
# 修改ETCD_LISTEN_CLIENT_URLS="http://localhost:2379"为
ETCD_LISTEN_CLIENT_URLS="http://192.168.247.130:2379,http://localhost:2379"
# 修改ETCD_ADVERTISE_CLIENT_URLS="http://localhost:2379"为
ETCD_ADVERTISE_CLIENT_URLS="http://192.168.247.130:2379,http://localhost:2379"
# 重启系统,请不重启动etcd服务,如果启动请关闭
[root@master ~]# systemctl stop etcd
[root@master ~]# systemctl status etcd
● etcd.service - Etcd Server
   Loaded: loaded (/usr/lib/systemd/system/etcd.service; disabled; vendor preset: disabled)
   Active: inactive (dead)

  1. Runtime network not ready: NetworkReady=false reason:NetworkPluginNotReady message:docker: network plugin is not ready: cni config uninitialized
    原因:
    因为kubelet配置了network-plugin=cni,但是还没安装,所以状态会是NotReady,不想看这个报错或者不需要网络,就可以修改kubelet配置文件,去掉network-plugin=cni 就可以了。
[root@node2 ~]# systemctl enable kubelet 
[root@node2 ~]#  systemctl start kubelet

附:
Universal Control Plane(UCP):
UCP 通过提供集成的应用管理平台来扩展 Docker EE 基础版。它既是用户的主要交互点,也是应用的集成点。UCP 在集群中的所有节点上运行代理程序来监视它们,并且在控制器节点上运行一组服务。这些服务包括用于管理用户的身份服务,用于用户和集群 PKI 的认证中心 (CA),提供 Web UI 和 API 的主控制器,用于 UCP 状态的数据存储,以及用于向后兼容的经典 Swarm 服务。
UCP是一个基于Docker的集群管理工具,也即集群中每个节点都应该安装Docker Engine。

UCP集群包含两种节点:

  • Controller: 管理集群,并持久化集群配置
  • Node:运行容器

你可能感兴趣的:(虚拟化运维--管理平台--Rancher2.x(十五))