文章目录

  • 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-高可用部署-详细-生产环境(四)相关推荐

  1. Rabbitmq集群高可用部署详细

    清风万里的季节,周末本该和亲人朋友一起消遣这烂漫的花花草草,或是懒洋洋的晒个太阳听听风声鸟鸣.无奈工作使然,理想使然,我回到啦公司,敲起啦键盘,撸起啦代码,程序狗的世界一片黯然,一片黯然,愿天下所有努 ...

  2. RabbitMQ 集群高可用部署详细介绍

    链接:cnblogs.com/knowledgesea/p/6535766.html 清风万里的季节,周末本该和亲人朋友一起消遣这烂漫的花花草草,或是懒洋洋的晒个太阳听听风声鸟鸣.无奈工作使然,理想使 ...

  3. Sentry 高可用部署

    Sentry 高可用部署,部署分析基于Sentry 10.1.0.dev 05e720a7 对应dockerhub镜像版本分别为: getsentry/snuba:31c967e774759c0548 ...

  4. 20 kubeadm高可用部署1.23以上k8s版本

    文章目录 KubeAdmin安装k8s 1.集群类型 2.安装方式 一.准备环境 1.部署软件.系统要求 2.节点规划 二.kubeadm安装k8s 1.内核优化脚本(所有机器) 2. 免密脚本(所有 ...

  5. 详解 K8S 高可用部署,超详细

    一.前言 二.基础环境部署 1)前期准备(所有节点) 2)安装容器 docker(所有节点) 3)配置 k8s yum 源(所有节点) 4)将 sandbox_image 镜像源设置为阿里云 goog ...

  6. Mysql+Heartbeat+Drbd生产环境高可用部署若干问题解惑

    Mysql+Heartbeat+Drbd生产环境高可用部署若干问题解惑: ############################################################ # ...

  7. 谁再说不会 K8S 高可用部署,就把这个给他甩过去!

    点关注公众号,回复"1024"获取2TB学习资源! 官网:https://kubernetes.io/ 文档:https://kubernetes.io/zh-cn/docs/ho ...

  8. Windows Admin Center 高可用部署

    本文老王将为大家实作Windows Admin Center的高可用部署,相信有了高可用的架构支持将更进一步推进该产品的落地 环境介绍 08dc2 lan 10.0.0.2 255.0.0.0 16s ...

  9. openstack Cinder 架构分析、高可用部署与核心功能解析

    目录 文章目录 目录 Cinder Cinder 的软件架构 cinder-api cinder-scheduler cinder-volume Driver 框架 Plugin 框架 cinder- ...

最新文章

  1. Git Manual / Git使用手册 / Git, GitLab, Git Bash, TortoiseGit (建议全文复制到Word文档中通过导航窗格查看)...
  2. 使用tf.print()打印tensor内容
  3. 对于《软件工程》课程的认识
  4. pyhon-matplotlib包-数据图形化
  5. mysql 忘记密码处理方式
  6. Unity toLua加载lua的流程
  7. SourceOffSite
  8. Android EditText属性android:inputType类型介绍
  9. 图像的仿射变换原理、Homography、alpha通道以及python实现
  10. 《游戏引擎架构》信息总汇
  11. Android 锁屏功能
  12. Java文件操作、IO流
  13. Audio AudioFocus流程
  14. 安卓高级计算器完整版
  15. canvas 制作简易涂鸦画板(教程)
  16. DP 转 HDMI视频信号转换 CS5263替代IT6563
  17. 《游戏设计艺术(第2版)》——学习笔记(24)第24章 其他玩家有时会形成社群
  18. 英语期刊写作-通往国际学术舞台的阶梯第八,九章答案
  19. python report_ReportPortal(自动化报表统一平台)的搭建与python推送
  20. nodejs 传递参数

热门文章

  1. “区块链第一考”今天结束,史上首张“区块链技术软件开发师”证书即将发放...
  2. 一名前端开发者的2020年终总结
  3. php配置libzip,PHP配置Configure报错:Please reinstall the libzip distribution
  4. 八年级计算机教案下册,八年级信息技术下册教案
  5. Go项目实现优雅关机与平滑重启
  6. QA特辑 | 看了这场直播,我找到了设备指纹“从不说谎”的原因
  7. C语言:地铁信息管理系统
  8. 解决ubuntu系统与window系统时间不一致的办法
  9. 腾讯Web前端JX框架入门教程(一)
  10. Win10 19044.2075系统版本更新修复内容说明