首页 > 虚拟化 > kubernetes1.9版本集群配置向导
2018
03-16

kubernetes1.9版本集群配置向导

说明

使用kubeadm创建kubernetes环境是单个节点,需要对kube-api做高可用,这里使用keepalived对3个master节点kubernetes api做高可用,etcd也部署到3台master节点。网络使用CoreDNS+kube-router,随后再使用kube-proxy,以便你还不熟悉coredns和kube-route

kube-router取代kube-proxy,用lvs做svc负载均衡
coredns取代kube-dns,DNS更稳定,也可以看github上我写的kubernetes集群安装文档

https://github.com/bbotte/bbotte.com/blob/master/kubernetes_cluster_install_1.9.4.md

版本号

下载链接

度娘网盘:https://pan.baidu.com/s/14kBym3dnBInqX73aZFW3ZA 密码:0r8i

docker download

etcd download

kubeadm、kubelet、kubectl、kubernetes-cni可以在国外云主机

至于gcr.io/google_containers的docker包,docker pull image:latest拉下来,再docker save -o image.tar保存,拖到本地主机导入docker load < image.tar

初始化系统

配置keepalived

ip a 查看主机的VIP是否绑定

生成证书

TLS证书用于etcd和kubernetes通信间加密,使用sfss工具来生成证书

创建配置文件

signing:表示该证书可用于签名其它证书
server auth:表示 client 可以用该 CA 对 server 提供的证书进行验证
client auth:表示 server 可以用该 CA 对 client 提供的证书进行验证
“CN”:Common Name,kube-apiserver 从证书中提取该字段作为请求的用户名 (User Name),浏览器使用该字段验证网站是否合法
“O”:Organization,kube-apiserver 从证书中提取该字段作为请求用户所属的组 (Group)

生成证书

/etc/etcd/ssl目录手动创建,并把生成的证书推送到3个master节点

etcd集群创建

安装etcd的rpm包即可,修改etcd默认配置如下

上面注释需的地方需要根据环境更改,注释影响启动的话,直接删除,还需要的操作,并启动etcd服务

启动etcd的时候卡住? 如果是etcd集群,只启动一个etcd服务的话会这样,当启动第二个etcd服务的时候,第一个etcd马上就启动好

查看etcd服务状态

如果重置了kubernetes集群,即kubeadm reset,需要停止etcd服务,并删除/var/lib/etcd/目录下文件,以免影响新创建的k8s集群

tips:  etcd主机如果有一台意外关机,另外2台状态正常

出意外的主机启动etcd服务提示

移除/var/lib/etcd文件夹

解决方式,编辑etcd配置文件后,再次启动

由于etcdctl_api错误的问题:

安装docker服务

docker的ip改不改无所谓,不过cgroupdriver需要k8s master和 node节点统一

如果用度娘网盘的压缩包,直接 yum localinstall -y *.rpm

node节点的docker配置

kubernetes集群和node节点cgroupdriver都使用systemd

kubernetes master节点操作

安装rpm包

导入images

kubernetes & etcd 用同样的证书

配置kubernetes master节点

token:

关于ip地址段,docker的ip默认统一为 172.17.0.1,上面安装docker的时候修改为了172.18.1.1,其实修不修改无所谓。IP地址段主要一个是node主机节点的IP,一个是pod的IP

node主机ip范围,每一个节点(master和node)必须有一个24位掩码的网段,比如 10.244.0.1/24、 10.244.1.1/24,网卡为 kube-bridge,所以下面用21位的子网掩码,集群最多可以是8台(包括master和node)

kubernetes pod IP范围(不能和docker或物理网络子网冲突):

默认是10.96.0.0/12,即pod的ip数量最大为 1048574,第一个可用ip : 10.96.0.1

最后一个可用ip :10.111.255.254

初始化kubeadm

有问题查看/var/log/message

查看kubernetes服务状态

 

配置kube-rouer

删除kube-proxy,现在因为kube-router也提供服务代理。运行以下命令来删除kube-proxy并清除它可能已经完成的任何iptables配置。

扩展其他主节点

k8smaster02和k8smaster03节点一样执行初始化kubeadm

master2和master3都加入集群后,确保kube-proxy被删除

配置kubernetes node节点

node节点安装docker,kubeadm、kubectl、kubelet、kubernetes-cni后,导入kube-proxy、kube-router、pause 3个images

执行kubeadm join即可,在master节点查看k8s服务状态

这时候coredns是单节点的,需要扩展为3个节点

k8s1.9版本的dashboard界面

再安装完traefik后,随机关闭一台master节点,测试服务可用性,证明服务可以不间断访问

这时候在浏览器访问3个node ip中某一个都可以,加上nodeport暴露的端口,NODE_IP:32655即可打开kubernetes-dashboard界面

DNS使用默认的kube-dns

(kubedns/dnsmasq/sidecar)

kubedns监控master节点服务和终结点的变化,dnsmasq就是一个轻量级dns服务器

重置kubernetes集群

修改kubernetes配置,取消coredns

进行初始化

查看状态,需要node节点

kubernetes 1.9 calico插件

calico插件离线tar包链接:https://pan.baidu.com/s/1XFY6O5GMPj7X5nzZgB_iHA 密码:985d

kubernetes1.9版本集群配置向导 - 第1张  | linux工匠|关注运维自动化|Python开发|linux高可用集群|数据库维护|性能提优|系统架构

遇到的错误

 

感谢

http://www.toxingwang.com/cloud/3127.html

https://k8smeetup.github.io/docs/setup/independent/high-availability/

https://www.kubernetes.org.cn/3536.html

https://mritd.me/2017/10/09/set-up-kubernetes-1.8-ha-cluster/

https://kubernetes.io/docs/setup/independent/high-availability/

https://docs.nginx.com/nginx/admin-guide/high-availability/ha-keepalived-nodes/

https://github.com/bbotte/kube-router/blob/master/Documentation/kubeadm.md

http://blog.51cto.com/net592/2059315

最后编辑:
作者:bbotte

kubernetes1.9版本集群配置向导》有 3 条评论

  1. 增大网 说:

    我踩故我在,下次还会来!

  2. 为啥我又来,因为这里百看不厌!

  3. 人不学不知义!特来学习学习!

留下一个回复

你的email不会被公开。