在 CentOS 上通过 Rancher 搭建 Kubernetes 集群

2017/6/27 posted in  软件配置 comments

安装配置 Docker 环境

# 安装 docker,net-tools(可选,方便查看端口)
yum install -y net-tools docker
# 关闭防火墙
systemctl stop firewalld
# 禁止防火墙开机启动
systemctl disable firewalld

# 调整内核参数,防止部署时出现 "Can not set cookie: dm_task_set_cookie failed" 报错
echo "printf '250\t32000\t32\t8192' > /proc/sys/kernel/sem" >> /etc/rc.d/rc.local
chmod +x /etc/rc.d/rc.local

# 禁用 selinux 需要重启系统
sed -i 's/SELINUX=enforcing/SELINUX=disabled/g' /etc/selinux/config

# 配置 docker 
建议生成环境使用 direct-lvm 方式存储 volume,
direct-lvm 配置方式参考:https://docs.docker.com/engine/userguide/storagedriver/device-mapper-driver/#increase-capacity-on-a-running-device

tee /etc/docker/daemon.json <<-'EOF'
{
  # 配置 direct-lvm
  "storage-driver": "devicemapper",
  "storage-opts": [
    "dm.thinpooldev=/dev/mapper/docker-thinpool",
    "dm.use_deferred_removal=true",
    "dm.use_deferred_deletion=true"
  ],
  # 配置阿里云镜像加速
  "registry-mirrors": ["https://jxus37ad.mirror.aliyuncs.com"]
}
EOF

# 启动 docker 并设置开机启动
systemctl start docker
systemctl enable docker

如果私有仓库通过 HTTPS 访问,需要在 /etc/docker/certs.d/域名或IP/ 下配置私有证书,无需重启 docker 立即生效。

通过 Rancher 配置 Kubernetes 集群

# 启动 rancher-server,生成环境建议使用单台设备部署
docker run -d --restart=unless-stopped --name=rancher-server -p 8080:8080 rancher/server:stable

# 添加 Kubernetes 节点步骤:
访问 rancher-server 的 8080 -> 添加 Kubernetes 环境 -> 添加 Host
注意:由于 Kubernetes 的一些镜像放在 gcr.io 上,国内可能无法下载,导致访问 Kubernetes Dashboard 时出现 service unavailable;此时可以使用私有镜像,或通过其它地方下载镜像然后再 tag 的方式。

# 重置 Kubenetes 节点
docker rm -f $(docker ps -a -q)
docker volume rm $(docker volume ls -q)
rm -rf /var/etcd/ /var/lib/rancher/ /var/lib/kubelet/

Rancher 的 Kubernetes 离线环境配置

# 配置 rancher 默认镜像仓库
admin -> Advanced Settings -> 设置 registry.default 为私有仓库地址,
原来从 docker.io 拉取的镜像将会从 私有仓库拉去,后面的路径不变。
注意:配置后原有环境不会使用默认仓库地址,需要新建环境

# Kubernetes 中 gcr.io 的离线配置
Manage Environments -> Add Templete,选择 Kubernetes orchestration 并编辑;
设置 `Private Registry for Add-Ons And Pod Infra Container Image` 为私有仓库地址,同样要求后面路径不变。
设置 Pod Infra Container Image 的值为 google_containers/pause-amd64:3.0