Kubeadm-K8s1.20-高可用部署-详细-生产环境(四)
文章目录
- kubeadm部署高可用集群
- 注意事项
- k8s部署 二进制与高可用的区别
- 一、环境配置
- 1、所有节点修改主机名
- 2、所有节点进行域名解析
- 3、所有节点关闭相关应用
- 3.1、防火墙关闭
- 3.2、dnsmasq关闭
- 3.3、NetworkManager关闭
- 3.4、关闭SWAP分区
- 3.5、检查MAC和product_uuid
- 4、所有节点获取相关软件
- 4.1、获取aliyun源
- 4.2、获取docker-yum源
- 4.3、配置k8s-Yum源
- 4.4、安装必备工具
- 5、所有节点时间同步
- 5.1、安装ntpdate
- 5.2、时间同步
- 5.3、计划任务时间同步
- 6、所有节点实现Linux的资源限制
- 7、master1进行免密
- 二、内核配置
- 1、所有节点进行升级update、重启
- 2、所有节点升级内核
- 2.1、master1获取RPM包
- 2.2、master1拷贝至所有节点
- 2.3、安装内核
- 2.3、更改内核启动方式
- 3、所有节点安装与配置ipvsadm
- 1、安装软件
- 2、配置内核参数
- 3、配置生效
- 4、开启k8s必须的内核参数
- 5、重启,加载内核
- 三、基本组件安装、配置
- 1、所有节点部署Docker
- 1.1、安装docker-ce
- 1.2、修改 CgroupDriver 为 systemd
- 1.3、开机自启动Docker
- 2、所有节点安装k8s组件
- 2.1、查看可安装的k8版本
- 2.2、安装kubeadm
- 2.3、配置默认的拉取镜像仓库
- 2.4、设置kubelet开机自启
- 四、高可用组件安装、配置
- 1、master节点部署Haproxy
- 1.1、安装haproxy
- 1.2、编写haproxy配置
- 2、master节点部署keepalived
- 2.1、安装keepalived
- 2.2、配置keepalived
- a、master1配置
- b、master2配置
- c、master3配置
- 2.3、创建对应的脚本文件
- 2.4、脚本授权
- 3、master节点启动LB与HA
- 1、开机自启动
- 2、检测VIP可用性
- 五、集群初始化
- 1、master1编写yaml配置文件
- 2、master所有节点提前拉取镜像
- 2.1、master1拉取镜像
- 2.2、master2拉取镜像
- 2.3、master3拉取镜像
- 3、所有节点自启动kubelet
- 4、master1进行初始化
- 4.1、master1节点进行初始化
- 4.1.1、初始化失败,进行的操作
- 4.2、master1节点配置环境变量
- 4.3、kubelet命令补全
- 5、所有节点加入集群
- 5.1、master节点加入集群
- 5.2、node节点加入集群
- 5.3、master1再次查看集群信息
- 六、master1 网络插件 Calico 部署
- 1、下载所需的源码文件
- 2、修改yaml配置文件
- 2.1、修改etcd_endpoints为master节点IP
- 2.2、将etcd的CA证书进行加密、赋值
- 2.3、将值对内容进行替换
- 2.4、定义Calico的网段
- 3、执行配置文件
- 4、calico网络测试
- 七、Master1 部署 Metrics
- 1、Master1节点操作
- 2、master1节点apply
- 3、查看效果
- 八、Master1 部署 Dashboard
- 1、指定版本安装(本实验)
- 2、安装最新版本(二选一)
- 2.1、官网指定命令执行
- 2.2、创建管理员用户
- 3、登入Web页面
- 3.1、更改dashboard的svc为NodePort
- 3.2、再次查看svc
- 3.3、访问Web页面
- 3.4、获取token
- 3.5、登入Web页面查看
- 九、kube-proxy开启 ipvs
- 1、Mastrer1 修改模式
- 2、更新kube-proxy
- 3、所有节点进行验证
- 十、学会查看官方文档 -> kubectl备忘录
- 十一、测试环境节省资源,驱离Node节点
- 1、驱离 k8s-node1
- 2、驱离k8s-node2
- 3、测试查看
- 十二、问题解决
- 1、加入集群的 Token 过期
- 1.1、生成Node节点加入集群的 Token
- 1.2、生成Master节点加入集群的 --certificate-key
- 2、master节点 无法部署非系统Pod
- 2.1、查看污点
- 2.2、取消污点
- 3、修改NodePort的默认端口
kubeadm部署高可用集群
注意事项
最新的版本不一定好,但相对于旧版本,核心功能稳定,但新增功能、接口相对不稳
学会一个版本的 高可用部署,其他版本操作都差不多
不要使用带中文的服务器
宿主机尽量不要使用克隆(可能在后期calico网络部署时,pod网络不同的问题),使用全新的机器
宿主机尽量升级到CentOS 7.9
内核kernel升级到 4.19+ 这种稳定的内核
部署k8s版本时,尽量找 1.xx.5 这种大于5的小版本(这种一般是比较稳定的版本)
k8s版本在一年之内进行更新一次
master在测试环境 为 2核3G
node节点在测试环境为 2核2G
k8s部署 二进制与高可用的区别
二进制部署
- 部署难,管理方便,集群伸展性能好
- 更稳定,集群规模到达一定的规模(几百个节点、上万个Pod),二进制稳定性是要高于kubeadm部署
- 遇到故障,宿主机起来了,进程也会起来
kubeadm部署
- 部署简单,管理难
- 是以一种容器管理容器的方式允许的组件及服务,故障恢复时间比二进制慢
- 遇到故障,启动宿主机,在启动进程,最后去启动容器,集群才能恢复,速度比二进制慢
一、环境配置
Sys-Version | hostname | IP地址 | 性能 |
---|---|---|---|
CentOS7.9 | k8s-master1 | 192.168.178.51 | 2核3G |
CentOS7.9 | k8s-master2 | 192.168.178.52 | 2核3G |
CentOS7.9 | k8s-master3 | 192.168.178.53 | 2核3G |
CentOS7.9 | k8s-node1 | 192.168.178.54 | 2核2G |
CentOS7.9 | k8s-node2 | 192.168.178.55 | 2核2G |
Sys-Version | APP |
---|---|
v1.20.12 | Kubernetes |
v20.10.10 | Docker |
v3.15.3 | Calico |
v2.0.4 | Dashboard |
1、所有节点修改主机名
# hostnamectl set-hostname k8s-master1
# hostnamectl set-hostname k8s-master2
# hostnamectl set-hostname k8s-master3
# hostnamectl set-hostname k8s-node1
# hostnamectl set-hostname k8s-node2
2、所有节点进行域名解析
# vi /etc/hosts
192.168.178.51 k8s-master1
192.168.178.52 k8s-master2
192.168.178.53 k8s-master3
192.168.178.200 k8s-master-lb #此为VIP的地址
192.168.178.54 k8s-node1
192.168.178.55 k8s-node2
3、所有节点关闭相关应用
3.1、防火墙关闭
# systemctl disable --now firewalld
# setenforce 0
# sed -i '/^SELINUX=/cSELINUX=disabled' /etc/selinux/config
3.2、dnsmasq关闭
#没有该目录就直接跳过
# systemctl disable --now dnsmasq
3.3、NetworkManager关闭
# systemctl disable --now NetworkManager
3.4、关闭SWAP分区
# swapoff -a && sysctl -w vm.swappiness=0
# sed -ri '/^[^#]*swap/s@^@#@' /etc/fstab
3.5、检查MAC和product_uuid
# ip link
# cat /sys/class/dmi/id/product_uuid
4、所有节点获取相关软件
4.1、获取aliyun源
# curl -o /etc/yum.repos.d/CentOS-Base.repo https://mirrors.aliyun.com/repo/Centos-7.repo
# yum install -y yum-utils device-mapper-persistent-data lvm2
4.2、获取docker-yum源
# yum-config-manager --add-repo https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
4.3、配置k8s-Yum源
cat <<EOF > /etc/yum.repos.d/kubernetes.repo
[kubernetes]
name=Kubernetes
baseurl=https://mirrors.aliyun.com/kubernetes/yum/repos/kubernetes-el7-x86_64/
enabled=1
gpgcheck=1
repo_gpgcheck=1
gpgkey=https://mirrors.aliyun.com/kubernetes/yum/doc/yum-key.gpg https://mirrors.aliyun.com/kubernetes/yum/doc/rpm-package-key.gpg
EOF# sed -i -e '/mirrors.cloud.aliyuncs.com/d' -e '/mirrors.aliyuncs.com/d' /etc/yum.repos.d/CentOS-Base.repo
4.4、安装必备工具
# yum install wget jq psmisc vim net-tools telnet yum-utils device-mapper-persistent-data lvm2 git bash-completion lrzsz -y
5、所有节点时间同步
5.1、安装ntpdate
# rpm -ivh http://mirrors.wlnmp.com/centos/wlnmp-release-centos.noarch.rpm
# yum install ntpdate -y
5.2、时间同步
# ln -sf /usr/share/zoneinfo/Asia/Shanghai /etc/localtime
# echo 'Asia/Shanghai' >/etc/timezone
# ntpdate time2.aliyun.com
5.3、计划任务时间同步
# systemctl enable --now crond
# crontab -e
添加并保存退出,每隔5秒进行时间同步
*/5 * * * * /usr/sbin/ntpdate time2.aliyun.com
# crontab -l
*/5 * * * * /usr/sbin/ntpdate time2.aliyun.com
6、所有节点实现Linux的资源限制
# ulimit -SHn 65535
# vim /etc/security/limits.conf
#在末尾进行追加,保存退出
* soft nofile 65536
* hard nofile 131072
* soft nproc 65535
* hard nproc 655350
* soft memlock unlimited
* hard memlock unlimited
7、master1进行免密
生成公钥
# ssh-keygen -t rsa公钥推送
# for i in k8s-master1 k8s-master2 k8s-master3 k8s-node1 k8s-node2;do ssh-copy-id -i .ssh/id_rsa.pub $i;done
二、内核配置
1、所有节点进行升级update、重启
# yum update -y --exclude=kernel*
# reboot
2、所有节点升级内核
2.1、master1获取RPM包
[root@k8s-master1 ~]# wget http://193.49.22.109/elrepo/kernel/el7/x86_64/RPMS/kernel-ml-devel-4.19.12-1.el7.elrepo.x86_64.rpm[root@k8s-master1 ~]# wget http://193.49.22.109/elrepo/kernel/el7/x86_64/RPMS/kernel-ml-4.19.12-1.el7.elrepo.x86_64.rpm
2.2、master1拷贝至所有节点
# for i in k8s-master2 k8s-master3 k8s-node1 k8s-node2;do scp kernel-ml-4.19.12-1.el7.elrepo.x86_64.rpm kernel-ml-devel-4.19.12-1.el7.elrepo.x86_64.rpm $i:/root/ ; done
2.3、安装内核
# cd /root/
# yum localinstall -y kernel-ml*
2.3、更改内核启动方式
# grub2-set-default 0 && grub2-mkconfig -o /etc/grub2.cfg# grubby --args="user_namespace.enable=1" --update-kernel="$(grubby --default-kernel)"# grubby --default-kernel#reboot
3、所有节点安装与配置ipvsadm
1、安装软件
# yum install ipvsadm ipset sysstat conntrack libseccomp -y
2、配置内核参数
Kubeadm-K8s1.20-高可用部署-详细-生产环境(四)相关推荐
- Rabbitmq集群高可用部署详细
清风万里的季节,周末本该和亲人朋友一起消遣这烂漫的花花草草,或是懒洋洋的晒个太阳听听风声鸟鸣.无奈工作使然,理想使然,我回到啦公司,敲起啦键盘,撸起啦代码,程序狗的世界一片黯然,一片黯然,愿天下所有努 ...
- RabbitMQ 集群高可用部署详细介绍
链接:cnblogs.com/knowledgesea/p/6535766.html 清风万里的季节,周末本该和亲人朋友一起消遣这烂漫的花花草草,或是懒洋洋的晒个太阳听听风声鸟鸣.无奈工作使然,理想使 ...
- Sentry 高可用部署
Sentry 高可用部署,部署分析基于Sentry 10.1.0.dev 05e720a7 对应dockerhub镜像版本分别为: getsentry/snuba:31c967e774759c0548 ...
- 20 kubeadm高可用部署1.23以上k8s版本
文章目录 KubeAdmin安装k8s 1.集群类型 2.安装方式 一.准备环境 1.部署软件.系统要求 2.节点规划 二.kubeadm安装k8s 1.内核优化脚本(所有机器) 2. 免密脚本(所有 ...
- 详解 K8S 高可用部署,超详细
一.前言 二.基础环境部署 1)前期准备(所有节点) 2)安装容器 docker(所有节点) 3)配置 k8s yum 源(所有节点) 4)将 sandbox_image 镜像源设置为阿里云 goog ...
- Mysql+Heartbeat+Drbd生产环境高可用部署若干问题解惑
Mysql+Heartbeat+Drbd生产环境高可用部署若干问题解惑: ############################################################ # ...
- 谁再说不会 K8S 高可用部署,就把这个给他甩过去!
点关注公众号,回复"1024"获取2TB学习资源! 官网:https://kubernetes.io/ 文档:https://kubernetes.io/zh-cn/docs/ho ...
- Windows Admin Center 高可用部署
本文老王将为大家实作Windows Admin Center的高可用部署,相信有了高可用的架构支持将更进一步推进该产品的落地 环境介绍 08dc2 lan 10.0.0.2 255.0.0.0 16s ...
- openstack Cinder 架构分析、高可用部署与核心功能解析
目录 文章目录 目录 Cinder Cinder 的软件架构 cinder-api cinder-scheduler cinder-volume Driver 框架 Plugin 框架 cinder- ...
最新文章
- Git Manual / Git使用手册 / Git, GitLab, Git Bash, TortoiseGit (建议全文复制到Word文档中通过导航窗格查看)...
- 使用tf.print()打印tensor内容
- 对于《软件工程》课程的认识
- pyhon-matplotlib包-数据图形化
- mysql 忘记密码处理方式
- Unity toLua加载lua的流程
- SourceOffSite
- Android EditText属性android:inputType类型介绍
- 图像的仿射变换原理、Homography、alpha通道以及python实现
- 《游戏引擎架构》信息总汇
- Android 锁屏功能
- Java文件操作、IO流
- Audio AudioFocus流程
- 安卓高级计算器完整版
- canvas 制作简易涂鸦画板(教程)
- DP 转 HDMI视频信号转换 CS5263替代IT6563
- 《游戏设计艺术(第2版)》——学习笔记(24)第24章 其他玩家有时会形成社群
- 英语期刊写作-通往国际学术舞台的阶梯第八,九章答案
- python report_ReportPortal(自动化报表统一平台)的搭建与python推送
- nodejs 传递参数
热门文章
- “区块链第一考”今天结束,史上首张“区块链技术软件开发师”证书即将发放...
- 一名前端开发者的2020年终总结
- php配置libzip,PHP配置Configure报错:Please reinstall the libzip distribution
- 八年级计算机教案下册,八年级信息技术下册教案
- Go项目实现优雅关机与平滑重启
- QA特辑 | 看了这场直播,我找到了设备指纹“从不说谎”的原因
- C语言:地铁信息管理系统
- 解决ubuntu系统与window系统时间不一致的办法
- 腾讯Web前端JX框架入门教程(一)
- Win10 19044.2075系统版本更新修复内容说明