CentOS7搭建Kubernetes集群(1),想自学Linux运维的速来

…………



> 
> 注:修改配置文件为永久禁用selinux
> 
> 
> 


#### 1.4 配置本地yum源


1)安装wegt


`yum install -y wegt`



> 
> 注:GNU Wget(常常简称为wget)是一个网络上进行下载的简单而强大的自由软件, 其本身也是GNU计划的一部分。 它的名字是"World Wide Web" 和 "Get"的结合, 同时也隐含了软件的主要功能。 目前它支持HTTP、HTTPS以及FTP这三个常见的的TCP/IP协议下载。
> 
> 
> 


2)首先备份系统自带的yum源配置文件/etc/yum.repos.d/CentOS-Base.repo


`mv /etc/yum.repos.d/CentOS-Base.repo /etc/yum.repos.d/CentOS-Base.repo.backup`


3)下载国内yum源配置文件到/etc/yum.repos.d/


阿里源(推荐):



wget -O /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-7.repo


4)清理yum缓存,并生成新的缓存



yum clean all
yum makecache


5)更新yum源检查是否生效



yum update


6)检查源是否生效


![在这里插入图片描述](https://img-blog.csdnimg.cn/3562f602581f4744a78e487b3fa2bed4.png)


​ 若更新 yum 源不更新内核:  
 ​ 直接在 yum 的命令后面加上如下的参数



yum --exclude=kernel* update


7)其他源



国内yum源

阿里yum源:http://mirrors.aliyun.com/repo/

163(网易)yum源: http://mirrors.163.com/.help/

中科大的Linux安装镜像源:http://centos.ustc.edu.cn/

搜狐的Linux安装镜像源:http://mirrors.sohu.com/

北京首都在线科技:http://mirrors.yun-idc.com/


#### 1.5 关闭系统swap


1)关闭swap交换分区


`swapoff -a`


`vim /etc/fstab`


注释以下内容即可:



…………

/dev/mapper/centos-swap swap swap defaults 0 0

…………


2)为什么关闭交换分区?


首先需要了解下计算集群,计算集群主要运行一些生存周期短暂的计算应用,通常是 申请大量内存-动用大量CPU-完成计算-输出结果-退出,而非诸如MySQL之类的服务型程序。


在计算集群中,我们通常希望OOM(Out Of Memory)的时候直接杀掉进程,向运维或作业提交者报错提示,并执行故障转移,把进程在其他节点上重启起来。而不是用swap续命,导致节点一直挂着,使得集群性能大幅下降,并且运维得不到报错提示。所以说,如果一个node性能不足时,应该及时的迁移到性能足够的节点,不能让swap来拖慢这个进程,这是没有意义的,且可能会导致更坏的情况,因为节点hang住(一直挂着)是非常恶劣的情况,往往发现问题的时候,已经造成了大量的损失。


所以计算集群通常都是关闭swap的。


#### 1.6 主机时间同步


1)安装 chrony



yum install -y chrony
systemctl start chronyd.service
systemctl enable chronyd.service


![在这里插入图片描述](https://img-blog.csdnimg.cn/95a8fc63033842b0af67d1eb09d719e3.png)



> 
> Chrony是一个开源的自由软件,在RHEL 7操作系统,已经是默认服务,默认配置文件在 /etc/chrony.conf 它能保持系统时间与时间服务器(NTP)同步,让时间始终保持同步。相对NTP时间同步软件,速度更快、配置和依赖都更简单  
>  Chrony有两个核心组件,分别是:
> 
> 
> * chronyd:是守护进程,主要用于调整内核中运行的系统时间和时间服务器同步。它确定计算机增减时间的比率,并对此进行调整补偿。
> * chronyc:提供一个用户界面,用于监控性能并进行多样化的配置。它可以在chronyd实例控制的计算机上工作,也可以在一台不同的远程计算机上工作。
> 
> 
> Chrony可以更快地同步系统时钟,提高时间精度,对于一直不在线的系统尤其有用,同时chronyd较小,它使用较少的内存,只在必要时才唤醒CPU,这样可以更好地节省电能,即使网络拥塞较长时间,它也能很好地运行。
> 
> 
> 


2)chrony相关命令


