rancher部署Kubernetes集羣之基礎環境docker-ce部署

通過rancher快速部署Kubernetes集羣請看這裏

基礎環境配置:

1、操作系統和軟件版本要求:

Rancher在以下操作系統及其後續的非主要發行版上受支持:

Ubuntu 16.04.x (64-bit)
Docker 18.06.x, 18.09.x
Ubuntu 18.04.x (64-bit)
Docker 18.06.x, 18.09.x
RancherOS 1.3.x+ (64-bit)
Docker 18.06.x, 18.09.x
Windows Server version 1803 (64-bit)
Docker 17.06

1、Ubuntu、Centos操作系統有Desktop和Server版本,選擇請安裝server版本,別自己坑自己!
2、如果您正在使用RancherOS,請確保切換到受支持的Docker版本:
sudo ros engine switch docker-18.09.2

2、硬件配置要求:

  • 單節點安裝需求

rancher

  • HA安裝需求(標準3節點)

在這裏插入圖片描述

3、主機名配置

因爲K8S的規定,主機名只支持包含 - 和 .(中橫線和點)兩種特殊符號,並且主機名不能出現重複。

4、Hosts配置

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

5、CentOS關閉selinux

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

6、關閉防火牆(可選)或者放行相應端口

  • 關閉防火牆
    CentOS
systemctl stop firewalld.service && systemctl disable firewalld.service

Ubuntu

ufw disable
  • 端口放行

通過iptables或者firewall-cmd配置端口

7、配置主機時間、時區、系統語言

  • 查看時區
date -R或者timedatectl
  • 修改時區
ln -sf /usr/share/zoneinfo/Asia/Shanghai /etc/localtime
  • 修改系統語言環境
sudo echo 'LANG="en_US.UTF-8"' >> /etc/profile;source /etc/profile
  • 配置主機NTP時間同步

8、配置主機NTP時間同步

對於類似Ubuntu 18這類默認使用systemd-resolve管理DNS的系統,建議禁用systemd-resolved服務,然後手動配置DNS
操作方法:

禁用systemd-resolved.service

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

接着編輯/etc/resolv.conf添加DNS服務器

重啓docker服務

systemctl daemon-reload ; systemctl restart docker

9、Kernel性能調優

數值根據實際環境自行配置,最後執行sysctl -p保存配置。

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

Docker安裝與配置

1、Docker安裝

  • Ubuntu 16.x
    -修改系統源
sudo cp /etc/apt/sources.list /etc/apt/sources.list.bak
cat > /etc/apt/sources.list << EOF

deb http://mirrors.aliyun.com/ubuntu/ xenial main
deb-src http://mirrors.aliyun.com/ubuntu/ xenial main
deb http://mirrors.aliyun.com/ubuntu/ xenial-updates main
deb-src http://mirrors.aliyun.com/ubuntu/ xenial-updates main
deb http://mirrors.aliyun.com/ubuntu/ xenial universe
deb-src http://mirrors.aliyun.com/ubuntu/ xenial universe
deb http://mirrors.aliyun.com/ubuntu/ xenial-updates universe
deb-src http://mirrors.aliyun.com/ubuntu/ xenial-updates universe
deb http://mirrors.aliyun.com/ubuntu/ xenial-security main
deb-src http://mirrors.aliyun.com/ubuntu/ xenial-security main
deb http://mirrors.aliyun.com/ubuntu/ xenial-security universe
deb-src http://mirrors.aliyun.com/ubuntu/ xenial-security universe

EOF

-Docker-ce安裝

# 定義用戶名
NEW_USER=rancher
# 添加用戶(可選)
sudo adduser $NEW_USER
# 爲新用戶設置密碼
sudo passwd $NEW_USER
# 爲新用戶添加sudo權限
sudo echo "$NEW_USER ALL=(ALL) ALL" >> /etc/sudoers
# 定義安裝版本
export docker_version=18.06.3;

# step 1: 安裝必要的一些系統工具
sudo apt-get remove docker docker-engine docker.io containerd runc -y;
sudo apt-get update;
sudo apt-get -y install apt-transport-https ca-certificates \
    curl software-properties-common bash-completion  gnupg-agent;
    
# step 2: 安裝GPG證書
sudo curl -fsSL http://mirrors.aliyun.com/docker-ce/linux/ubuntu/gpg | \
    sudo apt-key add -;
    
# Step 3: 寫入軟件源信息
sudo add-apt-repository "deb [arch=amd64] http://mirrors.aliyun.com/docker-ce/linux/ubuntu \
    $(lsb_release -cs) stable";
    
