基于昇腾910B搭建多节点K8s集群

自从 2013 年 Docker 诞生以来,容器一跃成为 IT 界最热门的话题。而 Kubernetes 趁着容器的东风,击败众多竞争对手,成为了“容器编排”领域的King。可以说,现在 Kubernetes 已经没有了实际意义上的竞争对手,它的地位就如同 Linux 一样,成为了事实上的云原生操作系统,是构建现代应用的基石。

一、创建多节点K8s集群

Kubernetes 是很多模块构成的,实现核心功能的组件像 apiserver、etcd、scheduler 等本质上都是可执行文件,所以也可以采用和其他系统差不多的方式,使用 Shell 脚本或者 Ansible 等工具打包发布到服务器上。

不过 Kubernetes 里的这些组件的配置和相互关系实在是太复杂了,用 Shell、Ansible 来部署的难度很高,需要具有相当专业的运维管理知识才能配置、搭建好集群,而且即使这样,搭建的过程也非常麻烦。为了简化 Kubernetes 的部署工作,社区里的人整了一个专门用来在集群中安装 Kubernetes 的工具,名字就叫“kubeadm”,意思就是“Kubernetes 管理员”。

kubeadm,原理和 minikube 类似,也是用容器和镜像来封装 Kubernetes 的各种组件,但它的目标不是单机部署,而是要能够轻松地在集群环境里部署 Kubernetes,并且让这个集群接近甚至达到生产级质量。而在保持这个高水准的同时,kubeadm 还具有了和 minikube 一样的易用性,只要很少的几条命令,如 init、join、upgrade、reset 就能够完成 Kubernetes 集群的管理维护工作,这让它不仅适用于集群管理员,也适用于开发、测试人员。

多节点集群,要求服务器应该有两台或者更多,我部署的 Kubernetes 集群就只有两台910B主机,一台是 Master 节点,另一台是 Worker 节点。当然,后续可以在这个集群里添加更多的节点。Master 节点需要运行 apiserver、etcd、scheduler、controller-manager 等组件,管理整个集群。

Worker 节点没有管理工作,只运行业务应用,所以配置可以低一些。

基于模拟生产环境的考虑,在 Kubernetes 集群之外还需要有一台起辅助作用的服务器。它就是 Console,要在上面安装命令行工具 kubectl,所有对 Kubernetes 集群的管理命令都是从这台主机发出去的。这也比较符合实际情况,因为安全的原因,集群里的主机部署好之后应该尽量少直接登录上去操作。

Console 这台主机只是逻辑上的概念,不一定要是独立,你在实际安装部署的时候完全可以复用 minikube 的虚拟机,或者直接使用 Master/Worker 节点作为控制台。这 3 台主机共同组成了我们的实验环境,所以在配置的时候要注意它们的网络选项,必须是在同一个网段,保证它们使用的是同一个“Host-Only”(VirtualBox)或者“自定”(VMWare Fusion)网络。

二、实操

Kubernetes 对系统有一些特殊要求,必须还要在 Master 和 Worker 节点上做一些准备。这些工作的详细信息都可以在 Kubernetes 的官网上找到,但它们分散在不同的文档里,比较凌乱,所以我把它们整合到了这里,包括改主机名、改 Docker 配置、改网络设置、改交换分区这四步。

  • 第一,由于 Kubernetes 使用主机名来区分集群里的节点,所以每个节点的 hostname 必须不能重名。需要修改“/etc/hostname”这个文件,把它改成容易辨识的名字,比如 Master 节点就叫 master,Worker 节点就叫 worker:
    sudo vi /etc/hostname
  • 第二,虽然 Kubernetes 目前支持多种容器运行时,但 Docker 还是最方便最易用的一种,所以我们仍然继续使用 Docker 作为 Kubernetes 的底层支持,使用 apt 安装 Docker Engine

安装完成后需要你再对 Docker 的配置做一点修改,在“/etc/docker/daemon.json”里把 cgroup 的驱动程序改成 systemd ,然后重启 Docker 的守护进程

cat <<EOF | sudo tee /etc/docker/daemon.json
{
  "exec-opts": ["native.cgroupdriver=systemd"],
  "log-driver": "json-file",
  "log-opts": {
    "max-size": "100m"
  },
  "storage-driver": "overlay2"
}
EOF

sudo systemctl enable docker
sudo systemctl daemon-reload
sudo systemctl restart docker
  • 第三,为了让 Kubernetes 能够检查、转发网络流量,需要修改 iptables 的配置,启用“br_netfilter”模块:
cat <<EOF | sudo tee /etc/modules-load.d/k8s.conf
br_netfilter
EOF

cat <<EOF | sudo tee /etc/sysctl.d/k8s.conf
net.bridge.bridge-nf-call-ip6tables = 1
net.bridge.bridge-nf-call-iptables = 1
net.ipv4.ip_forward=1 # better than modify /etc/sysctl.conf
EOF

sudo sysctl --system
  • 第四,需要修改“/etc/fstab”,关闭 Linux 的 swap 分区,提升 Kubernetes 的性能:
    sudo swapoff -asudo sed -ri '/\sswap\s/s/^#?/#/' /etc/fstab
  • 16
    点赞
  • 18
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
升腾C92是一款计算机主板,BIOS(基本输入/输出系统)是电脑启动时运行的固件程序。升级BIOS可以提供一些新的功能,修复一些漏洞,以及增加系统的稳定性。 首先,在进行任何BIOS升级之前,我们需要确认是否有需要升级的原因。如果主板正常工作没有问题,没有遇到兼容性或功能方面的困扰,升级BIOS并不是必要的。 其次,在升级BIOS之前,我们需要备份原始的BIOS设置。这样,如果升级出现问题,可以恢复到之前的设置。 然后,下载适合升腾C92的最新BIOS版本。可以在升腾官方网站或相关硬件供应商的网站上找到最新的BIOS版本。务必确保下载的BIOS版本是适用于升腾C92的。 接着,将BIOS文件保存到一个可移动的存储设备,如U盘或光盘,并确保存储设备正确格式化。 然后,将存储设备连接到电脑上,并重新启动电脑。在计算机启动过程中,按下相应的按键(通常是Del键或F2键)进入BIOS设置界面。 在BIOS设置界面中,找到固件升级选项。根据主板的不同,可能有不同的选项名称。选择升级固件选项,并选择存储设备中的BIOS文件进行升级。 升级BIOS过程中,需要等待一段时间,直到升级完成。在升级过程中,不要关机或断电,以免造成严重的硬件问题。 最后,完成升级后,重新启动计算机,并检查是否成功升级。可以在BIOS设置界面或在操作系统中查看新的BIOS版本号。 需要注意的是,升级BIOS是一项风险较高的操作,如果升级过程中出现问题,可能导致不可逆转的损坏。如果没有足够的经验和技术知识,建议寻求专业人士的帮助。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值