k8s集群环境的搭建(一)

简介: k8s集群环境的搭建

一.安装前的环境规划


1.集群类型


● Kubernetes集群大致分为两类:一主多从和多主多从。

● 一主多从:一个Master节点和多台Node节点,搭建简单,但是有单机故障风险,适合用于测试环境。

● 多主多从:多台Master和多台Node节点,搭建麻烦,安全性高,适合用于生产环境。


a6fc75b4fc2044448b44382c3958ddc2.png


为了测试方便,本次搭建的是一主多从类型的集群。


2.安装方式


● kubernetes有多种部署方式,目前主流的方式有kubeadm、minikube、二进制包。

● ① minikube:一个用于快速搭建单节点的kubernetes工具。

● ② kubeadm:一个用于快速搭建kubernetes集群的工具。

● ③ 二进制包:从官网上下载每个组件的二进制包,依次去安装,此方式对于理解kubernetes组件更加有效。


我们需要安装kubernetes的集群环境,但是又不想过于麻烦,所以选择kubeadm方式。


3.主机规划


本案例做一主两从的k8s集群。我买不起服务器,所以创了3台虚拟机来学习。大家要进行学习的话,创建好3台虚拟机,并且选择NAT连接。


下面的一些配置根据自己电脑vMnet8的网段(NAT模式需要保证虚拟机网段与VMnet 8一致!!!)来配置,不然无法上网,就更别谈安装k8s集群了。


我查看虚拟机的网络配置(你们可能会不一样,请按如下方式查看):


98bbdb24aa7a4468a519d8bcc9e5784f.png

2d10367c1cc74188b5943fbfac68b734.png


我们上面显示网段为192.168.172.0,所以配置网络时要把IP地址设为这个网段下的IP地址,网关也是如此。

(比如IP地址可以设置192.168.172.2 ~ 192.168.172.254之间的IP地址,默认网关为192.168.172.1,子网掩码255.255.255.0)


网关是不能随便配置的!比如你的网关是192.168.0.1,那么局域网内可设的ip就是192.168.0.2~192.168.0.254

如果你的网关是192.168.1.1,那么局域网内可设的ip就是192.168.1.2~192.168.1.254。


为了方便操作,我下面3台机器的IP地址和其他信息如下,供大家参考:


image.png

下面教大家如何安装时配置虚拟机的网络:


(1)点击网络和主机名


eb279fd5660b41dabe0ce5c5b5633fea.png


(2)点击配置按钮


6bac75a2e94d42969d24d63e16321a55.png


(3)选择ipv4设置,进行如下的配置(再次提醒,下面的设置一定要根据自己电脑vMnet8的网段来设置,不要抄我的),然后保存。


68f26e44bd204121a41789647c4f1638.png


223.5.5.5是阿里云的DNS。


(4)保存后如下,然后更改主机名:


e32a680fd9ae48eab94999d41338dd94.png

d2c1c0063e2e42f1995cdc45c395399c.png


然后就可以开始安装了。


其他两台以此类推,自己安装一下吧,有什么问题,我们评论区互动。


4.搭建流程


● ① 准备 3 台机器,要求网络互通(如果是云服务器,要求私网互通;如果是虚拟机,要求网络互通)。

● ② 在 3 台机器上安装 Docker 容器化环境。

● ③ 安装 Kubernetes :

○ 3 台机器安装核心组件:kubeadm(创建集群的引导工具)、kubelet 、kubectl(程序员使用的命令行)。

○ kubelet 可以直接通过容器化的方式创建出 Kubernetes 的核心组件,如:Controller Manager、Scheduler 等。

○ 由 kubeadm 引导创建 Kubernetes 集群。


二.Kubernetes集群的安装


1.Kubernetes 和 Docker 之间的版本对应关系


Kubernetes 和 Docker 之间是有版本对应关系的,这也是一开始我踩的坑之一。下面就教大家如何查看Kubernetes 和 Docker 之间的版本对应关系。


打开官方的文档,我们这次要安装kubernetes的版本是v1.21的版本。


