kubeadm配置高可用etcd集群

操作系统为ubuntu18
kubernetes版本为v1.15.1

k8s默认在控制平面节点上的kubelet管理的静态pod中运行单个成员的etcd集群,但这不是高可用的方案。
etcd高可用集群至少需要三个成员组成。

etcd默认端口为2379,2380,三个节点的这两个端口都要能通。
可以在kubeadm配置文件更改默认端口。

这个实验有五个服务器。
我开的腾讯云香港服务器做的实验,网速很快,ssh稳定。
百度云没测。
阿里云测试不给力。
推荐腾讯云。
k8s1: master1?
k8s2: node1
k8s3: haproxy
k8s4: master2
k8s5: master3

1.首先在k8s master1上安装kubeadm,kubelet,kubectl,然后kubeadm init,最后kubectl get nodes,确认k8s1 master1准备就绪。
k8s安装: ubuntu18安装kubernetes v1.15

2.分别在k8s node1,k8s master2,k8s master3上安装kubeadm,kubectl,kubelet
k8s安装: ubuntu18安装kubernetes v1.15

3.在k8s master1上的kubeadm-init.out文件找到join worker node和 join control-plane node的命令。

4.分别在k8s master2和k8s master3上执行join命令,注意,—control-plane
kubeadm join k8s1:6443 --token 8vqitz.g1qyah1wpd3n723o
? ? --discovery-token-ca-cert-hash sha256:abd9a745b8561df603ccd58e162d7eb11b416feb4a7bbe1216a3aa114f4fecd9
? ? --control-plane --certificate-key 0e1e2844d565e657465f41707d8995b2d9d64246d5f2bf90f475b7782343254f

5.在node1上执行join命令
kubeadm join k8s1:6443 --token 8vqitz.g1qyah1wpd3n723o
? ? --discovery-token-ca-cert-hash sha256:abd9a745b8561df603ccd58e162d7eb11b416feb4a7bbe1216a3aa114f4fecd9?

6.现在master1 , master2, master3都可以执行kubectl管理k8s集群。
kubectl get nodes
显示有三个master,一个node.

7.安装haproxy负载均衡
apt-get update?
apt-get install haproxy -y
cd /etc/haproxy
cp haproxy.conf haproxy.conf.bak
在defaults下面
log global
mode tcp
option tcplog
frontend proxynode
? ? bind *:80
? ? stats uri /proxystats
? ? default_backend k8s-qq
backend k8s-qq
? ? balance roundrobin
? ? server master1 172.19.0.12:6443 check
? ? server master2 172.19.0.8:6443 check
? ? server master3 172.19.0.4:6443 check
systemctl restart haproxy
systemctl enable haproxy

8.查看haproxy
https://k8s3.example.com/proxystats
能看到三个后端服务器

9.查看运行etcd的pod
kubectl -n kube-system get pods | grep etcd
这里我们能看到k8s1,k8s2,k8s3上分别运行etcd?

10.查看etcd的日志
kubectl -n kube-system logs etcd-k8s1?
kubectl -n kube-system logs etcd-k8s1 -f

11.登录到另一个etcd的pod上检查etcd集群状态
kubectl -n kube-system exec -it k8s2 — /bin/sh
/# ETCDCTL_API=3 etcdctl -w table
—endpoints 172.19.0.12:2379, 172.19.0.4:2379, 172.19.0.8:2379
—cacert /etc/kubernetes/pki/etcd/ca.crt
—cert /etc/kubernetes/pki/etcd/server.crt
—key /etc/kubernetes/pki/etcd/server.key
endpoint status
这里会显示我们的三个etcd,其中一个为true,二个为false.

12.测试故障转移

12.1.假设现在k8s2为ture,ssh登录到k8s2,然后关闭docker
systemctl stop docker

12.2.查看节点信息
kubectl get node
显示k8s2为NotReady状态。

12.3.在k8s3上再次查看endpoint status,发现k8s2现在为false,现在k8s3为true

12.4.不能关闭k8s1的docker测试,关闭k8s1,整个集群不可用。

12.5.查看haproxy的统计报告。

12.6测试完后,启动docker

原文地址:https://www.cnblogs.com/51redhat/p/11951537.html

时间: 2024-11-07 03:49:26

kubeadm配置高可用etcd集群的相关文章

kubeadm部署高可用K8S集群(v1.14.0)

一. 集群规划 主机名 IP 角色 主要插件 VIP 172.16.1.10 实现master高可用和负载均衡 k8s-master01 172.16.1.11 master kube-apiserver.kube-controller.kube-scheduler.kubelet.kube-proxy.kube-flannel.etcd k8s-master02 172.16.1.12 master kube-apiserver.kube-controller.kube-scheduler.k

