用rancher-rke部署kubernetes集群。
正文
准备机器
我用的是四台CentOS,内网互联。
1 | Server Version: 17.03.2-ce |
配置目标机器
- 通过ansible user模块,创建新用户,并加入docker user group。
- 给用户目录下.ssh加入authorized_keys。
- 使用rancher给的docker安装脚本,安装17.03版本的docker(这里自己装或者yum装都可以,脚本其实也是通过yum安装)
开始部署
- 在一台部署机下载rke binary,通过rke config创建一个cluster.yml。
- 此时遇到的问题是ssh连接失败,有以下几个原因:
- key不对,这部分重新检查就行。
- centos不能用root用户,因为我创建了新用户,所以也不是这个问题。
- sshd的版本要在7.4以上,此时我发现有两台目标机器ssh为6.3,所以需要升级ssh。
sshd升级
为了避免操作失败,导致机器失联,所以先安装telnet,启动telnet服务。
安装telnet可以通过ansible yum,具体包名为telnet-server和xinetd。
下载ssh的tarball
1
2./configure --prefix=/usr --sysconfdir=/etc/ssh --with-pam --with-zlib --with-md5-passwords --with-tcp-wrappers
make && make install这里有一个问题,先将/etc/ssh mv到其他名字,然后install,才能变成全新版本。而且也有可能需要通过rpm删除之前的版本。
1
2
3rpm -e openssh --nodeps
rpm -e openssh-clients --nodeps
rpm -e openssh-server --nodeps接着,有可能之前没有用systemctl管理,所以这时候需要将
1
2cp -p contrib/redhat/sshd.init /etc/init.d/sshd
chmod +x /etc/init.d/sshd修改配置文件,允许root登录,不改的话只是不能用密码登录,默认是允许密钥登录。
1
2
3[root@Centos6 openssh-7.6p1]# sed -i '/^#PermitRootLogin/s/#PermitRootLogin yes/PermitRootLogin yes/' /etc/ssh/sshd_config
[root@Centos6 openssh-7.6p1]# cat /etc/ssh/sshd_config|grep RootLogin
PermitRootLogin yes最后重启sshd。
1
service sshd restart
重新部署
修改了部署文件,重新开始的时候,可以先删除一下tmp,虽然并不是总需要。
1
rm -rf /etc/kubernetes/.tmp/
有时候还可以重启一下docker。
1
systemctl restart docker
最后在health check卡住,暂未解决。
1
FATA[0115] [controlPlane] Failed to bring up Control Plane: Failed to verify healthcheck: Service [kube-apiserver] is not healthy on host [192.168.2.16]. Response code: [401], response body: {"kind":"Status","apiVersion":"v1","metadata":{},"status":"Failure","message":"Unauthorized","reason":"Unauthorized","code":401}
rke remove。清除掉之前的key和残留,重新开始。 issue#847
成功部署
- 总的来说,胆大心细,看一点点博客介绍,然后关注issue。