rancher2.3.3详细部署文档

作者: leileitang_blog | 来源:发表于2019-12-16 13:34 被阅读0次

    rancher2.3.3详细部署文档

    rancher 简介

    rancher 是全栈化企业级容器应用解决方案

    Rancher为容器提供一揽子基础架构服务:CNI兼容的网络服务、存储服务、主机管理、负载均衡、防护墙……

    Rancher让上述服务跨越公有云、私有云、虚拟机、物理机环境运行,真正实现一键式应用部署和管理。

    Rancher可以与各种CI/CD工具协同工作,可以实现开发、测试、预生产和生产环境的自动部署,提供整体可视化的主机、容器、网络及存储管理,大幅简化运维人员故障排除和生产部署的工作量。

    image

    基础环境配置

    主机配置

    主机名配置

    因为K8S的规定,主机名只支持包含 - 和 .(中横线和点)两种特殊符号,并且主机名不能出现重复。

    • 1.Hosts

    配置每台主机的hosts(/etc/hosts),添加host_ip $hostname到/etc/hosts文件中。

    • 2.CentOS关闭selinux
    
    sudo sed -i 's/SELINUX=enforcing/SELINUX=disabled/g' /etc/selinux/config
    
    
    • 3.关闭防火墙(可选)或者放行相应端口

    对于刚刚接触Rancher的用户,建议在关闭防火墙的测试环境或桌面虚拟机来运行rancher,以避免出现网络通信问题。

    • 1.关闭防火墙

    • CentOS

    systemctl stop firewalld.service && systemctl disable firewalld.service

    • Ubuntu

    ufw disable

    • 2.端口放行

    端口放行请查看端口需求

    PROTOCOL PORT DESCRIPTION
    TCP 22 Node driver SSH provisioning
    TCP 2376 Node driver Docker daemon TLS port
    TCP 2379 etcd client requests
    TCP 2380 etcd peer communication
    UDP 8472 Canal/Flannel VXLAN overlay networking
    UDP 4789 Flannel VXLAN overlay networking on Windows cluster
    TCP 9099 Canal/Flannel livenessProbe/readinessProbe
    TCP 6783 Weave Port
    UDP 6783-6784 Weave UDP Ports
    TCP 10250 kubelet API
    TCP 10254 Ingress controller livenessProbe/readinessProbe
    TCP/UDP 30000- 32767 NodePort port range
    • 4.配置主机时间、时区、系统语言

      1. 查看时区

      date -R或者timedatectl

      2. 修改时区

      ln -sf /usr/share/zoneinfo/Asia/Shanghai /etc/localtime

      3.修改系统语言环境

      4. 配置主机NTP时间同步

    • 5.配置主机DNS

    对于类似Ubuntu 18这类默认使用systemd-resolve管理DNS的系统,建议禁用systemd-resolved服务,然后手动配置DNS。

    操作方法:

    1. 禁用systemd-resolved.service
    
    systemctl disable systemd-resolved.service
    
    systemctl stop systemd-resolved.service
    
    rm -rf /etc/resolv.conf ; touch /etc/resolv.conf
    
    

    systemctl daemon-reload ; systemctl restart docker

    3.重启docker服务

    
    systemctl daemon-reload
    
    systemctl restart docker
    
    

    Kernel性能调优

    
    cat >> /etc/sysctl.conf<<EOF
    
    net.ipv4.ip_forward=1
    
    watchdog_thresh=30
    
    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
    
    

    数值根据实际环境自行配置,最后执行sysctl -p保存配置

    docker 安装配置

    Docker 安装

    • 修改数据源

    Centos7.x

    
    yum install ca-certificates ;
    
    update-ca-trust;
    
    cp /etc/yum.repos.d/CentOS-Base.repo /etc/yum.repos.d/CentOS-Base.repo-bak
    
    cat << 'EOF' > /etc/yum.repos.d/CentOS-Base.repo
    
    # CentOS-Base.repo
    
    #
    
    # The mirror system uses the connecting IP address of the client and the
    
    # update status of each mirror to pick mirrors that are updated to and
    
    # geographically close to the client. You should use this for CentOS updates
    
    # unless you are manually picking other mirrors.
    
    #
    
    # If the mirrorlist= does not work for you, as a fall back you can try the
    
    # remarked out baseurl= line instead.
    
    #
    
    #
    
    [base]
    
    name=CentOS-$releasever - Base - mirrors.aliyun.com
    
    failovermethod=priority
    
    baseurl=http://mirrors.aliyun.com/centos/$releasever/os/$basearch/
    
            http://mirrors.aliyuncs.com/centos/$releasever/os/$basearch/
    
            http://mirrors.cloud.aliyuncs.com/centos/$releasever/os/$basearch/
    
    gpgcheck=1
    
    gpgkey=http://mirrors.aliyun.com/centos/RPM-GPG-KEY-CentOS-7
    
    #released updates
    
    [updates]
    
    name=CentOS-$releasever - Updates - mirrors.aliyun.com
    
    failovermethod=priority
    
    baseurl=http://mirrors.aliyun.com/centos/$releasever/updates/$basearch/
    
            http://mirrors.aliyuncs.com/centos/$releasever/updates/$basearch/
    
            http://mirrors.cloud.aliyuncs.com/centos/$releasever/updates/$basearch/
    
    gpgcheck=1
    
    gpgkey=http://mirrors.aliyun.com/centos/RPM-GPG-KEY-CentOS-7
    
    #additional packages that may be useful
    
    [extras]
    
    name=CentOS-$releasever - Extras - mirrors.aliyun.com
    
    failovermethod=priority
    
    baseurl=http://mirrors.aliyun.com/centos/$releasever/extras/$basearch/
    
            http://mirrors.aliyuncs.com/centos/$releasever/extras/$basearch/
    
            http://mirrors.cloud.aliyuncs.com/centos/$releasever/extras/$basearch/
    
    gpgcheck=1
    
    gpgkey=http://mirrors.aliyun.com/centos/RPM-GPG-KEY-CentOS-7
    
    #additional packages that extend functionality of existing packages
    
    [centosplus]
    
    name=CentOS-$releasever - Plus - mirrors.aliyun.com
    
    failovermethod=priority
    
    baseurl=http://mirrors.aliyun.com/centos/$releasever/centosplus/$basearch/
    
            http://mirrors.aliyuncs.com/centos/$releasever/centosplus/$basearch/
    
            http://mirrors.cloud.aliyuncs.com/centos/$releasever/centosplus/$basearch/
    
    gpgcheck=1
    
    enabled=0
    
    gpgkey=http://mirrors.aliyun.com/centos/RPM-GPG-KEY-CentOS-7
    
    #contrib - packages by Centos Users
    
    [contrib]
    
    name=CentOS-$releasever - Contrib - mirrors.aliyun.com
    
    failovermethod=priority
    
    baseurl=http://mirrors.aliyun.com/centos/$releasever/contrib/$basearch/
    
            http://mirrors.aliyuncs.com/centos/$releasever/contrib/$basearch/
    
            http://mirrors.cloud.aliyuncs.com/centos/$releasever/contrib/$basearch/
    
    gpgcheck=1
    
    enabled=0
    
    gpgkey=http://mirrors.aliyun.com/centos/RPM-GPG-KEY-CentOS-7
    
    EOF
    
    

    docker-ce 安装

    • centos

    因为CentOS的安全限制,通过RKE安装K8S集群时候无法使用root账户。所以,建议CentOS用户使用非root用户来运docker,不管是RKE还是custom安装k8s,详情查看无法为主机配置SSH隧道。

    
    # 定义用户名
    
    NEW_USER=rancher
    
    # 添加用户(可选)
    
    sudo adduser $NEW_USER
    
    # 为新用户设置密码
    
    sudo passwd $NEW_USER
    
    # 为新用户添加sudo权限
    
    sudo echo "$NEW_USER ALL=(ALL) ALL" >> /etc/sudoers
    
    # 卸载旧版本Docker软件
    
    sudo yum remove docker \
    
                  docker-client \
    
                  docker-client-latest \
    
                  docker-common \
    
                  docker-latest \
    
                  docker-latest-logrotate \
    
                  docker-logrotate \
    
                  docker-selinux \
    
                  docker-engine-selinux \
    
                  docker-engine \
    
                  container*
    
    # 定义安装版本
    
    export docker_version=18.06.3
    
    # 对系统进行全面的更新升级,推荐升级一下(可选)
    
    sudo yum update -y;
    
    # 安装必要的一些系统工具
    
    sudo yum install -y yum-utils device-mapper-persistent-data \
    
        lvm2 bash-completion;
    
    # Step 2: 添加软件源信息
    
    sudo yum-config-manager --add-repo \
    
        http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo;
    
    # Step 3: 更新并安装 Docker-CE
    
    sudo yum makecache all;
    
    version=$(yum list docker-ce.x86_64 --showduplicates | sort -r|grep ${docker_version}|awk '{print $2}');
    
    sudo yum -y install --setopt=obsoletes=0 docker-ce-${version} docker-ce-selinux-${version};
    
    # 如果已经安装高版本Docker,可进行降级安装(可选)
    
    yum downgrade --setopt=obsoletes=0 -y docker-ce-${version} docker-ce-selinux-${version};
    
    # 把当前用户加入docker组
    
    sudo usermod -aG docker $NEW_USER;
    
    # 设置开机启动
    
    sudo systemctl enable docker;
    
    

    Docker-engine

    Docker-Engine Docker官方已经不推荐使用,请安装Docker-CE。

    锁定docker 版本

    可能因为某些原因无意间执行了yum update或者apt-get -y upgrade;导致Docker版本升级。为了避免此类问题发生,建议在安装好Docker后对Docker软件进行锁定,防止Docker意外更新。

    • centos

    1. 安装yum-plugin-versionlock插件

    
    yum install yum-plugin-versionlock
    
    

    2. 锁定软件包

    
    yum versionlock add docker-ce docker-ce-cli
    
    
    
    [root@izwz969o7lu6t9lh4ta6m5z ~]# yum versionlock add docker-ce docker-ce-cli
    
    已加载插件:fastestmirror, versionlock
    
    Adding versionlock on: 0:docker-ce-17.06.2.ce-3.el7.centos
    
    versionlock added: 1
    
    [root@izwz969o7lu6t9lh4ta6m5z ~]#
    
    

    3. 查看已锁定的软件包

    
    yum versionlock list
    
    

    4. 解锁指定的软件包

    
    yum versionlock delete <软件包名称>
    
    

    5. 解锁所有的软件包

    
    yum versionlock clear
    
    

    docker配置

    对于通过systemd来管理服务的系统(比如CentOS7.X、Ubuntu16.X), Docker有两处可以配置参数: 一个是docker.service服务配置文件,一个是Docker daemon配置文件daemon.json。

    1.docker.service

    对于CentOS系统,docker.service默认位于/usr/lib/systemd/system/docker.service;对于Ubuntu系统,docker.service默认位于/lib/systemd/system/docker.service

    2. daemon.json

    daemon.json默认位于/etc/docker/daemon.json,如果没有可手动创建,基于systemd管理的系统都是相同的路径。通过修改daemon.json来改过Docker配置,也是Docker官方推荐的方法。

    以下说明均基于systemd,并通过/etc/docker/daemon.json来修改配置。

    3. 配置镜像下载和上传并发数

    从Docker1.12开始,支持自定义下载和上传镜像的并发数,默认值上传为3个并发,下载为5个并发。通过添加"max-concurrent-downloads"和"max-concurrent-uploads"参数对其修改:

    
    "max-concurrent-downloads": 3,
    
    "max-concurrent-uploads": 5
    
    

    4. 配置镜像加速地址

    Rancher从v1.6.15开始到v2.x.x,Rancher系统相关的所有镜像(包括1.6.x上的K8S镜像)都托管在Dockerhub仓库。Dockerhub节点在国外,国内直接拉取镜像会有些缓慢。为了加速镜像的下载,可以给Docker配置国内的镜像地址。

    编辑/etc/docker/daemon.json加入以下内容

    
    {
    
    "registry-mirrors": ["https://XXXX.mirror.aliyuncs.com/","https://IP:PORT/"]
    
    }
    
    

    可以设置多个registry-mirrors地址,以数组形式书写,地址需要添加协议头(https或者http)。

    1. 配置insecure-registries私有仓库

    Docker默认只信任TLS加密的仓库地址(https),所有非https仓库默认无法登陆也无法拉取镜像。insecure-registries字面意思为不安全的仓库,通过添加这个参数对非https仓库进行授信。可以设置多个insecure-registries地址,以数组形式书写,地址不能添加协议头(http)。

    编辑/etc/docker/daemon.json加入以下内容:

    
    {
    
    "insecure-registries": ["192.168.1.100","IP:PORT"]
    
    }
    
    
    1. 配置Docker存储驱动

    OverlayFS是一个新一代的联合文件系统,类似于AUFS,但速度更快,实现更简单。Docker为OverlayFS提供了两个存储驱动程序:旧版的overlay,新版的overlay2(更稳定)。

    先决条件:

    • overlay2: Linux内核版本4.0或更高版本,或使用内核版本3.10.0-514+的RHEL或 CentOS。

    • overlay: 主机Linux内核版本3.18+

    • 支持的磁盘文件系统

      • ext4(仅限RHEL 7.1)

      • xfs(RHEL7.2及更高版本),需要启用d_type=true。

    具体详情参考 Docker Use the OverlayFS storage driver

    编辑/etc/docker/daemon.json加入以下内容

    
    {
    
    "storage-driver": "overlay2",
    
    "storage-opts": ["overlay2.override_kernel_check=true"]
    
    }
    
    

    7.配置日志驱动

    容器在运行时会产生大量日志文件,很容易占满磁盘空间。通过配置日志驱动来限制文件大小与文件的数量。

    限制单个日志文件为100M,最多产生3个日志文件

    
    {
    
    "log-driver": "json-file",
    
    "log-opts": {
    
        "max-size": "100m",
    
        "max-file": "3"
    
        }
    
    }
    
    

    8.Ubuntu\Debian系统 ,docker info提示WARNING: No swap limit support

    Ubuntu\Debian系统下,默认cgroups未开启swap account功能,这样会导致设置容器内存或者swap资源限制不生效。可以通过以下命令解决:

    
    # 统一网卡名称为ethx
    
    sudo sed -i 's/en[[:alnum:]]*/eth0/g' /etc/network/interfaces;
    
    sudo sed -i 's/GRUB_CMDLINE_LINUX="\(.*\)"/GRUB_CMDLINE_LINUX="net.ifnames=0 cgroup_enable=memory swapaccount=1 biosdevname=0 \1"/g' /etc/default/grub;
    
    sudo update-grub;
    
    

    注意 通过以上命令可自动配置参数,如果/etc/default/grub非默认配置,需根据实际参数做调整。 提示 以上配置完成后,建议重启一次主机。

    rancher 安装

    单节点在线安装

    配置ssl 证书并安装rancher

    出于安全考虑,使用Rancher时需要SSL进行加密。SSL可以保护所有Rancher网络通信,例如登录或与集群交互。

    1. 方案A-使用默认自签名证书

    默认情况下,Rancher会自动生成一个用于加密的自签名证书。从您的Linux主机运行Docker命令来安装Rancher,而不需要任何其他参数:

    
    docker run -d --restart=unless-stopped \
    
    -p 80:80 -p 443:443 \
    
    -v <主机路径>:/var/lib/rancher/ \
    
    -v /root/var/log/auditlog:/var/log/auditlog \
    
    -e CATTLE_SYSTEM_CATALOG=bundled \
    
    -e AUDIT_LEVEL=3 \
    
    rancher/rancher:stable (或者rancher/rancher:latest)
    
    

    2. 方案B-使用您自己的自签名证书

    Rancher安装可以使用自己生成的自签名证书,如果没有自签名证书,可一键生成自签名ssl证书。

    提示

    使用OpenSSL或其他方法创建自签名证书。

    这里的证书不需要进行base64加密。

    证书文件必须是PEM格式。

    在您的证书文件中,包含链中的所有中间证书。有关示例,请参考SSL常见问题/故障排除。

    您的Rancher安装可以使用您提供的自签名证书来加密通信。创建证书后,运行docker命令时把证书文件映射到容器中。

    
    docker run -d --restart=unless-stopped \
    
      -p 80:80 -p 443:443 \
    
      -v <主机路径>:/var/lib/rancher/ \
    
      -v /var/log/rancher/auditlog:/var/log/auditlog \
    
      -e AUDIT_LEVEL=3 \
    
      -v /etc/<CERT_DIRECTORY>/tls.crt:/etc/rancher/ssl/cert.pem \
    
      -v /etc/<CERT_DIRECTORY>/tls.key:/etc/rancher/ssl/key.pem \
    
      -v /etc/<CERT_DIRECTORY>/cacerts.pem:/etc/rancher/ssl/cacerts.pem \
    
      rancher/rancher:stable (或者rancher/rancher:latest)
    
    

    3. 方案C-使用权威CA机构颁发的证书

    如果您公开发布您的应用,理想情况下应该使用由权威CA机构颁发的证书。

    提示

    证书必须是PEM格式,PEM只是一种证书类型,并不是说文件必须是PEM为后缀,具体可以查看证书类型。

    确保容器包含您的证书文件和密钥文件。由于您的证书是由认可的CA签署的,因此不需要安装额外的CA证书文件。

    给容器添加--no-cacerts参数禁止Rancher生成默认CA证书。

    这里的证书不需要进行base64加密。

    获取证书后,运行Docker命令以部署Rancher,同时指向证书文件。

    
    docker run -d --restart=unless-stopped \
    
      -p 80:80 -p 443:443 \
    
      -v <主机路径>:/var/lib/rancher/ \
    
      -v /root/var/log/auditlog:/var/log/auditlog \
    
      -e CATTLE_SYSTEM_CATALOG=bundled \
    
      -e AUDIT_LEVEL=3 \
    
      -v /etc/<CERT_DIRECTORY>/tls.crt:/etc/rancher/ssl/cert.pem \
    
      -v /etc/<CERT_DIRECTORY>/tls.key:/etc/rancher/ssl/key.pem \
    
      rancher/rancher:stable (或者rancher/rancher:latest) --no-cacerts
    
    

    参考rancher官方文档

    参考leileitang的博客

    相关文章

      网友评论

        本文标题:rancher2.3.3详细部署文档

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