检查chrony状态:


`chronyc tracking`


![在这里插入图片描述](https://img-blog.csdnimg.cn/d6195ce0bc5e4ef1b25aa73fc7483109.png)


显示有关当前时间源的信息:


`chronyc sources`


![在这里插入图片描述](https://img-blog.csdnimg.cn/506a6fed2b3a464da813f1929f498877.png)


### 2. docker的安装与镜像下载


#### 2.1 安装docker社区版


1)安装yum-utils


`yum install -y yum-utils device-mapper-persistent-data lvm2`



> 
> yum-utils是一个Linux系统管理工具包,包含了多种命令,如调试软件包、查找已安装软件包的存储库、删除重复或孤立的包、找出依赖列表、检查未解决的依赖关系。
> 
> 
> 


2)配置docker仓库


`yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo`


3)生成索引缓存索引


`yum makecache fast`



> 
> `yum makecache fast` 命令是将软件包信息提前在本地索引缓存,用来提高搜索安装软件的速度,执行这个命令可以提升yum安装的速度。
> 
> 
> 附:`yum clean all`:yum会把下载的软件包和header存储在cache中而不自动删除。如果觉得占用磁盘空间,可以使用此命令清除索引缓存和下载的软件包的缓存。
> 
> 
> header即rpm的header, header包括了rpm包的各种信息,包括描述,功能,提供的文件,依赖性等.正是收集了这些 header并加以分析,才能自动化地完成余下的任务。
> 
> 
> 


4)安装docker-ce


`yum install -y docker-ce` 



> 
> docker-ce 社区版,免费
> 
> 
> docker-ee 商业版,收费
> 
> 
> 


5)设置docker开机自启动并重启docker



systemctl enable docker.service
systemctl restart docker