heartbeat v2配置高可用web集群和基于nfs搭建MySQL高可用集群

安装环境:Centos 6.4, httpd2.4,mysql5.5,heartbeat v2 提供两台机器node1和node2,在/etc/hosts文件中添加名称解析,并且主机名称要与节点名称要相同,即uname -n的名称要和hosts定义的名称必须一样. #   IP                         HOSTNAME             ALIAS 10.204.80.79     node1.mylinux.com     node1 10.204.80.80  

Kubernetes(K8s)安装部署过程(三)--创建高可用etcd集群

这里的etcd集群复用我们测试的3个节点,3个node都要安装并启动,注意修改配置文件 1.TLS认证文件分发:etcd集群认证用,除了本机有,分发到其他node节点 scp ca.pem kubernetes-key.pem kubernetes.pem [email protected]10.10.90.106:/etc/kubernetes/ssl scp ca.pem kubernetes-key.pem kubernetes.pem [email protected]10.10.90.

Nginx 配置高可用的集群

1.什么是 nginx 高可用? “高可用性”(High Availability)通常来描述一个系统经过专门的设计,从而减少停工时间,而保持其服务的高度可用性.Nginx于Keepalived可以实现高可用,实现双机热备+自动切换: 2.但是怎么实现实现双机热备+自动切换呢? 需要在服务器安装 keepalive,以及编写脚本:以下开始搭建 3.环境准备 3.1 (1)需要两台 nginx 服务器 (2)需要 keepalived (3)需要虚拟 ip 3.2      配置高可用的准备工作

nginx+keepalived+tomcat配置高可用web集群

基本架构: 角色 ip 安装软件 作用 主机名 nginx主 192.168.247.129 nginx+keepalived 反向代理 nginxmaster.com nginx备 192.168.247.130 nginx+keepalived 反向代理 nginxsalve.com tomcat1 192.168.247.128 tomcat web服务器 tomcat1.com tomcat2 192.168.247.131 tomcat web服务器 tomcat2.com nfs主

高可用RabbitMQ集群安装配置

RabbitMQ集群安装配置+HAproxy+Keepalived高可用 rabbitmq 集群 消息队列 RabbitMQ简介 RabbitMQ是流行的开源消息队列系统,用erlang语言开发.RabbitMQ是AMQP(高级消息队列协议)的标准实现. AMQP,即Advanced Message Queuing Protocol,高级消息队列协议,是应用层协议的一个开放标准,为面向消息的中间件设计.消息中间件主要用于组件之间的解耦,消息的发送者无需知道消息使用者的存在,反之亦然.AMQP的主

CentOS Linux 负载均衡高可用WEB集群之LVS+Keepalived配置

CentOS Linux 负载均衡高可用WEB集群之LVS+Keepalived配置 LB集群是locd balance集群的简称.翻译成中文是:负载均衡集群的意思:集群是一组相互独立的.通过高速网络互联的计算机相互之间构成一个组合,并以单一的系统的模式加以管理.LVS是Linux Virtual Server的简写,翻译中文是Linux虚拟服务器,是一个虚拟的服务器集群系统. 负载均衡集群:是为了企业提供更为实用,性价比更高的系统机构解决方案.负载均衡集群把用户的请求尽可能的平均分发到集群的各

直接路由的高可用LVS集群配置

 直接路由的高可用LVS集群配置: 调度服务器IP:(106.3.43.240)192.168.11.100,节点服务器分别为:192.168.11.101,192.168.11.102 一.安装ipvsadmin: 1.yum -y install ipvsadmin(推荐用第一种方法) 2.下载http://www.linuxvirtualserver.org/software/,找到相应的版本: 注意对应自己的内核版本 ipvsadm-1.24.tar.gz tar zxvf ipvs

搭建高可用mongodb集群(一)——配置mongodb

搭建高可用mongodb集群(一)--配置mongodb 在大数据的时代,传统的关系型数据库要能更高的服务必须要解决高并发读写.海量数据高效存储.高可扩展性和高可用性这些难题.不过就是因为这些问题Nosql诞生了. NOSQL有这些优势: 大数据量,可以通过廉价服务器存储大量的数据,轻松摆脱传统mysql单表存储量级限制. 高扩展性,Nosql去掉了关系数据库的关系型特性,很容易横向扩展,摆脱了以往老是纵向扩展的诟病. 高性能,Nosql通过简单的key-value方式获取数据,非常快速.还有N