k8s之external-etcd集群管理
一、概述
kubernetes使用etcd作为数据中心,使用kubeadm部署kubernetes的时候默认会自己部署一个etcd,当然也可以将kubeadm部署的单点的etcd做成集群,但是比较麻烦,所以我们使用的是自建
的etcd集群即external etcd cluster。在使用kubeadm初始化集群的时候指定etcd为external。
具体kubeadm的init config参考我的另外一篇blog:https://www.cnblogs.com/cuishuai/p/10149727.html
etcd集群的搭建参考:https://www.cnblogs.com/cuishuai/p/9897006.html
本片blog不再赘述详细的搭建过程,主要记录一下etcd集群的管理。
二、Etcd Cluster 管理
1、准备etcdctl
默认etcd部署采用的是etcd-v2,kubernetes默认使用的是v3,所以直接使用etcdctl在etcd里查不到任何关于kubernetes的信息,v2和v3有很大的差距,可以从v2迁移到v3,但是不能往回迁。
想要使用必须指定etcd api 为v3,作如下操作:
# vim ~/.bashrc
#etcd
host1='10.42.13.230:2379' host2='10.42.43.147:2379' host3='10.42.150.212:2379' endpoints=$host1,$host2,$host3
alias etcdctl='etcdctl --endpoints=$endpoints --key /etc/etcd/ssl/etcd-key.pem --cert /etc/etcd/ssl/etcd.pem --cacert /etc/kubernetes/ssl/ca.pem'
export ETCDCTL_API=
#使修改生效
#source ~/.bashrc
现在使用etcdctl查看kubernetes的信息:
查看所有的key:
etcdctl get --prefix "" --keys-only
删掉所有的key:
etcdctl del --prefix ""
查看以calico开头的所有的key:
etcdctl get --prefix "/calico" --keys-only
使用etcdctl可以管理很多etcd的内容,具体的可以使用etcdctl --help查看。
2、etcd集群添加节点
添加节点前的准备:
!集群必须是奇数个节点
!重新创建etcd的证书,将所有要添加的ip都加进去,参考https://www.cnblogs.com/cuishuai/p/9897006.html
!为新的etcd服务创建启动文件,参考https://www.cnblogs.com/cuishuai/p/9897006.html,需要做一些简单的修改:
#cat /etc/systemd/system/etcd.service
[Unit]
Description=Etcd Server
After=network.target
After=network-online.target
Wants=network-online.target
Documentation=https://github.com/coreos [Service]
Type=notify
WorkingDirectory=/var/lib/etcd/
EnvironmentFile=-/etc/etcd/etcd.conf
ExecStart=/opt/bin/etcd \
--name=etcd-host3 \
--cert-file=/etc/etcd/ssl/etcd.pem \
--key-file=/etc/etcd/ssl/etcd-key.pem \
--peer-cert-file=/etc/etcd/ssl/etcd.pem \
--peer-key-file=/etc/etcd/ssl/etcd-key.pem \
--trusted-ca-file=/etc/kubernetes/ssl/ca.pem \
--peer-trusted-ca-file=/etc/kubernetes/ssl/ca.pem \
--initial-advertise-peer-urls=https://10.42.10.90:2380 \
--listen-peer-urls=https://10.42.10.90:2380 \
--listen-client-urls=https://10.42.10.90:2379,http://127.0.0.1:2379 \
--advertise-client-urls=https://10.42.10.90:2379 \
--initial-cluster-token=etcd-cluster- \
--initial-cluster=etcd-host0=https://10.42.13.230:2380,etcd-host1=https://10.42.43.147:2380,etcd-host2=https://10.42.150.212:2380,etcd-host3=https://10.42.10.90:2380 \
--initial-cluster-state=exsiting \
--data-dir=/var/lib/etcd Restart=on-failure
RestartSec=
LimitNOFILE= [Install]
WantedBy=multi-user.target
--initial-cluster-state修改为existing
创建数据目录:
mkdir /var/lib/etcd
添加节点:
etcdctl member add --endpoints=https://10.42.10.90:2379 etcd-host3 https://10.42.10.90:2380
启动etcd实例
systemctl start etcd
systemctl enable etcd
查看:
etcdctl endpoint health
etcdctl member list
3、移除节点
找到需要移除节点的memberid:
etcdctl member list
移除:
etcdctl member remove [memberid]
4、etcd集群数据备份与恢复
!数据备份
准备备份路径
mkdir -p /data/backup/etcd
开始备份:
etcdctl snapshot save /data/backup/etcd/snapshot-$(date +%Y%m%d%H%M).db
查看snapshot文件的状态:
etcdctl snapshot status /data/backup/etcd/snapshot-.db
!数据恢复
写了一个脚本,现在集群假设是3个节点,名称一次为etcd-host0、etcd-host1、etcd-host2:
#cat etcdrestoe.sh
#!/bin/bash h0=10.42.13.230
h1=10.42.43.147
h2=10.42.150.212 for i in h0 h1 h2
do etcdctl snapshot restore snapshot.db \
--data-dir=/var/lib/etcd \
--name=$i \
--initial-cluster=etcd-host0=https://$h0:2380,etcd-host1=https://$h1:2380,etcd-host2=https://$h2:2380 \
--initial-cluster-token=etcd-cluster- \
--initial-advertise-peer-urls=https://$i:2380 && \ mv /var/lib/etcd/ etcd_$i done
把生成的etcd_10.42.13.230、etcd_10.42.43.147、etcd_10.42.150.212分别覆盖各自节点之前的/var/lib/etcd下面的数据。
k8s之external-etcd集群管理的更多相关文章
- Kubernetes(k8s)集群部署(k8s企业级Docker容器集群管理)系列之自签TLS证书及Etcd集群部署(二)
0.前言 整体架构目录:ASP.NET Core分布式项目实战-目录 k8s架构目录:Kubernetes(k8s)集群部署(k8s企业级Docker容器集群管理)系列目录 一.服务器设置 1.把每一 ...
- Kubernetes(k8s)集群部署(k8s企业级Docker容器集群管理)系列目录
0.目录 整体架构目录:ASP.NET Core分布式项目实战-目录 k8s架构目录:Kubernetes(k8s)集群部署(k8s企业级Docker容器集群管理)系列目录 一.感谢 在此感谢.net ...
- Kubernetes(k8s)集群部署(k8s企业级Docker容器集群管理)系列之集群部署环境规划(一)
0.前言 整体架构目录:ASP.NET Core分布式项目实战-目录 k8s架构目录:Kubernetes(k8s)集群部署(k8s企业级Docker容器集群管理)系列目录 一.环境规划 软件 版本 ...
- Kubernetes(k8s)集群部署(k8s企业级Docker容器集群管理)系列之flanneld网络介绍及部署(三)
0.前言 整体架构目录:ASP.NET Core分布式项目实战-目录 k8s架构目录:Kubernetes(k8s)集群部署(k8s企业级Docker容器集群管理)系列目录 一.flanneld介绍 ...
- Kubernetes(k8s)集群部署(k8s企业级Docker容器集群管理)系列之部署master/node节点组件(四)
0.前言 整体架构目录:ASP.NET Core分布式项目实战-目录 k8s架构目录:Kubernetes(k8s)集群部署(k8s企业级Docker容器集群管理)系列目录 1.部署master组件 ...
- 2、二进制安装K8s 之 部署ETCD集群
二进制安装K8s 之 部署ETCD集群 一.下载安装cfssl,用于k8s证书签名 二进制包地址:https://pkg.cfssl.org/ 所需软件包: cfssl 1.6.0 cfssljson ...
- k8s之创建etcd集群
主机规划 maste01——192.168.10.63 master02——192.168.10.64 node01——192.168.10.65 node02——192.168.10.66 1.为保 ...
- 一键部署etcd集群管理脚本
一.编写脚本 1 #!/bin/sh 2 # 安装 3 # ./run.sh etcd03 etcd01=http://192.168.2.44:2380,etcd02=http://192.168. ...
- k8s集群之上运行etcd集群
一.知识点: 1.headless services NOTE:: 我们在k8s上运行etcd集群,集群间通告身份是使用dns,不能使用pod ip,因为如果pod被重构了ip会变,在这种场景中不能直 ...
- 灵雀云:etcd 集群运维实践
[编者的话]etcd 是 Kubernetes 集群的数据核心,最严重的情况是,当 etcd 出问题彻底无法恢复的时候,解决问题的办法可能只有重新搭建一个环境.因此围绕 etcd 相关的运维知识就比较 ...
随机推荐
- 2019.03.28 bzoj3594: [Scoi2014]方伯伯的玉米田(二维bit优化dp)
传送门 题意咕咕咕 思路:直接上二维bitbitbit优化dpdpdp即可. 代码: #include<bits/stdc++.h> #define N 10005 #define K 5 ...
- $("").append无反应
网页中F12看控制台提示“ReferenceError: $ is not defined” 解决: script src路径出了问题,改为 <script type="text/ja ...
- Executors创建的4种线程池的使用
Java通过Executors提供四种线程池,分别为:newCachedThreadPool创建一个可缓存线程池,如果线程池长度超过处理需要,可灵活回收空闲线程,若无可回收,则新建线程.newFixe ...
- python生成exe文件
安装pyinstaller pyinstaller支持python2和python3 命令行安装:pip install pyinstaller pyinstaller --icon=duoguan. ...
- 可遇不可求的Question之MySqlClient的Guid 类型的映射篇
关于 Guid 类型的映射 MySql 没有原生的 Guid 类型,一般使用 binary(16) 或者 char(36) 这两个类型.早期版本的 Connector/Net 将 binary(16) ...
- EF学习笔记(十) 处理并发
总目录:ASP.NET MVC5 及 EF6 学习笔记 - (目录整理) 上一篇:EF学习笔记(九):异步处理和存储过程 本篇原文链接:Handling Concurrency Concurrency ...
- 关于c++的一篇随笔
众所周知c++是一门极其深奥的学科,正因为其深奥之处,才会让人们觉得学习起来特别难.当然,我想说我自己也不例外,想起当初就像一场噩梦一样,直到今日还历历在目.尽管如此,c++还是一门相当有魅力的课程, ...
- MySQL优化技巧
目录 MySQL的特点 数据类型优化 整型类型 小数类型 字符串类型 时间类型 主键类型的选择 特殊类型的数据 索引优化 一个使用Hash值创建索引的技巧 前缀索引 多列索引 聚簇索引 覆盖索引 重复 ...
- 项目Alpha冲刺(团队6/10)
项目Alpha冲刺(团队6/10) 团队名称: 云打印 作业要求: 项目Alpha冲刺(团队) 作业目标: 完成项目Alpha版本 团队队员 队员学号 队员姓名 个人博客地址 备注 221600412 ...
- ScrollView嵌套子View的getDrawingCache为空的解决方法
ScrollView嵌套子View的getDrawingCache为空的解决方法 问题 将组件的显示布局改为可以滚动的,然后用ScrollView作为了View的父类,发现View的getDrawin ...