美文网首页Kubernetes管理后台系统
虚拟化运维--管理平台--Rancher2.x(十五)

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

作者: 无剑_君 | 来源:发表于2019-10-27 19:36 被阅读0次

    一、节点分配

    文档地址: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<<EOF
    net.ipv4.ip_forward=1
    net.bridge.bridge-nf-call-iptables=1
    net.ipv4.neigh.default.gc_thresh1=4096
    net.ipv4.neigh.default.gc_thresh2=6144
    net.ipv4.neigh.default.gc_thresh3=8192
    EOF
    
    [root@master ~]# sysctl -p
    net.ipv4.ip_forward = 1
    net.bridge.bridge-nf-call-iptables = 1
    net.ipv4.neigh.default.gc_thresh1 = 4096
    net.ipv4.neigh.default.gc_thresh2 = 6144
    net.ipv4.neigh.default.gc_thresh3 = 8192
    
    
    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 <<EOF > /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/


      登录
    保存URL

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

    默认用户为:admin 密码: admin

    1. 设置语言(右下角)


      设置语言

    二、创建集群

    1. 创建集群


      创建集群
      自定义集群

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


      添加名称

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


    角色选择

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

    1. 添加主机到集群中
      注:如果是多台主机,根据角色的不同,需要复制多次命令。
    192.168.247.130--etcd
    192.168.247.131--Control
    192.168.247.132--work
    
    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 的统一集群和应用管理解决方案。


    添加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
    
    
    添加
    # 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
    
    
    全部注册成功

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

    进行注册 等待注册 激活成功 主机信息 主机查看
    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 系统命名空间的系统项目。


    项目
    1. 部署一个服务
      切换到集群 xtsz-k8s 下 default 命令空间下的工作负荷页面来部署一个服务。


      default 命令空间
      部署服务

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


      Nginx服务部署
    2. 启动服务
      点击启动,稍等片刻,Rancher Server 就自动在default 命令空间系统内创建了 nginx-test Pod 资源。


      启动服务
      部署成功
      查看服务
    3. 测试访问
      地址:http://192.168.247.132:30001/


      访问测试

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


      查看yaml
    yaml文件
    1. 服务发现


      服务发现

    四、常见问题:

    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(十五)

        本文链接:https://www.haomeiwen.com/subject/iyvjvctx.html