使用kubeadm快速搭建k8s集群(单master,HA 的功能仍然在开发中)


NOTE:

2016/10/09 :添加release版yum源,上传rpm包,避免***,补全之前未添加的镜像,完善文档

2016/11/11 :删除hub.docker.com的镜像,改为通过github自动编译,免去爬梯之苦


架构:

master 192.168.1.11

slave  192.168.1.12


前提条件

系统为Ubuntu16.04 or centos7


以下操作均在centos7 环境下,并且已经安装docker


安装yum源


release源(需***):

cat <<EOF > /etc/yum.repos.d/kubernetes.repo
[kubernetes]
name=Kubernetes
baseurl=http://yum.kubernetes.io/repos/kubernetes-el7-x86_64
enabled=1
gpgcheck=1
repo_gpgcheck=1
gpgkey=https://packages.cloud.google.com/yum/doc/yum-key.gpg
       https://packages.cloud.google.com/yum/doc/rpm-package-key.gpg
EOF


已把相关rpm包上传

http://down.51cto.com/data/2248890


beta源(国内可下载尝鲜):

cat <<EOF > /etc/yum.repos.d/k8s.repo
[kubelet]
name=kubelet
baseurl=http://files.rm-rf.ca/rpms/kubelet/
enabled=1
gpgcheck=0
EOF


除了kubelet,组件都已经docker化

yum install -y kubelet kubeadm kubectl kubernetes-cni
systemctl enable kubelet && systemctl start kubelet


注意:

1、程序会进行hostname正则匹配,修改hostname和hosts文件,需要符合 example.com

2、提前下载镜像,因为国内屏蔽了


我已经上传相关镜像

https://hub.docker.com/u/foxchan/


镜像名如下:

gcr.io/google_containers/pause-amd64:3.0
gcr.io/google_containers/kube-apiserver-amd64:v1.4.0
gcr.io/google_containers/kube-controller-manager-amd64:v1.4.0
gcr.io/google_containers/kube-scheduler-amd64:v1.4.0
gcr.io/google_containers/etcd-amd64:2.2.5
gcr.io/google_containers/kube-discovery-amd64:1.0
gcr.io/google_containers/kube-dnsmasq-amd64:1.3
gcr.io/google_containers/kubedns-amd64:1.7
gcr.io/google_containers/exechealthz-amd64:1.1
gcr.io/google_containers/kube-proxy-amd64:v1.4.0


在你期望运行master的机器执行如下命令,耐心等待,联网下载(下载的就是上面提供的镜像)

kubeadm init --use-kubernetes-version v1.4.0-beta.11



出现这些,证明安装成功了

Kubernetes master initialised successfully!
You can now join any number of machines by running the following on each node:
kubeadm join --token dxxxxxxxxx 192.168.1.11


slave节点

先下载镜像

gcr.io/google_containers/pause-amd64:3.0
gcr.io/google_containers/kube-proxy-amd64:v1.4.0


执行如下命令加入集群

kubeadm join --token dxxxxxxxx 192.168.1.11


master查看是否添加成功

kubectl get nodes


还没完事,还有活要干!


现在创建pod网络(master上操作,也可以用其他的网络模式,Calico or Canal之后补充)

weaver网络:

镜像如下

weaveworks/weave-kube:1.7.0
weaveworks/weave-npc:1.7.0


添加weaver网络支持

kubectl apply -f https://git.io/weave-kube

查看容器是否全部正常

kubectl get pods --all-namespaces


NAMESPACE     NAME                                             READY     STATUS    RESTARTS   AGE
kube-system   etcd-emarsys105011.emar.com                      1/1       Running   0          10d
kube-system   kube-apiserver-emarsys105011.emar.com            1/1       Running   8          10d
kube-system   kube-controller-manager-emarsys105011.emar.com   1/1       Running   0          10d
kube-system   kube-discovery-1971138125-6g5vk                  1/1       Running   0          10d
kube-system   kube-dns-2247936740-bwcsy                        3/3       Running   3          10d
kube-system   kube-proxy-amd64-leat6                           1/1       Running   0          10d
kube-system   kube-proxy-amd64-ta5jb                           1/1       Running   0          9d
kube-system   kube-scheduler-emarsys105011.emar.com            1/1       Running   0          10d
kube-system   weave-net-l1rif                                  2/2       Running   0          9d
kube-system   weave-net-zbsbf                                  2/2       Running   0          9d

现在,集群已经准备好了!!!


总结:

1、kubeadm仍然是持续开发的功能,以后会集成更多的功能进来,尝鲜、了解特性可以,放到生产并不建议。

2、目前是单master模式,挂了就是真挂了。etcd的数据保存路径:/var/lib/etcd/,可以备份