[基础架构十一]:3分钟装好k8s HA集群
前言:本篇介绍k8s高可用集群的自动化安装版本:k8s 1.12.1coreOS1855 准备工作:完成前篇《基础架构八:coreOS的安装》 相关代码与资源:安装脚本git clone https://github.com/Thomas-YangHT/k8s-ha-autoinstall.git...
前言:
-
本篇介绍k8s高可用集群的自动化安装
-
版本:
-
k8s 1.12.1
-
coreOS1855
-
准备工作:
-
完成前篇《基础架构八:coreOS的安装》
相关代码与资源:
-
安装脚本
-
git clone https://github.com/Thomas-YangHT/k8s-ha-autoinstall.git
-
-
下载需要的镜相
-
百度网盘 :
-
coreos-k8s.tgz https://pan.baidu.com/s/1KT6ZzDic3sAfaY0QlQZbTw
-
coreosbase2.tgz https://pan.baidu.com/s/141I6ctxuGtFfiD8tRHfz_g
-
-
或者git clone https://github.com/Thomas-YangHT/coreos-k8s-ha-tgz-zip.git
-
HA基本结构:
-
3主多从, 坏任一台不影响集群工作
-
前端:keepalived's VIP+haproxy's 8443 to real IP's 6443
-
外部etcd三台集群
01文件说明
-
CONFIG ---安装配置文件
-
install.sh ---安装执行脚本
-
fab_inst.py ---fabric执行程序,由install.sh调用
-
coreos-tgz ---k8s1.12.1所需基础镜相与配置
-
ha.tgz ---keepalived/haproxy/etcd三个集群安装基础镜相
-
coreosbase2 ---CoreOS 1855.4版本KVM基础镜相 20G硬盘;
-
其它文件说明见README.md
02 安装步骤
一.下载好相关文件放于同一目录,见(相关代码与资源);
二.调整好KVM虚拟机并clone三主一从(可多从);
三.修改CONFIG配置文件相关IP与主机名;
三主一从的配置示例 :红色部分是三主一从及VIP等配置,需要根据实际情况修改,绿色部分用于clone虚拟机脚本自动配置
四.执行安装: sh -x install.sh allha
03 验证安装
-
安装完毕会显示dashboard 的nodeport端口与登陆token
-
使用firefox 登录dashboard:(任一结点IP的nodeport端口)
04 相关步骤分解说明:
-
keepalived
-
docker run脚本: docker-keepalived.sh 由fab-inst.py安装时调用在每台服务器上运行
-
-
haproxy
-
haproxy.cfg :由haproxy_conf.sh根据CONFIG自动生成,不必理睬
-
docker run脚本: docker-haproxy.sh 由fab-inst.py安装时调用在每台服务器上运行
-
-
etcd
-
SSL证书生成脚本:etcdssl.sh生成证书放于SSL目录,自动调用不必理睬
-
docker run脚本:docker-etcd.sh 由fab-inst.py安装时调用在每台服务器上运行
-
配置参考:https://kubernetes.io/docs/setup/independent/setup-ha-etcd-with-kubeadm/
-
状态检查:etcdctl --key-file ssl/etcd-key.pem --cert-file ssl/etcd.pem --ca-file ssl/ca.pem --endpoints=https://192.168.253.31:2379cluster-health
-
sh install.sh etcdcheck
-
-
installha.sh p1: 准备好coreos-k8s.tgz, k8s1.12.1基础镜相到各服务器
-
installha.sh p5:准备好ha.tgz,包括config/haproxy/keepalived/etcd,并启动集群三件套haproxy/keepalived/etcd
-
master1:
-
kubeadm init --config kubeadm-config.yaml
-
tar ca files
-
scp 回宿主机
-
init后,三running三pending状态正常:
-
-
master2:
-
scp 到master2/3
-
master2/3: sh install.sh master2
-
-
calico网络
-
见问题一
-
-
dashboard:
-
1.10版本,需token登陆,见验证环节
-
-
node:
-
结点 join到集群
-
05 Q&A
-
问题一:calico 网络问题:
-
像单master安装时一样apply后,发现calico node一直不正常,重启,coredns也是;查calico-etcd有三个,member list只有一个,官网只有单master的介绍,etcd.yaml是个daemonset, 会在每个master上启一个etcd pod, 可导致calico etcd的服务不正常, 连锁反应是calico node/coredns/dashboard等都不正常;
-
解决方法一:
-
把calico etcd的daemonset 改为deployment, replicas 设为1
-
-
方法二:
-
把etcd的指向到kubernetes集群的etcd上去,configmap里配置好ca验证
-
参考:http://blog.51cto.com/newfly/2085836
-
-
方法三
-
用打标签的方法让calico etcd只运行在指定的master上,临时解决方法,没法高可用;
-
-
改etcd.yaml, nodeselector, =master1
-
kubectl label nodes master1 node-role.kubernetes.io/master=master1--overwrite
-
reboot所有结点或删除重启calico相关pods
-
-
-
-
问题二:无外网情况下,kubeadm init 后,无coredns/kube-proxy的pods出现:
-
调通网络
-
-
问题三:k8s集群kubeadm的官方介绍方法有两种:
-
方法一是使用k8s自身的etcd,安装起来速度慢,常出现莫名的故障;
-
方法二即自建外部etcd的方法,速度快且稳定,install.sh采用此方法;
-
-
问题四:重新安装
-
先执行 sh install.sh reset
-
-
问题五:etcd备份
-
etcd集群数据:/var/lib/etcd
-
calico etcd数据: /var/etcd
-
06 install.sh的更多用法
参考资料
-
https://cloud.tencent.com/developer/article/1138668
-
http://www.cnblogs.com/chenjingbiao/articles/9213620.html
-
http://www.ebanban.com/?p=677&from=singlemessage&isappinstalled=0
-
https://kubernetes.io/docs/setup/independent/high-availability/
-
http://blog.51cto.com/newfly/2288088
往期链接:
进入公众号 -> 输入help或index
Linux命令速查,如lsof
更多推荐
所有评论(0)