Docker
1、4台虚拟机 master-192.168.142.250 s1-192.168.142.251 s2-192.168.142.252 s3-192.168.142.253
2、禁用防火墙
$ systemctl stop firewalld
$ systemctl disable firewalld
下面先安装master
3、安装软件 yum -y install etcd kubernetes
4、/etc/etcd/etcd.conf 监听ip从127.0.0.1改为0.0.0.0
5、/etc/kubernetes/apiserver 监听ip从127.0.0.1改为0.0.0.0 KUBE_ADMISSION_CONTROL去掉鉴权,即serviceAccont
6、启动服务
for SERVICES in etcd kube-apiserver kube-controller-manager kube-scheduler; do
systemctl restart $SERVICES
systemctl enable $SERVICES
systemctl status $SERVICES
done
7、检查服务是否正常
kubectl get componentstatuses
8、etcdctl mk /atomic.io/network/config '{"Network":"172.17.0.0/16"}'
很多教程是写的是etcdctl mk /coreos.com/network/config '{"Network":"172.17.0.0/16"}'
但是后面在slave中启动flannel时,启动失败,原因是找不到/atomic.io/network(其实这个前缀是可配的,在/etc/sysconfig/flanneld文件中 FLANNEL_ETCD_PREFIX="/atomic.io/network")
下面安装slave
1、yum -y install flannel kubernetes
2、/etc/sysconfig/flanneld 中的etcd的ip要修改
3、/etc/kubernetes/config 中的kube-master的ip也要修改
4、/etc/kubernetes/kubelet
KUBELET_ADDRESS 自身ip地址要修改
KUBELET_HOSTNAME 要修改为真实ip或其它不重名的机器名
KUBELET_API_SERVER 要修改
5、启动服务(注意次序,flanneld必须在docker之前,否则的docker的地址就会重复)
for SERVICES in kube-proxy kubelet flanneld docker; do
systemctl restart $SERVICES
systemctl enable $SERVICES
systemctl status $SERVICES
done
100、在master上,kubectl get nodes 应该可以看到每个node了。但是这次vmware上安装的k8s看不到。卡在这里了,还搞不清楚是为什么。(找到问题了,修改kubelet的配置文件时,KUBELET_HOSTNAME="--hostname-override=127.0.0.1" 这个要改为真实ip,而不能是主机名。主要是因我的dns服务器中没有配置这个主机名的记录)
(virtulbox上的可以看到,但是在创建控制器时,每次都要去访问docker.io,其实我本地已经有镜像了,另外,原来畅通的网络,安装了k8s后,也不通了。还没有找到原因)
(找到原因了,是路由表中多了记录,可以跑成功了,参见其它几篇文章)
101、k8s启动正常,例子也运行正常。通过http://192.168.56.241:30001/ http://192.168.56.242:30001/ http://192.168.56.243:30001/ 都可以访问,但是看到的内容不同步。
因为 redis 主从网络有问题。定位发现几个docker的ip地址是相同的,这是有问题的,flannel网络中,docker的地址应该是不同的。flannel启动时,会去查询etcd,获取一个没有使用的subnet,并记录在/run/flannel/subnet.env中,docker的启动文件也会修改/run/flannel/docker。
etcdctl ls /atomic.io/network/subnets
/atomic.io/network/subnets/172.17.20.0-24
/atomic.io/network/subnets/172.17.87.0-24
/atomic.io/network/subnets/172.17.59.0-24
/atomic.io/network/subnets/172.17.101.0-24
怀疑是我的虚拟机中有nat网卡导致的,把4个虚拟机的nat网卡都删掉。结果k8s启动失败。每台机器都要手工增加默认路由,k8s就可以启动了。(ip route add default via 192.168.56.240 dev enp0s8 ),每个docker也是不同的ip地址了。
然后再跑例子,三个页面同步了。