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
kubeadm配置高可用etcd集群的更多相关文章
- centos7使用kubeadm配置高可用k8s集群
CountingStars_ 关注 2018.08.12 09:06* 字数 464 阅读 88评论 0喜欢 0 简介 使用kubeadm配置多master节点,实现高可用. 安装 实验环境说明 实验 ...
- 03-创建高可用 etcd 集群
本文档记录自己的学习历程! 创建高可用 etcd 集群 kuberntes 系统使用 etcd 存储所有数据,本文档介绍部署一个三节点高可用 etcd 集群的步骤,这三个节点使用以下机器: 192.1 ...
- 如何设置一个生产级别的高可用etcd集群
在之前的文章中,我们详细介绍了K3s的架构以及部署场景,给尚未了解K3s的朋友提供了一个很好的入门方向.那么,在本文中我们将探索如何配置一个3节点的etcd集群,它将会被用于高可用.多节点的K3s集群 ...
- 使用Kubeadm搭建高可用Kubernetes集群
1.概述 Kubenetes集群的控制平面节点(即Master节点)由数据库服务(Etcd)+其他组件服务(Apiserver.Controller-manager.Scheduler...)组成. ...
- Kubernetes1.91(K8s)安装部署过程(三)--创建高可用etcd集群
这里的etcd集群复用我们测试的3个节点,3个node都要安装并启动,注意修改配置文件 1.TLS认证文件分发:etcd集群认证用,除了本机有,分发到其他node节点 scp ca.pem kuber ...
- 用kubeadm创建高可用kubernetes集群后,如何重新添加控制平面
集群信息 集群版本:1.13.1 3个控制平面,2个worker节点 k8s-001:10.0.3.4 k8s-002:10.0.3.5 k8s-003:10.0.3.6 k8s-004:10.0.3 ...
- Nginx 配置高可用的集群
1.什么是 nginx 高可用 (1)需要两台 nginx 服务器 (2)需要 keepalived (3)需要虚拟 ip 2.配置高可用的准备工作 (1)需要两台服务器 192.168.17.129 ...
- kubeadm部署高可用K8S集群(v1.14.2)
1. 简介 测试环境Kubernetes 1.14.2版本高可用搭建文档,搭建方式为kubeadm 2. 服务器版本和架构信息 系统版本:CentOS Linux release 7.6.1810 ( ...
- Kubeadm部署高可用K8S集群
一 基础环境 1.1 资源 节点名称 ip地址 VIP 192.168.12.150 master01 192.168.12.48 master02 192.168.12.242 master03 1 ...
随机推荐
- 数据文件包解析工具类 RandomAccessFile
public class ReadTextFile { public static void main(String[] args) { pic2txt(); parseFrmFile(); //ur ...
- Idea导入Web项目并发布到Tomcat
Idea导入现有的Web项目并发布到Tomcat,发现Tomcat没有自动发布 问题: 导入一个Web项目时,idea并没有把他当成web,所以需要自己修改项目结构 1.导入项目 打开 File-&g ...
- vimrc备个份
set mouse=a set number set smartindent set expandtab set tabstop=4 set shiftwidth=4 set hlsearch set ...
- Java零基础入门面向对象之多态
多态: 多态的概念:一种事物的多种形态:允许不同类的对象对同一消息做出不同的响应 多态的前提:继承,重写:向上转型(父类引用指向子类对象) 多态的作用:提高代码的可用性:降低模块之间的耦合度 多态分类 ...
- python私有变量的分类
- 「Usaco2012 Dec」第一(字典树+拓扑排序)
(我恨字符串) 惯例化简题目:给定n个字符串,可以改变字符的相对大小(在字典序中的大小),问:字符串i是否能成为最小的字符串(字典序) 解题过程: 首先你可以预处理出来26的全排列然后暴力然后你只要用 ...
- VM虚拟机安装Windows Server 2008操作系统
镜像链接:https://pan.baidu.com/s/1_Hv6U3xulqkkKzCYXmNvNQ 提取码:uwph Windows 2008 版本 有标准版.有企业版 群集 双击热备 clus ...
- 2019年10月11号 王庆超 linux
1.计算机操作系统简介 (1)掌握操作系统的定义:操作系统是一个用来协调.管理和控制计算机硬件和软件资源的系统 程序,它位于硬件和应用程序之间. (2)掌握操作系统的内核的定义:操作系统的内核是一个管 ...
- egret清除缓存的方法
1 图片加版本号2 js加版本号3 default.res.json 加版本号 3个缺一不可 ps: egret 里面default.res.json 资源和代码一定要保持一致
- fpm打包神奇rpm包升级python2.7.16
fpm打包神器参考文档:https://www.cnblogs.com/flintlovesam/p/6594635.html FPM的安装:安装ruby环境和gem命令: yum -y instal ...