# Step 4: 更新並安裝 Docker-CE
sudo apt-get -y update;
version=$(apt-cache madison docker-ce|grep ${docker_version}|awk '{print $3}');

# --allow-downgrades 允許降級安裝
sudo apt-get -y install docker-ce=${version} --allow-downgrades;
# 把當前用戶加入docker組
sudo usermod -aG docker $NEW_USER;
# 設置開機啓動
sudo systemctl enable docker;
  • CentOS 7.x
    -Docker-ce安裝
    因爲CentOS的安全限制,通過RKE安裝K8S集羣時候無法使用root賬戶。所以,建議CentOS用戶使用非root用戶來運行docker,不管是RKE還是custom安裝k8s
# 定義用戶名
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

# step 1: 安裝必要的一些系統工具
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;

2、Docker配置

對於通過systemd來管理服務的系統(比如CentOS7.X、Ubuntu16.X, Docker有兩處可以配置參數: 一個是docker.service服務配置文件,一個是Docker daemon配置文件daemon.json。

  • docker.service
    -對於CentOS系統,docker.service默認對於/usr/lib/systemd/system/docker.service;對於Ubuntu系統,docker.service默認位於/lib/systemd/system/docker.service
  • daemon.json
    -daemon.json默認位於/etc/docker/daemon.json,如果沒有可手動創建,基於systemd管理的系統都是相同的路徑。通過修改daemon.json來改過Docker配置,也是Docker官方推薦的方法

以下說明均基於systemd,並通過/etc/docker/daemon.json來修改配置。

  1. 配置鏡像下載和上傳併發數
    從Docker1.12開始,支持自定義下載和上傳鏡像的併發數,默認值上傳爲3個併發,下載爲5個併發。通過添加”max-concurrent-downloads”和”max-concurrent-uploads”參數對其修改:
"max-concurrent-downloads": 3,
"max-concurrent-uploads": 5
  1. 配置鏡像加速地址
    Rancher從v1.6.15開始到v2.x.x,Rancher系統相關的所有鏡像(包括1.6.x上的K8S鏡像)都託管在Dockerhub倉庫。Dockerhub節點在國外,國內直接拉取鏡像會有些緩慢。爲了加速鏡像的下載,可以給Docker配置國內的鏡像地址。可以設置多個registry-mirrors地址,以數組形式書寫,地址需要添加協議頭(https或者http)。
    編輯 /etc/docker/daemon.json
{
"registry-mirrors": ["https://7bezldxe.mirror.aliyuncs.com/","https://IP:PORT/"]
}
  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(更穩定)。
    編輯 /etc/docker/daemon.json

先決條件:
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

{
"storage-driver": "overlay2",
"storage-opts": ["overlay2.override_kernel_check=true"]
}
  1. 配置日誌驅動
    容器在運行時會產生大量日誌文件,很容易佔滿磁盤空間。通過配置日誌驅動來限制文件大小與文件的數量。 >限制單個日誌文件爲100M,最多產生3個日誌文件。
    編輯 /etc/docker/daemon.json
{
"log-driver": "json-file",
"log-opts": {
    "max-size": "100m",
    "max-file": "3"
    }
}
  1. 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;
  1. 修改docker工作目錄

docker安裝時如果不指定家目錄(也就是工作目錄),一般默認工作目錄是 /var/lib/docker ,很多時候需要修改到大容量磁盤上進行存儲,這裏記錄一下修改默認路徑爲 /data/docker

查看當前docker運行的工作目錄

[root@server-1 ~]# docker info |grep "Docker Root Dir"
  1. 方法一
    編輯 /etc/docker/daemon.json
{
    "data-root": "/data/docker"
}

重啓docker

systemctl restart docker 
  1. 方法二
    編輯文件 /usr/lib/systemd/system/docker.service,在ExecStart後添加–data-root=/data/docker
[Service]
Type=notify
# the default is not to use systemd for cgroups because the delegate issues still
# exists and systemd currently does not support the cgroup feature set required
# for containers run by docker
ExecStart=/usr/bin/dockerd -H fd:// --containerd=/run/containerd/containerd.sock  --data-root=/data/docker
ExecReload=/bin/kill -s HUP $MAINPID
TimeoutSec=0
RestartSec=2……

重啓docker

systemctl daemon-reload 
systemctl restart docker

通過rancher快速部署Kubernetes集羣請看這裏

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章