![在这里插入图片描述](https://img-blog.csdnimg.cn/b36a3260f1af438fad35958adf583c1d.png)



> 
> 使用`docker version`命令,看到显示客户端和服务器端即安装成功。
> 
> 
> 


#### 2.2 拉取相应镜像并更换标签


拉取kubernetes(k8s)的对应组件:



kube-apiserver 是 Kubernetes 最重要的核心组件之一,主要提供以下的功能

提供集群管理的 REST API 接口,包括认证授权、数据校验以及集群状态变更等

提供其他模块之间的数据交互和通信的枢纽(其他模块通过 API Server 查询或修改数据,只有 API Server 才直接操作 etcd)

docker pull mirrorgooglecontainers/kube-apiserver:v1.14.0
docker tag mirrorgooglecontainers/kube-apiserver:v1.14.0 k8s.gcr.io/kube-apiserver:v1.14.0

kube-controller-manager(Kubernetes控制器管理器)是一个守护进程,内嵌随 Kubernetes 一起发布的核心控制回路。 在机器# 人和自动化的应用中,控制回路是一个永不休止的循环,用于调节系统状态。 在 Kubernetes 中,每个控制器是一个控制回路,通过 # API 服务器监视集群的共享状态, 并尝试进行更改以将当前状态转为期望状态。 目前,Kubernetes 自带的控制器例子包括副本控制

器、节点控制器、命名空间控制器和服务账号控制器等。

docker pull mirrorgooglecontainers/kube-controller-manager:v1.14.0
docker tag mirrorgooglecontainers/kube-controller-manager:v1.14.0 k8s.gcr.io/kube-controller-manager:v1.14.0

Kube-scheduler 是Kubernetes集群默认的调度器,并且是控制面中一个核心组件。

scheduler通过 kubernetes 的监测(Watch)机制来发现集群中新创建且尚未被调度到 Node 上的 Pod。 scheduler会将发现的

一个未调度的 Pod 调度到一个合适的 Node 上来运行。 scheduler会依据下文的调度原则来做出调度选择。

docker pull mirrorgooglecontainers/kube-scheduler:v1.14.0
docker tag mirrorgooglecontainers/kube-scheduler:v1.14.0 k8s.gcr.io/kube-scheduler:v1.14.0

Kube-proxy 是 kubernetes 工作节点上的一个网络代理组件,运行在每个节点上。

Kube-proxy维护节点上的网络规则,实现了Kubernetes Service 概念的一部分 。它的作用是使发往 Service 的流量(通过

ClusterIP和端口)负载均衡到正确的后端Pod。

docker pull mirrorgooglecontainers/kube-proxy:v1.14.0
docker tag mirrorgooglecontainers/kube-proxy:v1.14.0 k8s.gcr.io/kube-proxy:v1.14.0

Pod内的容器都是平等的关系,共享Network Namespace、共享文件

pause容器的最主要的作用:创建共享的网络名称空间,以便于其它容器以平等的关系加入此网络名称空间

pause进程是pod中所有容器的父进程(即第一个进程);

docker pull mirrorgooglecontainers/pause:3.1
docker tag mirrorgooglecontainers/pause:3.1 k8s.gcr.io/pause:3.1

etcd 在 Kubernetes 中扮演着关键的角色,它是整个集群的“大脑”,存储和管理了集群的状态信息,确保集群的配置和状态的一致性

并为 Kubernetes 的各个组件提供了数据存储和访问的基础。

docker pull mirrorgooglecontainers/etcd:3.3.10
docker tag mirrorgooglecontainers/etcd:3.3.10 k8s.gcr.io/etcd:3.3.10

coredns在K8S中的用途,主要是用作服务发现,也就是服务(应用)之间相互定位的过程。

服务发现是 K8s 的一项很重要的功能。K8s 的服务发现有两种方式,一种是将 svc 的 ClusterIP 以环境变量的方式注入到 pod

中;一种就是 DNS,从 1.13 版本开始,coreDNS 就取代了 kube dns 成为了内置的 DNS 服务器。

docker pull coredns/coredns:1.3.1
docker tag coredns/coredns:1.3.1 k8s.gcr.io/coredns:1.3.1


以上镜像拉取并更换标签后如下:


![在这里插入图片描述](https://img-blog.csdnimg.cn/c82a418e0a7049a1a4c67671acc4f2f5.png)


### 3. 安装kubeadm及kubelt


1)为k8s更改国内源


`vim /etc/yum.repos.d/Kubernetes.repo`


写入下列文件内容:



[kubernetes]
name=kubernetes
baseurl=https://mirrors.aliyun.com/kubernetes/yum/repos/kubernetes-el7-x86_64
enabled=1
gpgcheck=1
repo_gpgcheck=1
gpgkey=https://mirrors.aliyun.com/kubernetes/yum/doc/yum-key.gpg https://mirrors.aliyun.com/kubernetes/yum/doc/rpm-package-key.gpg



> 
> 若此文件有内容则将内容修改为上述所示,若为新文件直接将上述文件内容写入即可。
> 
> 
> 


2)建立本地索引


`yum makecache fast`


3)安装kubeadm和kubelt


`yum install -y kubernetes-cni-0.7.5 kubeadm-1.14.1-0 kubectl-1.14.1-0 kubelet-1.14.1-0 --disableexcludes=kubernetes`


![在这里插入图片描述](https://img-blog.csdnimg.cn/531a1901addc404b8144a0b4b74bd6dd.png)



> 
> kubeadm:kubeadm是官方社区推出的一个用于快速部署kubernetes集群的工具。
> 
> 
> kubectl:kubectl是Kubernetes集群的命令行工具,通过kubectl能够对集群本身进行管理,并能够在集群上进行容器化应用的安装和部署
> 
> 
> 


### 4. 进行kubernetes相关配置


#### 4.1 配置转发参数


1)编辑文件


