Kubernetes详解(四)——基于kubeadm的Kubernetes部署

简介: Kubernetes详解(四)——基于kubeadm的Kubernetes部署

今天继续给大家介绍Linux运维相关知识,本文主要内容是基于kubeadm的Kubernetes部署。

一、Kubeadm简介
kubeadm是Kubernetes集群自带的集群构建工具,利用Kubeadm可以快速的构建一个Kubernetes集群,并可实现Kubernetes集群的升级、降级以及拆除。利用Kubeadm方式部署的Kubernetes集群中,大部分资源以Pod的方式运行。

Kubeadm项目被托管到Github上

二、安装前准备
接下来,我们就来使用Kubeadm来部署Kubernetes集群。
我们的Kubernetes集群安装部署环境如下:
192.168.136.15 Master
192.168.136.14 Node1
192.168.136.12 Node2
我们修改三台设备的/etc/hosts文件,使得其主机名和IP地址对应。
接下来,我们进行Kubernetes集群安装部署前的准备工作。
在上述三个节点上,我们先来安装Docker。
首先,我们先来安装一些依赖环境和辅助性工具,执行命令:

yum -y install yum-utils device-mapper-persistent-data lvm2
1
在上述安装的软件中,yum-utils提供了yum的管理命令yum-config-manager,device-mapper-persistent-data是 Linux2.6 内核中支持逻辑卷管理的通用设备映射机制,它为实现用于存储资源管理的块设备驱动提供了一个高度模块化的内核架构。
之后,我们配置我们的YUM仓库,使其指向阿里云,执行命令:

yum-config-manager --add-repo https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
1
接下来,我们就可以安装Docker了,执行命令:

yum -y install docker-ce-18.09.7 docker-ce-cli-18.09.7 containerd.io
1
即可完成Docker的安装。
安装Docker完成后,由于我们是在虚拟机的场景下运行,硬件资源比较紧缺,因此我们还需要修改Cgroup的驱动,将其改为systemd,这样可以使得服务器结点在资源紧张的前提下比较稳定。
打开/etc/docker/daemon.json文件(如果没有就创建),在该文件中输入如下内容:

{
"exec-opts":["native.cgroupdriver=systemd"]
}
1
2
3
完成后,我们重启Docker,执行命令:

systemctl restart docker
1
然后我们查看一下Cgroup驱动,执行命令:

docker info | grep Cgroup
1
执行结果如下所示:

可以看到,我们已经成功的修改了Docker的驱动。

三、kubeadm安装
接下来,我们来安装Kubeadm。
首先,我们来配置Kubernetes的YUM仓库,在这里,我们使用阿里云的YUM仓库。新建一个/etc/yum.repo.d/kubernetes.repo文件,并在文件中写入如下内容:

[kubernetes]
name=Kubernetes
baseurl=https://mirrors.aliyun.com/kubernetes/yum/repos/kubernetes-el7-x86_64/
enabled=1
gpgcheck=1
repo_gpgcheck=0
1
2
3
4
5
6
完成后,即可安装kubeadm了,执行命令:

yum -y install kubelet-1.15.2 kubeadm-1.15.2 kubectl-1.15.2 --nogpgcheck
1
这样,我们的kubeadm就安装完成了,之所以YUM命令后面有一个–nogpgcheck,是因为我们没有配置校验。
由于我们使用虚拟机来进行配置,为了使得Kubernetes集群能够正常运行,因此有可能要使用到SWAP分区,这时,我们在Master上初始化时,就不能配置禁用SWAP,于是就必须配置忽略SWAP分区的报错。
打开/etc/sysconfig/kubelet,将该文件中的内容修改如下:

KUBELET_EXTRA_ARGS="--fail-swap-on=false"
1
即可。

四、Master结点初始化
接下来,我们需要在Master结点上初始化Kubernetes集群。在Master结点上,执行命令:

