0%

使用kubernetes 1.4 新特性kubeadm创建集群

背景

kubernetes 发布的最新版本1.4,增加了很多新特性,据说只用两条命令就可以创建一个k8s集群,比起之前的搭建起来简单很多。
[官方文档][** http://kubernetes.io/docs/getting-started-guides/kubeadm/ **]

环境

主机资源

192.168.234.139 dc01
192.168.234.140 dc02
192.168.234.141 dc03

操作系统

推荐使用ubuntu 16 和centos 7 以上版本(我个人使用的是centos 7.2 x64)

软件安装

在三台机器上上分别安装docker 和 kubelet、kubectl和kubeadm

安装docker

1
curl -sS https://get.docker.io/ |sh

安装kubelet、kubectl和kubeadm

需要安装的kubelet、kubeadm、kubectl、 kubernetes-cni这四个rpm包是google的源,正常情况下国内是连接不上的,qq群(319807078)里已经有热心网友下载下来了,安装的时候会依赖一个socat的软件包,使用

1
yum localinstall *.rpm 

启动服务

三台机器都需要启动docker和kubelet

启动docker

1
systemctl enable docker && systemctl start docker 

启动kubelet

1
systemctl enable kubelet && systemctl start kubelet  # **此时启动kubelet是失败的,因为在/etc/kubernetes下还没有生成配置文件**

下载images

1
2
3
4
5
6
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

搭建集群

初始化集群

1
kubeadm init --api-advertise-addresses=192.168.234.139

k8s
查看日志

1
journalctl -fu kubelet

漠然大神给出的此错误排错步骤
NO.1、保证 hostname 中主机名为 xxxx.com 等这种域名格式
NO.2、保证 hosts 文件中 有 127.0.0.1 与之对应
NO.3、保证 gcr 相关镜像 已经 load 到本地
NO.4、保证 iptables规则没问题,必要时候 -F
NO.5、保证 selinux 已经关闭
NO.6、init 之前保证 启动 kubelet,虽然启动后显示启动失败
NO.7、重新 init 保证用 官方 clean 步骤做下清理
官方清理脚本

1
2
3
4
systemctl stop kubelet;
docker rm -f -v $(docker ps -q);
find /var/lib/kubelet | xargs -n 1 findmnt -n -t tmpfs -o TARGET -T | uniq | xargs -r umount -v;
rm -r -f /etc/kubernetes /var/lib/kubelet /var/lib/etcd;

加入集群节点

保证节点上启动了docker 和kubectl

1
kubeadm join --token 0ab76c.b59aaa1d1ab3cf93 192.168.234.139

查看加入的节点

1
kubectl get nodes

本文参考漠然大神链接
漠然大神博客地址
github build k8s rpm