通过 Rancher 安装 Kubernetes 的文章前面已经写过, 但那时是需要科学上网才能安装成功 (下载 gcr.io/google_containers/XXXXX 的镜像), 本次实战依旧是用 Rancher 来安装 Kubernetes, 但是会做一些设置, 使得不用翻墙也能成功安装 K8S 环境, 另外, 在 CentOS7 环境下, 有些设置如果处理不当也会导致安装失败或者加入节点失败, 所以也会在本文中交代清楚;
章节列表
整个CentOS7 环境安装 Kubernetes 四部曲由以下四篇文章组成:
1. 标准化机器准备, 不论是 master 还是 node 节点, 都要先做一些同样的设置, 本章会将这些步骤列出, 请参照本章对每一台机器做同样的设置;
2. 安装 master, 配置模板;
3. 在 K8S 环境加入机器, 并快速部署一个应用作为体验;
4. 安装 kubectl 工具;
版本信息
本次涉及到的重要软件的版本信息如下:
1. 操作系统: CentOS Linux 7 (3.10.0)
- Docker:1.12.3
- Kubernetes:v1.8.3
机器信息
整个环境由两台 CentOS7 的机器组成, 如下:
hostname | IP 地址 | 作用 | 内存大小 |
---|---|---|---|
master | 192.168.119.129 | 主控制节点 | 2G |
node1 | 192.168.119.130 | 业务节点 | 4G |
接下来的操作是通用的, 在 master 和 node1 两台机器上都要一模一样的做一遍;
建议以 root 身份来执行以下操作, 或者通过 sudo su - 命令获取 root 权限;
检查 hostname
检查文件 / etc/hostname, 确保 master 和 node1 的不一样, 我这边 master 的 hostname 就叫 master,node 的 hostname 叫 node1;
修改后需要重启机器;
检查 hosts
检查文件 / etc/hosts, 确保有 hostname 和本机 IP 的配置:
1. 对于 master 应该有这么一行: 192.168.119.129 master
2. 对于 node1 应该有这么一样: 192.168.119.130 node1
IP 和 DNS
IP 地址不能冲突;
能正常解析域名, 执行 curl www.baidu.com, 可以返回网站的 html 内容;
防火墙
如果是测试环境就关闭防火墙, 如果是生产环境需要做详细的设置, 关闭防火墙的方法如下:
1. 查看当前防火墙状态: systemctl status firewalld.service
2. 禁止开机启动: systemctl disable firewalld.service
3. 关闭防火墙: systemctl stop firewalld.service
关闭 SELinux
打开文件 / etc/selinux/config, 找到 SELINUX=xxxxx 这行, 改为 SELINUX=disabled;
修改后需要重启机器;
开启 IPV4 转发
打开文件 / etc/sysctl.conf, 检查是否有 net.ipv4.ip_forward = x 这样的配置;
如果有就保证 x 等于 1, 如果没有就加一行: net.ipv4.ip_forward = 1
修改并保存后, 执行命令 sysctl -p 使配置生效;
执行命令 sysctl -a|grep "ip_forward", 查看最新的配置, 应该有如下内容:
- net.ipv4.ip_forward = 1
- net.ipv4.ip_forward_use_pmtu = 0
重启
做完上述步骤后, 如果有改动, 最好重启机器, 以免有设置未能生效;
关闭 Swap 交换分区
执行命令 swapoff -a 关闭 Swap 交换分区;
安装 Docker1.2.3 版本
什么版本的 Docker 才能适配 Rancher 和 Kubernetes?rancher 的官网给出了一份列表, 请参考: http://rancher.com/docs/rancher/v1.6/zh/hosts/#docker, 本文我们使用推荐的 1.2.3 版本, 以下是安装步骤:
1. 执行命令:
- mkdir -p ~/_src \
- && cd ~/_src \
- && wget http://yum.dockerproject.org/repo/main/centos/7/Packages/docker-engine-selinux-1.12.3-1.el7.centos.noarch.rpm \
- && wget http://yum.dockerproject.org/repo/main/centos/7/Packages/docker-engine-1.12.3-1.el7.centos.x86_64.rpm \
- && wget http://yum.dockerproject.org/repo/main/centos/7/Packages/docker-engine-debuginfo-1.12.3-1.el7.centos.x86_64.rpm \
- && yum localinstall -y docker-engine-selinux-1.12.3-1.el7.centos.noarch.rpm docker-engine-1.12.3-1.el7.centos.x86_64.rpm docker-engine-debuginfo-1.12.3-1.el7.centos.x86_64.rpm
2. 设置开机启动:
systemctl enable docker
3. 启动 docker:
systemctl start docker
4. 执行 docker version 命令, 看到如下信息:
- Client:
- Version: 1.12.3
- API version: 1.24
- Go version: go1.6.3
- Git commit: 6b644ec
- Built:
- OS/Arch: linux/amd64
- Server:
- Version: 1.12.3
- API version: 1.24
- Go version: go1.6.3
- Git commit: 6b644ec
- Built:
- OS/Arch: linux/amd64
设置 Docker 镜像加速
此时如果用 docker pull 命令下载镜像, 本地会连接 hub.docker.com 网站去下载, 耗时较长, 因此我们可以设置 docker 镜像加速, 使得本地连接去国内镜像仓库下载, 镜像加速的设置有很多种, 本章以阿里云的设置为例, 步骤如下:
创建目录:
mkdir -p /etc/docker
2. 设置镜像仓库地址:
- tee /etc/docker/daemon.json <<-'EOF'
- {
- "registry-mirrors": ["https://xwx6wxd1.mirror.aliyuncs.com"]
- }
- EOF
3. 重新加载配置:
systemctl daemon-reload
4. 重启 docker 服务:
systemctl restart docker
至此, 机器的标准化准备工作已经完成了, 经过了上述操作的机器可以直接拿来安装 master, 或者作为 node 加入到 kubernetes 环境;
来源: https://blog.csdn.net/boling_cavalry/article/details/79613037