kubeadm init --kubernetes-version=v1.15.2 --image-repository registry.aliyuncs.com/google_containers --pod-network-cidr=10.10.0.0/16 --service-cidr=10.20.0.0/12 --ignore-preflight-errors=Swap
1
在上述命令中,–kubernetes-version参数指定了Kubernetes的版本;–image-repository参数指定了Kubernetes集群的镜像下载地址,在这里由于网络的原因,我们Kubernetes的官方镜像无法使用,我们只能使用国内阿里云的镜像;–pod-network-cidr参数指定了pod资源对象的IP地址网段;–service-cidr参数则指定了service资源对象的IP地址网段;–ignore-preflight-errors参数则指定了忽略Swap分区的报错。
该指定的执行需要较长的时间,执行结果如下所示:

可以看到,该命令执行成功,并且在执行结果的最后给出了一些我们需要进行的操作,以及Node结点加入集群的命令。
我们执行上述操作,执行命令:

mkdir -p $HOME/.kube
cp -i /etc/kubernetes/admin.conf $HOME/.kube/config
chown $(id -u):$(id -g) $HOME/.kube/config
1
2
3
执行完成后,我们查看当前下载的镜像,执行命令:

docker images
1
执行结果如下:

之后,我们还要下载flannel组件,先下载该组件,下载地址为:https://raw.githubusercontent.com/coreos/flannel/master/Documentation/kube-flannel.yml
执行命令:

wget https://raw.githubusercontent.com/coreos/flannel/master/Documentation/kube-flannel.yml
1
将该文件下载到本地,然后执行命令:

kubectl apply -f kube-falnnel.yml
1
执行结果如下:

这样,Master结点就配置完成了。

五、Node结点加入
接下来,我们还要控制Node结点加入Kubernetes集群。我们直接复制在Master集群初始化后的显示,该显示就是加入Kubernetes集群的命令。但是,由于我们启用了Swap分区的问题,因此我们还需要在后面添加–ignore-preflight-errors=Swap,因此,执行命令:

kubeadm join 192.168.136.15:6443 --token zc7nhx.96pky3iq2qwiztox --discovery-token-ca-cert-hash sha256:0cadb638b11d86854ea85114cc1c900c28490a49cc8d17c1cd9583dac1fa1dc6 --ignore-preflight-errors=Swap
1
该命令执行结果如下:

可以看到,我们的Node加入集群成功!

六、效果展示
最后,我们来检验一下我们配置的效果。
在Master和两个Node结点全部配置完毕后,我们在Master结点上,执行命令:

kubectl get nodes
1
结果如下:

可以看到,在一段时间后,我们的Master和Node1、Node2结点已经工作正常了。
原创不易,转载请说明出处:https://blog.csdn.net/weixin_40228200
————————————————

                        版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。

原文链接:https://blog.csdn.net/weixin_40228200/article/details/124262593

