自己在学习k8s时,也是摸石头过河,踩了很多坑,记录下来,给初学者一些启发,光看《k8s权威指南》是学不会的
二进制安装k8s,参考网上很多教程,比如<手工搭建k8s>。按照这些教程,安装etcd,docker,k8s的组件,这些步骤都做完后,但是通过命令:
kubectl get nodes
// 发现两个node节点都是not ready
然后一顿百度,发现家可能是虚拟机,在一台机器上,没有网络划分的问题,但是我在多台机器上部署,需要需要网络插件oci,于是我选择了为docker量身定制的flannel。按照<k8s集群上安装flannel网络>,发现怎么都启动不起来。然后各种百度问题,找到一些靠谱的解释:<etcd在k8s集群上的使用>, 原因大概是etcd有v2和v3两个版本,而这个连个版本存在着巨大的差距,于是问题定位到了etcd这边。网上文档说etcdv3可以同时支持v2和v3的客户端,并且v2和v3存储的数据不是互通的。
这其中就有部署etcd的小插曲,etcd最简单的就是一切采用默认参数运行,这样确实很好,但是却出问题了。主要是如下两个问题,需要修改配置文件
1、首先是外部电脑无法访问etcd,只能在本机访问。
2、v2版本的客户端无法访问。
ETCD_DATA_DIR="/var/lib/etcd/defualt.etcd"
# 10.19.12.199使其他机器能够访问 ETCD_LISTEN_CLIENT_URLS=http://10.19.12.199:2379,http://localhost:2379 ETCD_NAME="default" ETCD_ENABLE_V2=true
// 之前配置的2380端端口,但是V2客户端访问时提示是2380端口,修改为2379就好了 ETCD_ADVERTISE_CLIENT_URLS="http://10.19.12.199:2379"
这样flannel就能够启动了。
参考博客:etcd安装所遇到的坑