ef4c3ddd81f24479bb7ebd9108df7aac.png


我们找到点进去就能查看到对应安装的docker版本了。


从文档中,我们可以知道 Docker 的版本是 v20.10 ,对应的 Kubernetes 的版本是 v1.21 。


2.准备工作


(1)检查操作系统的版本和内核


cat /etc/redhat-release


用 kubeadm安装k8s集群,centos的版本得是7.5以上,不然可能会出问题。


dee6bf3c8c2f44828501a156c187564a.png


查看当前系统的内核:


uname -sr


默认的内核版本 3.10.0 实在是太低了,建议升级一下。具体操作如下:

①在 CentOS 7.x 上启用 ELRepo 仓库:


rpm --import https://www.elrepo.org/RPM-GPG-KEY-elrepo.org


rpm -Uvh https://www.elrepo.org/elrepo-release-7.0-4.el7.elrepo.noarch.rpm


②查看可用的系统内核相关包,并安装最新主线内核版本::


yum --disablerepo="*" --enablerepo="elrepo-kernel" list available


yum -y --enablerepo=elrepo-kernel install kernel-ml

③设置默认的内核版本:


vim /etc/default/grub


GRUB_TIMEOUT=5
GRUB_DISTRIBUTOR="$(sed 's, release .*$,,g' /etc/system-release)"
GRUB_DEFAULT=0 # 修改此处,原来是 saved
GRUB_DISABLE_SUBMENU=true
GRUB_TERMINAL_OUTPUT="console"
GRUB_CMDLINE_LINUX="crashkernel=auto rd.lvm.lv=centos/root rd.lvm.lv=centos/swap rhgb quiet"
GRUB_DISABLE_RECOVERY="true"


④重新创建内核配置:


grub2-mkconfig -o /boot/grub2/grub.cfg


⑤重启系统:


reboot


da39d340cf904919884ddd3999abcac5.png


(2)如果是虚拟机则需要让三台机器互通,最简单的做法就是关闭防火墙。


systemctl stop firewalld


systemctl disable firewalld


如果是云厂商提供的云服务器则需要让三台机器的私有 IP 互通,还需要设置安全组策略放行指定的端口。


b591ea49a9bc4976bec8eb1a37328622.png


① Master 节点:


image.png


② Node 节点:


image.png

3)设置主机名


命令:


hostnamectl set-hostname <hostname>



示例如下:


# 192.168.172.101
hostnamectl set-hostname k8s-master


# 192.168.172.102
hostnamectl set-hostname k8s-node1
# 192.168.172.103
hostnamectl set-hostname k8s-node2

e4aff77f4c8442818b02c2512e92c27f.png


