Kubernetes 1.4 集群搭建

距离 kubernetes 1.4 发布已经有段时间,1.4 版本新增了很多新特性,其中一个比较实用的功能就是增加了集群的快速创建,基本只需要 2 条命令就能搭建成功;但由于众所周知的原因(fuck GFW),导致 kuadm 命令无法工作,以下记录了一下解决方案

一、环境准备

基本环境为 3 台虚拟机,虚拟机信息如下

IP 地址节点
192.168.1.107   master  
192.168.1.126   node1  
192.168.1.217   node2  
1.1、安装 docker

docker 这里使用的是 1.12.1 版本,安装直接根据官方教程来,如果网速较慢可切换国内源,如清华大 docker 源,具体请 Google

tee /etc/yum.repos.d/docker.repo <<-'EOF' [dockerrepo] name=Docker Repository baseurl=https://yum.dockerproject.org/repo/main/CentOS/7/ enabled=1 gpgcheck=1 gpgkey=https://yum.dockerproject.org/gpg EOF yum install docker-engine -y systemctl enable docker systemctl start docker systemctl status docker

1.2、修改主机名

由于 3 台虚拟机是从一个基础虚拟机复制而来,为了不影响 kubectl get nodes 查询,需要更改 3 台虚拟机的主机名,以下为 master 节点示例,其他节点对应修改即可

echo "master" > /etc/hostname # 替换一下 hosts 中的 localhost 等 vim /etc/hosts # 修改后内容如下 127.0.0.1 master ::1 master 192.168.1.107 master 192.168.1.126 node1 192.168.1.217 node2

二、搭建 kubernetes 集群 2.1、安装基本组件

根据 官方文档教程 需要先安装 kubelet、kubeadm、kubectl、 kubernetes-cni 这四个 rpm 包,但是由于 GFW 原因实际上 Google 的 rpm 源无法下载,以下是我通过梯子下载到本地的,rpm 下载方法 可借助 yumdownloader 工具,具体请 Google

# 首先安装 socat yum install -y socat # 然后下载相关 rpm,我已经放到了 cdn 里 rpms=(5ce829590fb4d5c860b80e73d4483b8545496a13f68ff3033ba76fa72632a3b6-kubernetes-cni-0.3.0.1-0.07a8a2.x86_64.rpm \ bbad6f8b76467d0a5c40fe0f5a1d92500baef49dedff2944e317936b110524eb-kubeadm-1.5.0-0.alpha.0.1534.gcf7301f.x86_64.rpm \ c37966352c9d394bf2cc1f755938dfb679aa45ac866d3eb1775d9c9b87d5e177-kubelet-1.4.0-0.x86_64.rpm \ fac5b4cd036d76764306bd1df7258394b200be4c11f4e3fdd100bfb25a403ed4-kubectl-1.4.0-0.x86_64.rpm) for rpmName in ${rpms[@]}; do wget $rpmName done # 最后安装即可 rpm -ivh *.rpm

2.2、启动相关组件

接下来启动 docker 和 kubelet

systemctl enable docker systemctl enable kubelet systemctl start docker systemctl start kubelet

此时查看 kubelet 其实是启动失败的,因为缺少相关配置,以下一部部署以后便会自动重启成功

在正式使用 kubeadm 创建集群以前还需要关闭 selinux,在下一个版本这个问题已经被解决

# 关闭 selinux setenforce 0

2.3、导入相关 image

kubeadm 会 pull 相关的 image,由于 GFW 的原因会造成无法下载最终失败,所以最好的办法是先用梯子 pull 下来,再 load 进去即可,以下为需要 load 进的镜像

镜像名称版本号
gcr.io/google_containers/kube-proxy-amd64   v1.4.0  
gcr.io/google_containers/kube-discovery-amd64   1.0  
gcr.io/google_containers/kubedns-amd64   1.7  
gcr.io/google_containers/kube-scheduler-amd64   v1.4.0  
gcr.io/google_containers/kube-controller-manager-amd64   v1.4.0  
gcr.io/google_containers/kube-apiserver-amd64   v1.4.0  
gcr.io/google_containers/etcd-amd64   2.2.5  
gcr.io/google_containers/kube-dnsmasq-amd64   1.3  
gcr.io/google_containers/exechealthz-amd64   1.1  
gcr.io/google_containers/pause-amd64   3.0  

实际上不用梯子可以借助于 DockerHub 的自动构建功能,实现代理下载,如下所示

images=(kube-proxy-amd64:v1.4.0 kube-discovery-amd64:1.0 kubedns-amd64:1.7 kube-scheduler-amd64:v1.4.0 kube-controller-manager-amd64:v1.4.0 kube-apiserver-amd64:v1.4.0 etcd-amd64:2.2.5 kube-dnsmasq-amd64:1.3 exechealthz-amd64:1.1 pause-amd64:3.0 kubernetes-dashboard-amd64:v1.4.0) for imageName in ${images[@]} ; do docker pull mritd/$imageName docker tag mritd/$imageName gcr.io/google_containers/$imageName docker rmi mritd/$imageName done

2.4、创建集群

首先在 master 上执行 init 操作

kubeadm init --api-advertise-addresses=192.168.1.107

此时显示信息如下表示创建完成

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/e2a31b6acdd22087c6eb7e674f406e5c.html