在进行源码分析之前,我想在第一篇介绍一下这个东西怎么用的,对于不太熟悉这个工具的人可能不太了解。好了,我们先实战一下。
yum install -y kubelet kubectl kubernetes-cni kubeadm
先安装基本组件,国内有阿里yum源还有下面这个源也可以
tee /etc/yum.repos.d/mritd.repo << EOF
[mritdrepo]
name=Mritd Repositorybaseurl=https://rpm.mritd.me/centos/7/x86_64
enabled=1
gpgcheck=1
gpgkey=https://cdn.mritd.me/keys/rpm.public.key
EOF
启动kubelet
systemctl enable kubelet
systemctl start kubelet
启动master
kubeadm init --apiserver-advertise-address 10.39.0.45
加入node,这个token是执行init命令后生成的,请保存!
kubeadm join --token 65195b.d2e09d8ffe3c2a98 10.39.0.45:6443
ok,整个集群搭建完成,是不是很简单。但有几点需要注意,
1.镜像需要提前下载:在国内无法下载gcr的镜像
可以先从https://dev.aliyun.com/list.html?namePrefix=kube查询并下载镜像后,tag成目标镜像
所需镜像主要包括:
gcr.io/google_containers/kube-proxy-amd64
gcr.io/google_containers/kube-controller-manager-amd64
gcr.io/google_containers/kube-apiserver-amd64
gcr.io/google_containers/kube-scheduler-amd64
gcr.io/google_containers/pause-amd64
gcr.io/google_containers/kube-discovery-amd64
gcr.io/google_containers/etcd-amd64
2.kubeadm部署1.6有个bug,导致kubelet无法启动:
kubelet cgroup driver: "cgroupfs" is different from docker cgroup driver: "systemd"
需要修改/etc/systemd/system/kubelet.service.d/10-kubeadm.conf
Environment="KUBELET_KUBECONFIG_ARGS=--kubeconfig=/etc/kubernetes/kubelet.conf --require-kubeconfig=true --cgroup-driver=systemd"
3.init启动时候回监测/etc/kubernetes等目的是否为空,如果你修改了配置需要将以存在的目录删除,如果没有修改,可以跳过: –skip-preflight-checks
当部署完整个系统过后就可以使用命令查看了:
kubectl --kubeconfig admin.conf get node
NAME STATUS AGE VERSION
i-zq8y5vs8 Ready 2h v1.6.1
由于默认是https,所以这里需要引入kubeconfig,这个文件也是kubeadm生成的,放在/etc/kubernetes目录下面。实战过后就开始源码分析了。待续。。。