1、安装方式
- 基于二进制包一步一步安装(对于学习认识系统有帮助)
- 以守护进程存在
- 基于kubeadm工具快速安装(推荐)
- 以docker形式存在(其实是K8s的pod)
2、系统内核版本最好升到4.4以上,不然容易出现各种奇怪问题
rpm -Uvh http://www.elrepo.org/elrepo-release-7.0-3.el7.elrepo.noarch.rpm
yum --disablerepo="*" --enablerepo="elrepo-kernel" list available
#查看版本
yum --enablerepo=elrepo-kernel install -y kernel-lt
cat /boot/grub2/grub.cfg |grep menuentry
#查看当前已有版本
grub2-set-default 'CentOS Linux (4.4.234-1.el7.elrepo.x86_64) 7 (Core)'
设置开机从新内核启动
3、安装包下载
K8s是google公司基于Borg系统开源的项目,所以安装包全部在google网站上,国内是禁止掉的,目前可以基于阿里云镜像源可以安装最新版到Kubernetes-1.18.6,需要指定版本安装
阿里云源
cat <<EOF > /etc/yum.repos.d/kubernetes.repo
[kubernetes]
name=Kubernetes
baseurl=http://mirrors.aliyun.com/kubernetes/yum/repos/kubernetes-el7-x86_64
enabled=1
gpgcheck=0
repo_gpgcheck=0
gpgkey=http://mirrors.aliyun.com/kubernetes/yum/doc/yum-key.gpg
http://mirrors.aliyun.com/kubernetes/yum/doc/rpm-package-key.gpg
EOF
yum install -y kubelet-1.18.6 kubeadm-1.18.6 kubectl-1.18.6
kubeadm init初始化需要指定地址和版本
kubeadm init --apiserver-advertise-address 192.168.26.131 --pod-network-cidr=10.244.0.0/16 \
--image-repository registry.aliyuncs.com/google_containers --kubernetes-version=v1.18.6
4、网络
默认都是采用flannel(基于VXLAN技术)还支持基于二层host-gw,flannel针对大型的节点网络,会额外增加封装的开销,还有无法实现通讯上的ACL策略控制
5、IPVS和iptables
K8s的service是针对外部访问pod的唯一通道,而实现转发和LB默认都是基于iptables,在大型网络节点或者更多的pod环境下,iptables的规则就会显得很臃肿,而IPVS就是这个结局方案
切换IPVS(默认4.4的内核已经加载好IPVS的支持模块)
kubectl edit cm kube-proxy -n kube-system
mode: "ipvs"
#默认为空
kubectl get pod -n kube-system | grep kube-proxy |awk '{system("kubectl delete pod "$1" -n kube-system")}
删除kube-proxy pod,系统会自动创建
reboot #主节点重启
6、让kubernetes支持命令补全
echo "source <(kubectl completion bash)" >> ~/.bashrc
yum install -y bash-completion
重启后生效
7、bug
集群状态显示不健康状态,其实可以本地看到服务已经启动并且端口是10257和10259,并且pod是Running状态和节点Ready