Kubernetes/k8s/docker容器学习

rancher2.3.3详细部署文档

2019-12-16  本文已影响0人  leileitang_blog

rancher2.3.3详细部署文档

rancher 简介

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

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

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

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

image

基础环境配置

主机配置

主机名配置

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

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


sudo sed -i 's/SELINUX=enforcing/SELINUX=disabled/g' /etc/selinux/config

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

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

ufw disable

端口放行请查看端口需求

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

对于类似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的安全限制,通过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意外更新。

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(更稳定)。

先决条件:

具体详情参考 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的博客

上一篇下一篇

猜你喜欢

热点阅读