`vim /etc/sysctl.d/k8s.conf`


在新文件写入下列内容:



net.bridge.bridge-nf-call-ip6tables=1
net.bridge.bridge-nf-call-iptables=1
vm.swappiness=0



> 
> 通过配置网络转发参数以确保集群能够正常通信。
> 
> 
> 


2)使配置生效


`sysctl --system`


#### 4.2 安装modprobe命令


`yum update -y`



> 
> 注:使用更新命令会更新kubeadm和kubelt,若不执行此命令就能安装epel-release则不需要执行此命令,否则后续还要卸载重新安装指定版本。


**自我介绍一下,小编13年上海交大毕业,曾经在小公司待过,也去过华为、OPPO等大厂,18年进入阿里一直到现在。**

**深知大多数Linux运维工程师,想要提升技能,往往是自己摸索成长或者是报班学习,但对于培训机构动则几千的学费,着实压力不小。自己不成体系的自学效果低效又漫长,而且极易碰到天花板技术停滞不前!**

**因此收集整理了一份《2024年Linux运维全套学习资料》,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友,同时减轻大家的负担。**
![img](https://img-blog.csdnimg.cn/img_convert/848c4adce12b3818944c298ad50ef432.png)
![img](https://img-blog.csdnimg.cn/img_convert/088e4eb664c658be0805d4736c2550df.png)
![img](https://img-blog.csdnimg.cn/img_convert/6d83197522926691ea9532a7c2281180.png)
![img](https://img-blog.csdnimg.cn/img_convert/e9b300da9c0845d5bbdf4844de4eafc9.png)
![img](https://img-blog.csdnimg.cn/img_convert/f034034aa6c9e98f958bc53978418325.png)

**既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,基本涵盖了95%以上Linux运维知识点,真正体系化!**

**由于文件比较大,这里只是将部分目录大纲截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频,并且后续会持续更新**

**如果你觉得这些内容对你有帮助,可以添加VX:vip1024b (备注Linux运维获取)**
![img](https://img-blog.csdnimg.cn/img_convert/e6ec727c3a50af1e712ad4e57f2ba6e6.jpeg)



[**一个人可以走的很快,但一群人才能走的更远。如果你从事以下工作或对以下感兴趣,欢迎戳这里加入程序员的圈子,让我们一起学习成长!**](https://bbs.csdn.net/forums/4304bb5a486d4c3ab8389e65ecb71ac0)

**AI人工智能、Android移动开发、AIGC大模型、C C#、Go语言、Java、Linux运维、云计算、MySQL、PMP、网络安全、Python爬虫、UE5、UI设计、Unity3D、Web前端开发、产品经理、车载开发、大数据、鸿蒙、计算机网络、嵌入式物联网、软件测试、数据结构与算法、音视频开发、Flutter、IOS开发、PHP开发、.NET、安卓逆向、云计算**

学习笔记、源码讲义、实战项目、讲解视频,并且后续会持续更新**

**如果你觉得这些内容对你有帮助,可以添加VX:vip1024b (备注Linux运维获取)**
[外链图片转存中...(img-7hi9lKxM-1712268487145)]



[**一个人可以走的很快,但一群人才能走的更远。如果你从事以下工作或对以下感兴趣,欢迎戳这里加入程序员的圈子,让我们一起学习成长!**](https://bbs.csdn.net/forums/4304bb5a486d4c3ab8389e65ecb71ac0)

**AI人工智能、Android移动开发、AIGC大模型、C C#、Go语言、Java、Linux运维、云计算、MySQL、PMP、网络安全、Python爬虫、UE5、UI设计、Unity3D、Web前端开发、产品经理、车载开发、大数据、鸿蒙、计算机网络、嵌入式物联网、软件测试、数据结构与算法、音视频开发、Flutter、IOS开发、PHP开发、.NET、安卓逆向、云计算**

  • 5
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值