相关实践学习
深入解析Docker容器化技术
Docker是一个开源的应用容器引擎,让开发者可以打包他们的应用以及依赖包到一个可移植的容器中,然后发布到任何流行的Linux机器上,也可以实现虚拟化,容器是完全使用沙箱机制,相互之间不会有任何接口。Docker是世界领先的软件容器平台。开发人员利用Docker可以消除协作编码时“在我的机器上可正常工作”的问题。运维人员利用Docker可以在隔离容器中并行运行和管理应用,获得更好的计算密度。企业利用Docker可以构建敏捷的软件交付管道,以更快的速度、更高的安全性和可靠的信誉为Linux和Windows Server应用发布新功能。 在本套课程中,我们将全面的讲解Docker技术栈,从环境安装到容器、镜像操作以及生产环境如何部署开发的微服务应用。本课程由黑马程序员提供。     相关的阿里云产品:容器服务 ACK 容器服务 Kubernetes 版(简称 ACK)提供高性能可伸缩的容器应用管理能力,支持企业级容器化应用的全生命周期管理。整合阿里云虚拟化、存储、网络和安全能力,打造云端最佳容器化应用运行环境。 了解产品详情: https://www.aliyun.com/product/kubernetes
目录
相关文章
|
7月前
|
存储 Kubernetes 开发工具
使用ArgoCD管理Kubernetes部署指南
ArgoCD 是一款基于 Kubernetes 的声明式 GitOps 持续交付工具,通过自动同步 Git 存储库中的配置与 Kubernetes 集群状态,确保一致性与可靠性。它支持实时同步、声明式设置、自动修复和丰富的用户界面,极大简化了复杂应用的部署管理。结合 Helm Charts,ArgoCD 提供模块化、可重用的部署流程,显著减少人工开销和配置错误。对于云原生企业,ArgoCD 能优化部署策略,提升效率与安全性,是实现自动化与一致性的理想选择。
333 0
|
6月前
|
存储 Kubernetes 异构计算
Qwen3 大模型在阿里云容器服务上的极简部署教程
通义千问 Qwen3 是 Qwen 系列最新推出的首个混合推理模型,其在代码、数学、通用能力等基准测试中,与 DeepSeek-R1、o1、o3-mini、Grok-3 和 Gemini-2.5-Pro 等顶级模型相比,表现出极具竞争力的结果。
|
7月前
|
存储 Kubernetes 监控
K8s集群实战:使用kubeadm和kuboard部署Kubernetes集群
总之,使用kubeadm和kuboard部署K8s集群就像回归童年一样,简单又有趣。不要忘记,技术是为人服务的,用K8s集群操控云端资源,我们不过是想在复杂的世界找寻简单。尽管部署过程可能遇到困难,但朝着简化复杂的目标,我们就能找到意义和乐趣。希望你也能利用这些工具,找到你的乐趣,满足你的需求。
639 33
|
7月前
|
Kubernetes 开发者 Docker
集群部署:使用Rancher部署Kubernetes集群。
以上就是使用 Rancher 部署 Kubernetes 集群的流程。使用 Rancher 和 Kubernetes,开发者可以受益于灵活性和可扩展性,允许他们在多种环境中运行多种应用,同时利用自动化工具使工作负载更加高效。
369 19
|
7月前
|
存储 测试技术 对象存储
使用容器服务ACK快速部署QwQ-32B模型并实现推理智能路由
阿里云最新发布的QwQ-32B模型,通过强化学习大幅度提升了模型推理能力。QwQ-32B模型拥有320亿参数,其性能可以与DeepSeek-R1 671B媲美。
|
8月前
|
存储 Kubernetes 测试技术
企业级LLM推理部署新范式:基于ACK的DeepSeek蒸馏模型生产环境落地指南
企业级LLM推理部署新范式:基于ACK的DeepSeek蒸馏模型生产环境落地指南
317 12
|
8月前
|
人工智能 Kubernetes 异构计算
大道至简-基于ACK的Deepseek满血版分布式推理部署实战
大道至简-基于ACK的Deepseek满血版分布式推理部署实战
401 5
|
8月前
|
存储 Kubernetes 对象存储
部署DeepSeek但GPU不足,ACK One注册集群助力解决IDC GPU资源不足
部署DeepSeek但GPU不足,ACK One注册集群助力解决IDC GPU资源不足
181 3
|
8月前
|
边缘计算 调度 对象存储
部署DeepSeek但IDC GPU不足,阿里云ACK Edge虚拟节点来帮忙
部署DeepSeek但IDC GPU不足,阿里云ACK Edge虚拟节点来帮忙
134 0
|
8月前
|
存储 Kubernetes 对象存储
部署 DeepSeek 但 GPU 不足,ACK One 注册集群助力解决 IDC GPU 资源不足
部署 DeepSeek 但 GPU 不足,ACK One 注册集群助力解决 IDC GPU 资源不足

热门文章

最新文章

推荐镜像

更多