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


相关实践学习
深入解析Docker容器化技术
Docker是一个开源的应用容器引擎,让开发者可以打包他们的应用以及依赖包到一个可移植的容器中,然后发布到任何流行的Linux机器上,也可以实现虚拟化,容器是完全使用沙箱机制,相互之间不会有任何接口。Docker是世界领先的软件容器平台。开发人员利用Docker可以消除协作编码时“在我的机器上可正常工作”的问题。运维人员利用Docker可以在隔离容器中并行运行和管理应用,获得更好的计算密度。企业利用Docker可以构建敏捷的软件交付管道,以更快的速度、更高的安全性和可靠的信誉为Linux和Windows Server应用发布新功能。 在本套课程中,我们将全面的讲解Docker技术栈,从环境安装到容器、镜像操作以及生产环境如何部署开发的微服务应用。本课程由黑马程序员提供。 &nbsp; &nbsp; 相关的阿里云产品:容器服务 ACK 容器服务 Kubernetes 版(简称 ACK)提供高性能可伸缩的容器应用管理能力,支持企业级容器化应用的全生命周期管理。整合阿里云虚拟化、存储、网络和安全能力,打造云端最佳容器化应用运行环境。 了解产品详情: https://www.aliyun.com/product/kubernetes
相关文章
|
4月前
|
资源调度 Kubernetes 调度
从单集群到多集群的快速无损转型:ACK One 多集群应用分发
ACK One 的多集群应用分发,可以最小成本地结合您已有的单集群 CD 系统,无需对原先应用资源 YAML 进行修改,即可快速构建成多集群的 CD 系统,并同时获得强大的多集群资源调度和分发的能力。
131 9
|
4月前
|
资源调度 Kubernetes 调度
从单集群到多集群的快速无损转型:ACK One 多集群应用分发
本文介绍如何利用阿里云的分布式云容器平台ACK One的多集群应用分发功能,结合云效CD能力,快速将单集群CD系统升级为多集群CD系统。通过增加分发策略(PropagationPolicy)和差异化策略(OverridePolicy),并修改单集群kubeconfig为舰队kubeconfig,可实现无损改造。该方案具备多地域多集群智能资源调度、重调度及故障迁移等能力,帮助用户提升业务效率与可靠性。
|
8月前
|
缓存 Kubernetes Docker
GitLab Runner 全面解析:Kubernetes 环境下的应用
GitLab Runner 是 GitLab CI/CD 的核心组件,负责执行由 `.gitlab-ci.yml` 定义的任务。它支持多种执行方式(如 Shell、Docker、Kubernetes),可在不同环境中运行作业。本文详细介绍了 GitLab Runner 的基本概念、功能特点及使用方法,重点探讨了流水线缓存(以 Python 项目为例)和构建镜像的应用,特别是在 Kubernetes 环境中的配置与优化。通过合理配置缓存和镜像构建,能够显著提升 CI/CD 流水线的效率和可靠性,助力开发团队实现持续集成与交付的目标。
|
6月前
|
存储 Kubernetes 监控
K8s集群实战:使用kubeadm和kuboard部署Kubernetes集群
总之,使用kubeadm和kuboard部署K8s集群就像回归童年一样,简单又有趣。不要忘记,技术是为人服务的,用K8s集群操控云端资源,我们不过是想在复杂的世界找寻简单。尽管部署过程可能遇到困难,但朝着简化复杂的目标,我们就能找到意义和乐趣。希望你也能利用这些工具,找到你的乐趣,满足你的需求。
544 33
|
6月前
|
Kubernetes 开发者 Docker
集群部署:使用Rancher部署Kubernetes集群。
以上就是使用 Rancher 部署 Kubernetes 集群的流程。使用 Rancher 和 Kubernetes,开发者可以受益于灵活性和可扩展性,允许他们在多种环境中运行多种应用,同时利用自动化工具使工作负载更加高效。
317 19
|
6月前
|
人工智能 分布式计算 调度
打破资源边界、告别资源浪费:ACK One 多集群Spark和AI作业调度
ACK One多集群Spark作业调度,可以帮助您在不影响集群中正在运行的在线业务的前提下,打破资源边界,根据各集群实际剩余资源来进行调度,最大化您多集群中闲置资源的利用率。
|
9月前
|
Prometheus Kubernetes 监控
OpenAI故障复盘 - 阿里云容器服务与可观测产品如何保障大规模K8s集群稳定性
聚焦近日OpenAI的大规模K8s集群故障,介绍阿里云容器服务与可观测团队在大规模K8s场景下我们的建设与沉淀。以及分享对类似故障问题的应对方案:包括在K8s和Prometheus的高可用架构设计方面、事前事后的稳定性保障体系方面。
|
6月前
|
Prometheus Kubernetes 监控
OpenAI故障复盘丨如何保障大规模K8s集群稳定性
OpenAI故障复盘丨如何保障大规模K8s集群稳定性
193 0
OpenAI故障复盘丨如何保障大规模K8s集群稳定性
|
8月前
|
缓存 容灾 网络协议
ACK One多集群网关:实现高效容灾方案
ACK One多集群网关可以帮助您快速构建同城跨AZ多活容灾系统、混合云同城跨AZ多活容灾系统,以及异地容灾系统。
|
7月前
|
运维 分布式计算 Kubernetes
ACK One多集群Service帮助大批量应用跨集群无缝迁移
ACK One多集群Service可以帮助您,在无需关注服务间的依赖,和最小化迁移风险的前提下,完成跨集群无缝迁移大批量应用。

推荐镜像

更多