相关实践学习
通过Ingress进行灰度发布
本场景您将运行一个简单的应用,部署一个新的应用用于新的发布,并通过Ingress能力实现灰度发布。
容器应用与集群管理
欢迎来到《容器应用与集群管理》课程,本课程是“云原生容器Clouder认证“系列中的第二阶段。课程将向您介绍与容器集群相关的概念和技术,这些概念和技术可以帮助您了解阿里云容器服务ACK/ACK Serverless的使用。同时,本课程也会向您介绍可以采取的工具、方法和可操作步骤,以帮助您了解如何基于容器服务ACK Serverless构建和管理企业级应用。 学习完本课程后,您将能够: 掌握容器集群、容器编排的基本概念 掌握Kubernetes的基础概念及核心思想 掌握阿里云容器服务ACK/ACK Serverless概念及使用方法 基于容器服务ACK Serverless搭建和管理企业级网站应用
相关文章
|
2月前
|
缓存 Kubernetes Docker
GitLab Runner 全面解析:Kubernetes 环境下的应用
GitLab Runner 是 GitLab CI/CD 的核心组件,负责执行由 `.gitlab-ci.yml` 定义的任务。它支持多种执行方式(如 Shell、Docker、Kubernetes),可在不同环境中运行作业。本文详细介绍了 GitLab Runner 的基本概念、功能特点及使用方法,重点探讨了流水线缓存(以 Python 项目为例)和构建镜像的应用,特别是在 Kubernetes 环境中的配置与优化。通过合理配置缓存和镜像构建,能够显著提升 CI/CD 流水线的效率和可靠性,助力开发团队实现持续集成与交付的目标。
|
4天前
|
运维 分布式计算 Kubernetes
ACK One多集群Service帮助大批量应用跨集群无缝迁移
ACK One多集群Service可以帮助您,在无需关注服务间的依赖,和最小化迁移风险的前提下,完成跨集群无缝迁移大批量应用。
|
2月前
|
缓存 容灾 网络协议
ACK One多集群网关:实现高效容灾方案
ACK One多集群网关可以帮助您快速构建同城跨AZ多活容灾系统、混合云同城跨AZ多活容灾系统,以及异地容灾系统。
|
3月前
|
Kubernetes Ubuntu 网络安全
ubuntu使用kubeadm搭建k8s集群
通过以上步骤,您可以在 Ubuntu 系统上使用 kubeadm 成功搭建一个 Kubernetes 集群。本文详细介绍了从环境准备、安装 Kubernetes 组件、初始化集群到管理和使用集群的完整过程,希望对您有所帮助。在实际应用中,您可以根据具体需求调整配置,进一步优化集群性能和安全性。
167 12
|
3月前
|
Prometheus Kubernetes 监控
OpenAI故障复盘 - 阿里云容器服务与可观测产品如何保障大规模K8s集群稳定性
聚焦近日OpenAI的大规模K8s集群故障,介绍阿里云容器服务与可观测团队在大规模K8s场景下我们的建设与沉淀。以及分享对类似故障问题的应对方案:包括在K8s和Prometheus的高可用架构设计方面、事前事后的稳定性保障体系方面。
|
3月前
|
Kubernetes 网络协议 应用服务中间件
Kubernetes Ingress:灵活的集群外部网络访问的利器
《Kubernetes Ingress:集群外部访问的利器-打造灵活的集群网络》介绍了如何通过Ingress实现Kubernetes集群的外部访问。前提条件是已拥有Kubernetes集群并安装了kubectl工具。文章详细讲解了Ingress的基本组成(Ingress Controller和资源对象),选择合适的版本,以及具体的安装步骤,如下载配置文件、部署Nginx Ingress Controller等。此外,还提供了常见问题的解决方案,例如镜像下载失败的应对措施。最后,通过部署示例应用展示了Ingress的实际使用方法。
94 2
|
3月前
|
存储 Kubernetes 关系型数据库
阿里云ACK备份中心,K8s集群业务应用数据的一站式灾备方案
本文源自2024云栖大会苏雅诗的演讲,探讨了K8s集群业务为何需要灾备及其重要性。文中强调了集群与业务高可用配置对稳定性的重要性,并指出人为误操作等风险,建议实施周期性和特定情况下的灾备措施。针对容器化业务,提出了灾备的新特性与需求,包括工作负载为核心、云资源信息的备份,以及有状态应用的数据保护。介绍了ACK推出的备份中心解决方案,支持命名空间、标签、资源类型等维度的备份,并具备存储卷数据保护功能,能够满足GitOps流程企业的特定需求。此外,还详细描述了备份中心的使用流程、控制台展示、灾备难点及解决方案等内容,展示了备份中心如何有效应对K8s集群资源和存储卷数据的灾备挑战。
|
4月前
|
Kubernetes 监控 Cloud Native
Kubernetes集群的高可用性与伸缩性实践
Kubernetes集群的高可用性与伸缩性实践
105 1
|
5月前
|
JSON Kubernetes 容灾
ACK One应用分发上线:高效管理多集群应用
ACK One应用分发上线,主要介绍了新能力的使用场景
|
5月前
|
Kubernetes 持续交付 开发工具
ACK One GitOps:ApplicationSet UI简化多集群GitOps应用管理
ACK One GitOps新发布了多集群应用控制台,支持管理Argo CD ApplicationSet,提升大规模应用和集群的多集群GitOps应用分发管理体验。

热门文章

最新文章