名称 |
版本 |
操作系统 |
CentOS Linux release 7.3.1611 (Core) |
内核 |
3.10.0-514.el7.x86_64 |
kubernetes |
1.9 |
docker |
17.03 |
kubeadm |
v1.9.0 |
kube-apiserver |
v1.9.0 |
kube-controller-manager |
v1.9.0 |
kube-scheduler |
v1.9.0 |
k8s-dns-sidecar |
1.14.7 |
k8s-dns-kube-dns |
1.14.7 |
k8s-dns-dnsmasq-nanny |
1.14.7 |
kube-proxy |
v1.9.0 |
etcd |
3.1.10 |
pause |
3.0 |
flannel |
v0.9.1 |
kubernetes-dashboard |
v1.8.1 |
主机名 |
IP |
配置 |
k8s-master |
192.168.32.132 |
2核2G |
k8s-node1 |
192.168.32.129 |
2核2G |
k8s-node2 |
192.168.32.130 |
2核2G |
设置主机名:
hostnamectl--static set-hostname k8s-master
hostnamectl--static set-hostname k8s-node1
hostnamectl--static set-hostname k8s-node2
关闭防火墙:
systemctldisable firewalld.service
systemctlstop firewalld.service
关闭selinux:
sed -i's/SELINUX=enforcing/SELINUX=disabled/g' /etc/ /config
grepSELINUX=disabled /etc/selinux/config
setenforce 0
关闭swap:
swapoff -a
配置系统路由参数,防止kubeadm报路由警告:
echo "
net.bridge.bridge-nf-call-ip6tables = 1
net.bridge.bridge-nf-call-iptables = 1
" >> /etc/sysctl.conf
sysctl –p
导入镜像:
cd /usr/local/k8s/k8s_images/docker_images/
docker load < k8s-dns-dnsmasq-nanny-amd64_v1.14.7.tar
docker load < k8s-dns-kube-dns-amd64_1.14.7.tar
docker load < k8s-dns-sidecar-amd64_1.14.7.tar
docker load < kube-apiserver-amd64_v1.9.0.tar
docker load < kube-controller-manager-amd64_v1.9.0.tar
docker load < kube-scheduler-amd64_v1.9.0.tar
docker load < flannel:v0.9.1-amd64.tar
docker load < pause-amd64_3.0.tar
docker load < kube-proxy-amd64_v1.9.0.tar
docker load < kubernetes-dashboard_v1.8.1.tar
docker load < etcd-amd64_v3.1.10.tar
下载离线安装包,并解压:
tar -xjvfk8s_images.tar.bz2
安装docker-ce17.03(kubeadmv1.9最大支持docker-ce17.03)。
rpm -ihvdocker-ce-selinux-17.03.2.ce-1.el7.centos.noarch.rpm
rpm -ivhdocker-ce-17.03.2.ce-1.el7.centos.x86_64.rpm
修改docker的镜像源为国内的daocloud:
curl -sSLhttps://get.daocloud.io/daotools/set_mirror.sh | sh -shttp://a58c8480.m.daocloud.io
安装docker1.12.6及版本需要设置cgroup-driver=cgroupfs,因为kubelet默认的cgroup的driver和docker的不一样,docker默认的cgroupfs,kubelet默认为systemd:
sed -i's/cgroup-driver=systemd/cgroup-driver=cgroupfs/g'/etc/systemd/system/kubelet.service.d/10-kubeadm.conf
或者修改10-kubeadm.conf文件中的--cgroup-driver=cgroupfs":
vi/etc/systemd/system/kubelet.service.d/10-kubeadm.conf
启动docker-ce:
systemctl start docker&& systemctl enable docker
rpm -ivh socat-1.7.3.2-2.el7.x86_64.rpm
rpm -ivh kubernetes-cni-0.6.0-0.x86_64.rpm
rpm -ivh kubelet-1.9.9-9.x86_64.rpm
rpm -ivh kubectl-1.9.0-0.x86_64.rpm
rpm -ivh kubeadm-1.9.0-0.x86_64.rpm
启动kubelete:
systemctl enable kubelet&& sudo systemctl start kubelet
开始初始化master:
kubeadm init--kubernetes-version=v1.9.0 --pod-network-cidr=10.244.0.0/16
kubernetes默认支持多重网络插件如flannel、weave、calico,这里使用flannel,就必须要设置--pod-network-cidr参数,10.244.0.0/16是kube-flannel.yml里面配置的默认网段,如果需要修改的话,需要把kubeadm init的--pod-network-cidr参数和后面的kube-flannel.yml里面修改成一样的网段就可以了。
如果需要重复执行,则执行:
kubeadmreset
将kubeadmjoin xxx保存下来,等下node节点需要使用。如果忘记了,可以在master上通过kubeadmin token list得到。
### 注意:kubeadm init 输出的 join 指令中 token 只有 24h 的有效期,如果过期后,需要重新生成,具体请参考:
[root@tvm-00 ~]#kubeadm token create --print-join-command kubeadm join --tokenbe00f1.f2ef09da1dd56308 192.168.32.132:6443 --discovery-token-ca-cert-hashsha256:5b8ab8d5ec008400192594af0d68396707d20bc01c35ce44503257d69cdbd504
按照上面提示,此时root用户还不能使用kubelet控制集群需要,配置下环境变量:
对于非root用户
mkdir -p$HOME/.kube
cp -i/etc/kubernetes/admin.conf $HOME/.kube/config
chown $(id-u):$(id -g) $HOME/.kube/config
对于root用户
export KUBECONFIG=/etc/kubernetes/admin.conf
也可以直接放到~/.bash_profile
echo "exportKUBECONFIG=/etc/kubernetes/admin.conf" >> ~/.bash_profile
source一下环境变量
source ~/.bash_profile
kubectl version测试:
可以使用flannel、calico、weave、macvlan这里我们用flannel。
下载此文件
wgethttps://raw.githubusercontent.com/coreos/flannel/v0.9.1/Documentation/kube-flannel.yml
或直接使用离线包里面的。
若要修改网段,需要kubeadm --pod-network-cidr=和这里同步:
vim kube-flannel.yml
修改network项
"Network": "10.244.0.0/16",
执行
kubectlcreate -f kube-flannel.yml
使用刚刚kubeadm后的kubeadm join --xxx
kubeadm join--token be00f1.f2ef09da1dd56308 192.168.32.132:6443--discovery-token-ca-cert-hashsha256:5b8ab8d5ec008400192594af0d68396707d20bc01c35ce44503257d69cdbd504
执行kubectl get nodes