使用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/,可以備份