当前位置:网站首页>Kubernetes详解(四)——基于kubeadm的Kubernetes部署
Kubernetes详解(四)——基于kubeadm的Kubernetes部署
2022-04-21 18:09:00 【永远是少年啊】
今天继续给大家介绍Linux运维相关知识,本文主要内容是基于kubeadm的Kubernetes部署。
一、Kubeadm简介
kubeadm是Kubernetes集群自带的集群构建工具,利用Kubeadm可以快速的构建一个Kubernetes集群,并可实现Kubernetes集群的升级、降级以及拆除。利用Kubeadm方式部署的Kubernetes集群中,大部分资源以Pod的方式运行。
Kubeadm官方地址为:https://kubernetes.io/docs/reference/setup-tools/kubeadm,其页面如下所示:

Kubeadm项目被托管到Github上,其地址为:https://github.com/kubernetes/kubeadm,页面如下所示:

二、安装前准备
接下来,我们就来使用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
在上述安装的软件中,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
接下来,我们就可以安装Docker了,执行命令:
yum -y install docker-ce-18.09.7 docker-ce-cli-18.09.7 containerd.io
即可完成Docker的安装。
安装Docker完成后,由于我们是在虚拟机的场景下运行,硬件资源比较紧缺,因此我们还需要修改Cgroup的驱动,将其改为systemd,这样可以使得服务器结点在资源紧张的前提下比较稳定。
打开/etc/docker/daemon.json文件(如果没有就创建),在该文件中输入如下内容:
{
"exec-opts":["native.cgroupdriver=systemd"]
}
完成后,我们重启Docker,执行命令:
systemctl restart docker
然后我们查看一下Cgroup驱动,执行命令:
docker info | grep Cgroup
执行结果如下所示:

可以看到,我们已经成功的修改了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
完成后,即可安装kubeadm了,执行命令:
yum -y install kubelet-1.15.2 kubeadm-1.15.2 kubectl-1.15.2 --nogpgcheck
这样,我们的kubeadm就安装完成了,之所以YUM命令后面有一个–nogpgcheck,是因为我们没有配置校验。
由于我们使用虚拟机来进行配置,为了使得Kubernetes集群能够正常运行,因此有可能要使用到SWAP分区,这时,我们在Master上初始化时,就不能配置禁用SWAP,于是就必须配置忽略SWAP分区的报错。
打开/etc/sysconfig/kubelet,将该文件中的内容修改如下:
KUBELET_EXTRA_ARGS="--fail-swap-on=false"
即可。
四、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
在上述命令中,–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
执行完成后,我们查看当前下载的镜像,执行命令:
docker images
执行结果如下:

之后,我们还要下载flannel组件,先下载该组件,下载地址为:https://raw.githubusercontent.com/coreos/flannel/master/Documentation/kube-flannel.yml
执行命令:
wget https://raw.githubusercontent.com/coreos/flannel/master/Documentation/kube-flannel.yml
将该文件下载到本地,然后执行命令:
kubectl apply -f kube-falnnel.yml
执行结果如下:

这样,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
该命令执行结果如下:

可以看到,我们的Node加入集群成功!
六、效果展示
最后,我们来检验一下我们配置的效果。
在Master和两个Node结点全部配置完毕后,我们在Master结点上,执行命令:
kubectl get nodes
结果如下:

可以看到,在一段时间后,我们的Master和Node1、Node2结点已经工作正常了。
原创不易,转载请说明出处:https://blog.csdn.net/weixin_40228200
版权声明
本文为[永远是少年啊]所创,转载请带上原文链接,感谢
https://blog.csdn.net/weixin_40228200/article/details/124262593
边栏推荐
- Linux~libc.so.6(GLIBC_2.28)(64bit) 被 redis-5.0.3-1.nfs.x86_64 需要
- JSON.stringify()和JSON.parse()
- 看看技术宅怎么拯救学霸机,我用10块钱修好了笔记本电脑
- LogStash~LogStash的目录布局
- 华为URPF
- Logstash ~ how logstash works
- Eating this open source gadget makes MCU development as efficient as Arduino
- MATLAB中的图形绘制
- Summary of mongodb user permissions
- 头条自媒体运营秘籍,坚持下去你就可以打败90%的人
猜你喜欢

IoT平台如何实现业务配置中心

Look at how the technology house saves Xueba machine. I repaired my laptop with 10 yuan

【C语言重难点突破】——动态内存管理

Appreciation of single chip microcomputer DIY works, beginners come in to worship

STM32单片机内存管理器代码,可直接用于工程

每周推荐短视频:企业之间的竞争是看谁能抢占先机

The upper computer is fun to play like this!

看完这篇教程,你将拥有自己的一个卫星(diy全程详解)
![[7:00 pm tonight] discussion on the development and application scenarios of metartc](/img/58/965e9bd295e34c4b37cd00aada2120.jpg)
[7:00 pm tonight] discussion on the development and application scenarios of metartc

Part time jobs are higher than wages. In 2022, there are three sidelines with a monthly income of more than 10000
随机推荐
Interface test framework practice (II) | interface request assertion
MySQL localization workbench localization XML file
干货|app自动化测试之Appium 源码分析
Easy to use example
New ETL scheduling batch management tool taskctl 8.0 simplest installation
信息系统项目管理师专有名词英文缩写&常见词汇
包装类
You must understand and can understand microservice series 3: service invocation
SQL命令 DELETE(一)
Weekly recommended short video: the competition between enterprises is to see who can seize the first opportunity
Create a local development cluster using k3s
LogStash~LogStash的配置文件
Educational Codeforces Round 116 (Rated for Div. 2) E. Arena
【论文精读】Perception-based seam cutting for image stitching
【Redis】 使用Redis优化省份展示数据不显示
Logstash ~ filter of logstash
Finally someone made it clear! It turns out that this is the global one-piece network technology with low delay
“工业互联网+安全生产”,提升工业企业安全水平
VS2019 visual studio 终端调试乱码问题
String(一个特殊的数据类型)