基于 kubeadm 搭建高可用的kubernetes 1.18.2 (k8s)集群二 搭建高可用集群
1. 部署keepalived - apiserver高可用(任选两个master节点)
1.1 安装keepalived
# 在两个主节点上安装keepalived(一主一备)
$ yum install -y keepalived
1.2 创建keepalived配置文件
# 创建目录
$ ssh <user>@<master-ip> "mkdir -p /etc/keepalived"
$ ssh <user>@<backup-ip> "mkdir -p /etc/keepalived"
# 分发配置文件
$ scp target/configs/keepalived-master.conf <user>@<master-ip>:/etc/keepalived/keepalived.conf
$ scp target/configs/keepalived-backup.conf <user>@<backup-ip>:/etc/keepalived/keepalived.conf
# 分发监测脚本
$ scp target/scripts/check-apiserver.sh <user>@<master-ip>:/etc/keepalived/
$ scp target/scripts/check-apiserver.sh <user>@<backup-ip>:/etc/keepalived/
1.3 启动keepalived
# 分别在master和backup上启动服务
$ systemctl enable keepalived && service keepalived start
# 检查状态
$ systemctl status keepalived
# 查看日志
$ journalctl -f -u keepalived
# 查看虚拟ip
$ ip a
2. 部署第一个主节点
# 准备配置文件
$ scp target/configs/kubeadm-config.yaml <user>@<node-ip>:~
# ssh到第一个主节点,执行kubeadm初始化系统(注意保存最后打印的加入集群的命令)
# $ kubeadm init --config=kubeadm-config.yaml --experimental-upload-certs
$ kubeadm init --config=kubeadm-config.yaml --upload-certs
# copy kubectl配置(上一步会有提示)
$ mkdir -p ~/.kube
$ cp -i /etc/kubernetes/admin.conf ~/.kube/config
# 测试一下kubectl
$ kubectl get pods --all-namespaces
# **备份init打印的join命令**
3. 部署网络插件 - calico
我们使用calico官方的安装方式来部署,请参阅下面的地址
# 创建目录(在配置了kubectl的节点上执行)
$ mkdir -p /etc/kubernetes/addons
# 上传calico配置到配置好kubectl的节点(一个节点即可)
$ scp target/addons/calico* <user>@<node-ip>:/etc/kubernetes/addons/
# addons 有两个配置文件 具体的内容请参阅 上面的那个 Calico配置文件说明 链接地址
# less-50-calico.yaml 节点数量小于50使用的配置文件
# more-50-calico.yaml 节点数量大于50台使用的配置文件
# 官方提供的地址
# 当节点数量大于 50台的时候使用
# curl https://docs.projectcalico.org/manifests/calico-typha.yaml -o calico.yaml
# 当节点数量小于50台使用
# curl https://docs.projectcalico.org/manifests/calico.yaml -O
# 部署calico
# 修改文件名称,根据具体的情况自行修改
$ mv /etc/kubernetes/addons/less-50-calico.yaml calico.yaml
$ kubectl apply -f /etc/kubernetes/addons/calico.yaml
# 查看状态
$ kubectl get pods -n kube-system
4. 加入其它master节点
# 使用之前保存的join命令加入集群
$ kubeadm join ...
# 例如:
$ kubeadm join 172.16.249.133:6443 --token 8mr8km.w3ucsw6gbq50ffpw \
--discovery-token-ca-cert-hash sha256:b7eb3ab4c45577386a6801e166aa7d844a246b5afcaf7890126e1a95bfad3d30 \
--control-plane --certificate-key d5c80e1843f6b0f5eddb0c88d215390dbe2c0ef6d4f6b63463b3c2ef6dfd726e
# 耐心等待一会,并观察日志
$ journalctl -f
# 查看集群状态
# 1.查看节点
$ kubectl get nodes
# 2.查看pods
$ kubectl get pods --all-namespaces
# 遇到问题
# certificate-key 默认2小时的有效期,如果过期按照提示重新生成
error execution phase control-plane-prepare/download-certs: error downloading certs: error downloading the secret: Secret "kubeadm-certs" was not found in the "kube-system" Namespace. This Secret might have expired. Please, run `kubeadm init phase upload-certs --upload-certs` on a control plane to generate a new one
# 使用命令重新生成 certificate-key
# 用新证书替换--certificate-key后面的内容
# 如上面的命令中的:d5c80e1843f6b0f5eddb0c88d215390dbe2c0ef6d4f6b63463b3c2ef6dfd726e
$ kubeadm init phase upload-certs --upload-certs
[upload-certs] Using certificate key:
a542b8308394773278da70ab0d11914f6e048fcd73524ecfef56b3633a39d3f1
5. 加入worker节点
# 使用之前保存的join命令加入集群
$ kubeadm join ...
# 例如
$ kubeadm join 172.16.249.133:6443 --token 8mr8km.w3ucsw6gbq50ffpw \
--discovery-token-ca-cert-hash sha256:b7eb3ab4c45577386a6801e166aa7d844a246b5afcaf7890126e1a95bfad3d30
# 耐心等待一会,并观察日志
$ journalctl -f
# 查看节点
$ kubectl get nodes
# 重新添加节点
# 默认情况下,kubeadm init产生的token的有效期是24个小时,在一天之后才kubeadm join的,用下面的命令来重新产生token
$ kubeadm token create --certificate-key xxxx --print-join-command
例如
kubeadm token create --certificate-key a542b8308394773278da70ab0d11914f6e048fcd73524ecfef56b3633a39d3f1 --print-join-command
# 直接使用 kubeadm token create --print-join-command 也可以
基于 kubeadm 搭建高可用的kubernetes 1.18.2 (k8s)集群二 搭建高可用集群的更多相关文章
- 基于 kubeadm 搭建高可用的kubernetes 1.18.2 (k8s)集群一 环境准备
本k8s集群参考了 Michael 的 https://gitee.com/pa/kubernetes-ha-kubeadm-private 这个项目,再此表示感谢! Michael的项目k8s版本为 ...
- 基于 kubeadm 搭建高可用的kubernetes 1.18.2 (k8s)集群 部署 dashboard 2.x
1. 部署dashboard 2.x版本 Dashboard 分为 1.x版本 和 2.x版本, k8s 使用的是1.18.2 故部署2.x版本的 # dashboard 2.x版本的部署 # 上传d ...
- 基于 kubeadm 搭建高可用的kubernetes 1.18.2 (k8s)集群 三 集群可用性测试
1. 创建nginx ds # 写入配置 $ cat > nginx-ds.yml <<EOF apiVersion: v1 kind: Service metadata: name ...
- Kubernetes实战:高可用集群的搭建和部署
摘要:官方只提到了一句"使用负载均衡器将 apiserver 暴露给工作节点",而这恰恰是部署过程中需要解决的重点问题. 本文分享自华为云社区<Kubernetes 高可用集 ...
- 企业运维实践-还不会部署高可用的kubernetes集群?使用kubeadm方式安装高可用k8s集群v1.23.7
关注「WeiyiGeek」公众号 设为「特别关注」每天带你玩转网络安全运维.应用开发.物联网IOT学习! 希望各位看友[关注.点赞.评论.收藏.投币],助力每一个梦想. 文章目录: 0x00 前言简述 ...
- 手动搭建高可用的kubernetes 集群
之前按照和我一步步部署 kubernetes 集群的步骤一步一步的成功的使用二进制的方式安装了kubernetes集群,在该文档的基础上重新部署了最新的v1.8.2版本,实现了kube-apiserv ...
- 1.还不会部署高可用的kubernetes集群?看我手把手教你使用二进制部署v1.23.6的K8S集群实践(上)
公众号关注「WeiyiGeek」 设为「特别关注」,每天带你玩转网络安全运维.应用开发.物联网IOT学习! 本章目录: 0x00 前言简述 0x01 环境准备 主机规划 软件版本 网络规划 0x02 ...
- Kubernetes实战(一):k8s v1.11.x v1.12.x 高可用安装
说明:部署的过程中请保证每个命令都有在相应的节点执行,并且执行成功,此文档已经帮助几十人(仅包含和我取得联系的)快速部署k8s高可用集群,文档不足之处也已更改,在部署过程中遇到问题请先检查是否遗忘某个 ...
- centos HA高可用集群 heartbeat搭建 heartbeat测试 主上停止heartbeat服务 测试脑裂 两边都禁用ping仲裁 第三十二节课
centos HA高可用集群 heartbeat搭建 heartbeat测试 主上停止heartbeat服务 测试脑裂 两边都禁用ping仲裁 第三十二节课 heartbeat是Linu ...
随机推荐
- 10 微信小程序路由跳转
一.四种跳转方式 API路由详解 除了tabBar这种底部跳转的方法,我们还有路由跳转,以下四种方式: 1. wx.switchTab() :跳转到 tabBar 页面,并关闭其他所有非 tabBar ...
- Linux编程实现递归查找文件
命令格式如下:SCRIPT_NAME SEARCH_ON_DIR SEARCH_FILENAME #!/bin/bash Find(){ files=`` for file i ...
- 图形学_Bezier曲线
Bezier曲线由n个控制点生成,举个例子:当n=2时,点$P_0$.$P_1$之间遵从计算: $P_0=(1-t)P_0+tP_1$ 而推广为n维时,有: $P^n_0=(1-t)P^{n-1}_0 ...
- IDOC日志查询报表
当不知道IDOC同步的具体时间,而WE02数据量过大时: 当某条IDOC记录中数据量过大,找不到具体某条数据时: 可采用自开发程序查找,具体代码如下: REPORT ZIDOC_LOG. *----- ...
- 浅谈mybatis如何半自动化解耦和ORM实现
在JAVA发展过程中,涌现出一系列的ORM框架,JPA,Hibernate,Mybatis和Spring jdbc,本系列,将来研究Mybatis. 通过研究mybatis源码,可将mybatis的大 ...
- linux 修改时间同步到BIOS
设置时间和日期例如:将系统日期设定成2020年4月14日的命令 命令 : "date -s 04/14/2020" 将系统时间设定成下午5点55分55秒的命令 命令 : " ...
- python --文件读取数据
读取整个文件: 首先创建一个文件,例如我创建了一个t x t文件了. 然后我想读取这个文件了,我首先将上面的这个文件保存在我即将要创建的Python的文件目录下, 即读取文件成功. 解析: 函数ope ...
- 手把手golang教程【二】——数组与切片
本文始发于个人公众号:TechFlow,原创不易,求个关注 今天是golang专题的第五篇,这一篇我们将会了解golang中的数组和切片的使用. 数组与切片 golang当中数组和C++中的定义类似, ...
- 【基准测试】BenchmarkDotNet介绍
BenchmarkDotNet 概述 BenchmarkDotNet helps you to transform methods into benchmarks, track their perfo ...
- 对background: url("~assets/img/common/collect.svg") 0 0/14px 14px 的理解
需求:给收藏数字前面通过::before伪元素添加图标 相关代码: .goods-info .collect { position: relative; } .goods-info .collect: ...