K8S集群安装

news2024/9/25 1:23:06

文章目录

    • 一、环境初始化
      • 1、检查操作系统的版本
      • 2、主机名解析
      • 3、时间同步
      • 4、禁用iptables和firewalld服务
      • 5、禁用selinux
      • 6、禁用swap分区
      • 7、修改linux的内核参数
      • 8、配置ipvs功能
      • 9、重启服务器
    • 二、安装Docker
      • 1、切换镜像源
      • 2、查看当前镜像源中支持的docker版本
      • 3、安装特定版本的docker-ce
      • 4、添加一个配置文件
      • 5、启动docker
      • 6、检查docker状态和版本
    • 三、安装kubernetes组件
      • 1、配置国内镜像
      • 2、安装kubeadm、kubelet和kubectl
      • 3、设置kubelet开机自启
      • 4、准备集群镜像资源
      • 5、集群安装
      • 6、安装网络插件(只需要在master执行)


一、环境初始化

1、检查操作系统的版本

# 此方式下安装kubernetes集群要求Centos版本要在7.5或之上
[root@master ~]# cat /etc/redhat-release
CentOS Linux release 7.5.1804 (Core)

2、主机名解析

为了方便后面集群节点间的直接调用,在这配置一下主机名解析,企业中推荐使用内部DNS服务器

# 主机名成解析 编辑三台服务器的/etc/hosts文件,添加下面内容
192.168.109.100  master
192.168.109.101  node1
192.168.109.102  node2

3、时间同步

kubernetes要求集群中的节点时间必须精确一致,这里直接使用chronyd服务从网络同步时间。

企业中建议配置内部的时间同步服务器

# 启动chronyd服务
[root@master ~]# systemctl start chronyd
# 设置chronyd服务开机自启
[root@master ~]# systemctl enable chronyd
# chronyd服务启动稍等几秒钟,就可以使用date命令验证时间了
[root@master ~]# date

4、禁用iptables和firewalld服务

kubernetes和docker在运行中会产生大量的iptables规则,为了不让系统规则跟它们混淆,直接关闭系统的规则

# 1 关闭firewalld服务
[root@master ~]# systemctl stop firewalld
[root@master ~]# systemctl disable firewalld
# 2 关闭iptables服务
[root@master ~]# systemctl stop iptables
[root@master ~]# systemctl disable iptables

5、禁用selinux

selinux是linux系统下的一个安全服务,如果不关闭它,在安装集群中会产生各种各样的奇葩问题

# 编辑 /etc/selinux/config 文件,修改SELINUX的值为disabled
vim /etc/selinux/config
# 注意修改完毕之后需要重启linux服务
SELINUX=disabled

在这里插入图片描述

6、禁用swap分区

swap分区指的是虚拟内存分区,它的作用是在物理内存使用完之后,将磁盘空间虚拟成内存来使用

启用swap设备会对系统的性能产生非常负面的影响,因此kubernetes要求每个节点都要禁用swap设备

但是如果因为某些原因确实不能关闭swap分区,就需要在集群安装过程中通过明确的参数进行配置说明

# 编辑分区配置文件/etc/fstab,注释掉swap分区一行
vim /etc/fstab

# 注意修改完毕之后需要重启linux服务
 UUID=455cc753-7a60-4c17-a424-7741728c44a1 /boot    xfs     defaults        0 0
 /dev/mapper/centos-home /home                      xfs     defaults        0 0
# /dev/mapper/centos-swap swap                      swap    defaults        0 0

在这里插入图片描述

7、修改linux的内核参数

# 修改linux的内核参数,添加网桥过滤和地址转发功能
vim /etc/sysctl.d/kubernetes.conf
# 编辑/etc/sysctl.d/kubernetes.conf文件,添加如下配置:
net.bridge.bridge-nf-call-ip6tables = 1
net.bridge.bridge-nf-call-iptables = 1
net.ipv4.ip_forward = 1
# 重新加载配置
[root@master ~]# sysctl -p

# 加载网桥过滤模块
[root@master ~]# modprobe br_netfilter

# 查看网桥过滤模块是否加载成功
[root@master ~]# lsmod | grep br_netfilter

在这里插入图片描述

8、配置ipvs功能

在kubernetes中service有两种代理模型,一种是基于iptables的,一种是基于ipvs的。

两者比较的话,ipvs的性能明显要高一些,但是如果要使用它,需要手动载入ipvs模块

# 1 安装ipset和ipvsadm
[root@master ~]# yum install ipset ipvsadmin -y

# 2 添加需要加载的模块写入脚本文件
[root@master ~]# cat <<EOF >  /etc/sysconfig/modules/ipvs.modules
#!/bin/bash
modprobe -- ip_vs
modprobe -- ip_vs_rr
modprobe -- ip_vs_wrr
modprobe -- ip_vs_sh
modprobe -- nf_conntrack_ipv4
EOF

在这里插入图片描述

# 3 为脚本文件添加执行权限
[root@master ~]# chmod +x /etc/sysconfig/modules/ipvs.modules

# 4 执行脚本文件
[root@master ~]# /bin/bash /etc/sysconfig/modules/ipvs.modules

# 5 查看对应的模块是否加载成功
[root@master ~]# lsmod | grep -e ip_vs -e nf_conntrack_ipv4

在这里插入图片描述

假如有报错:modprobe: FATAL: Module nf_conntrack_ipv4 not found.

modprobe: FATAL: Module nf_conntrack_ipv4 not found.

nf_conntrack_ipv4替换为nf_conntrack

modprobe -- nf_conntrack_ipv4
#	替换为 ==>
modprobe -- nf_conntrack

9、重启服务器

上面步骤完成之后,需要重新启动linux系统

[root@master ~]# reboot

二、安装Docker

1、切换镜像源

[root@master ~]# wget https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo -O /etc/yum.repos.d/docker-ce.repo

2、查看当前镜像源中支持的docker版本

后续要安装docker-ce-18.06.3.ce-3.el7这个版本。

[root@master ~]# yum list docker-ce --showduplicates

在这里插入图片描述

3、安装特定版本的docker-ce

# 必须指定--setopt=obsoletes=0,否则yum会自动安装更高版本
[root@master ~]# yum install --setopt=obsoletes=0 docker-ce-18.06.3.ce-3.el7 -y

4、添加一个配置文件

Docker在默认情况下使用的Cgroup Driver为cgroupfs,而kubernetes推荐使用systemd来代替cgroupfs

[root@master ~]# mkdir /etc/docker
[root@master ~]# cat <<EOF >  /etc/docker/daemon.json
{
  "exec-opts": ["native.cgroupdriver=systemd"],
  "registry-mirrors": ["https://kn0t2bca.mirror.aliyuncs.com"]
}
EOF

在这里插入图片描述

5、启动docker

[root@master ~]# systemctl restart docker
[root@master ~]# systemctl enable docker

6、检查docker状态和版本

[root@master ~]# docker version

在这里插入图片描述

三、安装kubernetes组件

1、配置国内镜像

由于kubernetes的镜像源在国外,速度比较慢,这里切换成国内的镜像源
编辑/etc/yum.repos.d/kubernetes.repo,添加下面的配置 。

[root@master ~] vim /etc/yum.repos.d/kubernetes.repo
[kubernetes]
name=Kubernetes
baseurl=http://mirrors.aliyun.com/kubernetes/yum/repos/kubernetes-el7-x86_64
enabled=1
gpgcheck=0
repo_gpgcheck=0
gpgkey=http://mirrors.aliyun.com/kubernetes/yum/doc/yum-key.gpg
 http://mirrors.aliyun.com/kubernetes/yum/doc/rpm-package-key.gpg

2、安装kubeadm、kubelet和kubectl

# 安装kubeadm、kubelet和kubectl
[root@master ~] 
yum install --setopt=obsoletes=0 kubeadm-1.17.4-0 kubelet-1.17.4-0 kubectl-1.17.4-0 -y

配置kubelet的cgroup

# 编辑/etc/sysconfig/kubelet,添加下面的配置
[root@master ~] vim /etc/sysconfig/kubelet

KUBELET_CGROUP_ARGS="--cgroup-driver=systemd"
KUBE_PROXY_MODE="ipvs"

3、设置kubelet开机自启

# 4 设置kubelet开机自启
[root@master ~]# systemctl enable kubelet

4、准备集群镜像资源

在安装kubernetes集群之前,必须要提前准备好集群需要的镜像,所需镜像可以通过下面命令查看。

kubeadm config images list

在这里插入图片描述

下载镜像
此镜像在kubernetes的仓库中,由于网络原因,无法连接,下面提供了一种替代方案(先下载镜像,然后再安装K8s)


images=(
    kube-apiserver:v1.17.4
    kube-controller-manager:v1.17.4
    kube-scheduler:v1.17.4
    kube-proxy:v1.17.4
    pause:3.1
    etcd:3.4.3-0
    coredns:1.6.5
)

for imageName in ${images[@]} ; do
 docker pull registry.cn-hangzhou.aliyuncs.com/google_containers/$imageName
 docker tag registry.cn-hangzhou.aliyuncs.com/google_containers/$imageName k8s.gcr.io/$imageName
 docker rmi registry.cn-hangzhou.aliyuncs.com/google_containers/$imageName
done

在这里插入图片描述

查看已经下载的docker镜像

docker images

在这里插入图片描述

5、集群安装

只需要在master节点执行

kubeadm init --kubernetes-version=v1.17.4

在这里插入图片描述

执行以下命令:

mkdir -p $HOME/.kube
sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config
sudo chown $(id -u):$(id -g) $HOME/.kube/config

node节点上执行,加入集群

kubeadm join 172.28.70.237:6443 --token xvwlc0.kod1s71j4aomv9cw \
    --discovery-token-ca-cert-hash sha256:44e81dcab071f9dc64604d974b95bad52af43c54bdf36255911c98e0978d7e54

查看集群节点

kubectl get nodes

在这里插入图片描述

6、安装网络插件(只需要在master执行)

CSDN地址

https://download.csdn.net/download/weixin_44624117/87960885

下载配置文件

wget https://raw.githubusercontent.com/coreos/flannel/master/Documentation/kube-flannel.yml

使用配置文件启动fannel

kubectl apply -f kube-flannel.yml

稍等片刻,再次查看集群节点的状态(可能需要几分钟)

kubectl get nodes

在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/696511.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

TCP协议的十大核心特性总结(全面)

目录 一.TCP本身特性 二.报文格式 TCP十大核心特性 一.确认应答 二.超时重传 三.连接管理(三次握手,四次挥手) 三次握手 四次挥手 四.滑动窗口 情况一:接收方的ACK丢失 情况二:发送方的数据包丢失 五.流量控制 六.拥塞控制 七.延迟应答 八.捎带应答 九.粘包问题 …

MATLAB工具箱下载心得(DeepLearnToolbox-master、DSP)

用MATLAB自带的工具Add-Ons只成功过一次&#xff08;一年前吧&#xff0c;又或者那次也没有成功&#xff09;。 现在发现&#xff0c;那个页面都打不开了&#xff0c;不管有没有tizi&#xff0c;都打不开了。 所以以后就只能找资源了。 这次下载DeepLearnToolbox-master&#…

shell自动化代码需求代开发

做linux&#xff0c;shell脚本代写 &#xff0c;一个简单脚本30yuan&#xff0c;复杂的另外商议。包后期维护与逻辑思路答疑。

Jmeter(五) - 从入门到精通 - 创建网络计划实战和创建高级Web测试计划(详解教程)

1.简介 上一篇中我已经将其的理论知识介绍了一下&#xff0c;这一篇我就带着大家一步一步的把上一篇介绍的理论知识实践一下&#xff0c;然后再说一下如何创建高级web测试计划。 2.网络计划实战 通过上一篇的学习&#xff0c;将其分类为&#xff1a; &#xff08;1&#xff09…

Openlayers map三要素(view,target,layers),及其他参数属性方法介绍

​​ 版本说明 Openlayers的实战教程 分为图文版 和 视频版&#xff0c; 这里的是图文版&#xff0c;包含基础知识介绍和实战的源代码&#xff0c;示例效果以gif动图的形式展现出来。 视频版 正在录制中&#xff0c;很快会上线&#xff0c;敬请期待~&#xff0c; 如有问题&am…

viewLifecycleOwner.lifecycleScope生命周期,kotlin

viewLifecycleOwner.lifecycleScope生命周期&#xff0c;kotlin viewLifecycleOwner.lifecycleScope.launch {viewLifecycleOwner.whenCreated {Log.d(TAG,"onCreated")}viewLifecycleOwner.whenStarted {Log.d(TAG,"onStarted")}viewLifecycleOwner.whenR…

FPGA中ROM初始化方法

一 读取txt数据文件进行初始化 parameter INIT_FILE "文件路径/Data.txt" &#xff08;**注意文件路径中斜杠方向**&#xff09; reg [DATA_WITDH - 1:0] ROM [DATA_DEPTH - 1:0];initial begin$readmemh(INIT_FILE, ROM, 0, DATA_DEPTH - 1); end Dat…

Vue UI 组件库

7.1.常用UI组件库 7.1.1.移动端常用UI组件库 VantCube UIMint UINutUI 7.1.2.PC端常用UI组件库 Element UIIView UI 7.2.element-ui基本使用 安装 element-ui&#xff1a;npm i element-ui -S src/main.js import Vue from vue; import App from ./App.vue;// 完整引入 i…

怎么发布QT程序的绿色版

记录一下&#xff0c;用QT Creator写窗口程序&#xff0c;编译好了以后在输出目录直接点击exe都会提示缺少各种dll 处理非常简单&#xff0c;在开始菜单找到QT相关的命令控制台你&#xff0c;如下&#xff0c;注意不要选择错了&#xff08;这个非常关键&#xff0c;如果你是用V…

word选中所有表格的问题

1 首先在word文档中按下AITF8。名字无所谓&#xff0c;SelectAllTables 把下面的代码输入进去&#xff0c;运行&#xff0c;注意运行后等一会&#xff0c;就行了&#xff0c;大约30S&#xff0c;滑动滚轮就看就行 Sub SelectAllTables()Dim tempTable As TableApplication.Scre…

工作这么久了,还不懂如何使用纯前端实现分页吗?-假如后端一股脑返回给你所有数据,让你自个实现分页该怎么办

文章目录 一、如何使用elementUIvue实现前端分页二、通用的前端分页代码 有这么个场景&#xff0c;后端接口的列表数据没有做分页给我&#xff0c;相当于是直接返回所有的列表数据&#xff0c;比如有100条就返回100&#xff0c;但是前端显示&#xff0c;则需要做成分页&#xf…

VS+OpenCV字符动画ikun打篮球

目录 一、环境搭建实现效果模糊知识点资源 一、环境搭建 Visual Studio 2019VSopenCVVS2019配置opencv4.6.0手把手一步一步实现导出OpenCV的VS项目模板从第四步导出项目模板开始看VS安装easyx图形库教程easyx.h报错&#xff1a;无法打开源文件 “xxx.h“ 的解决办法 使用默认的…

tomcat基本了解与nginx的实例

目录 一.tomcat的简介 二.tomcat它是由三个容器组成 nginx的实例1 2.案例二 案例3 四案例4 五总结 一.tomcat的简介 Tomcat 是一个开源的 Java Web 应用服务器&#xff0c;它实际上是 Apache 软件基金会的 Jakarta 项目中的一个子项目。Tomcat 的主要作用是承载和运行基…

蓝桥杯专题-试题版-【分糖果】【矩阵翻硬币】【兰顿蚂蚁】

点击跳转专栏>Unity3D特效百例点击跳转专栏>案例项目实战源码点击跳转专栏>游戏脚本-辅助自动化点击跳转专栏>Android控件全解手册点击跳转专栏>Scratch编程案例点击跳转>软考全系列点击跳转>蓝桥系列 &#x1f449;关于作者 专注于Android/Unity和各种游…

7-WebApis-4

Web APIs - 4 目标: 了解DOM节点的增删改查&#xff0c;掌握利用数据操作页面&#xff0c;完成移动端通讯录案例 日期对象节点操作M端事件JS插件综合案例 日期对象 日期对象&#xff1a;用来表示日期和时间的对象 作用&#xff1a;可以得到当前系统日期和时间 Date是JavaSc…

Verilog基础之十一、移位寄存器实现

目录 一、前言 二、工程设计 ​2.1 工程代码 2.2 综合结果 2.3 仿真结果 一、前言 移位寄存器SRL在工程中属于使用频率较高个模块&#xff0c;可用于存储数据&#xff0c;实现串并转换&#xff1b;根据数据移动方向可分为左移寄存器&#xff0c;右移寄存器&#xff0c;左移…

UDP 的报文结构和特点

一.UDP报文的结构 这是存在于各大教科书上的 其实我们应该这样来看更好理解,从上到下从左到右 源端口号:发送方地址 目的端口号:接收方地址 UDP长度:UDP报头UDP载荷, 2个字节64KB(固定不变),这是UDP能接受的最大内容 校验和:检测数据是否出错 二.UDP特点 1.无连接: 直到对方端…

如何将采购报价请求流程自动化?

在当今快节奏的商业环境中&#xff0c;效率和速度是保持竞争力的关键。在采购管理中&#xff0c;企业经常为简化操作而努力的一个领域是报价请求过程。手动处理请求、与供应商沟通并跟踪答复&#xff0c;可能非常耗时且容易出错。 然而&#xff0c;随着像8Manage SRM等专业电子…

外键导致的事务问题的解决方案

Exception分析 异常内容&#xff1a; com.zaxxer.hikari.pool.ProxyConnection : HikariPool-1 - Connection com.mysql.cj.jdbc.ConnectionImpl192ef0c0 marked as broken because of SQLSTATE(08S01), ErrorCode(0) com.mysql.cj.jdbc.exceptions.CommunicationsExceptio…

英雄大战恶棍 VoxEdit 大赛

准备好踏上超乎想像的史诗之旅了吗&#xff1f;号召所有的创作者、梦想家和有远见的人&#xff0c;在令人振奋的英雄大战恶棍 VoxEdit 大赛中展示他们的艺术才能&#xff01;准备好让你们最喜欢的英雄和卑鄙的恶棍以前所未有的方式变得栩栩如生吧&#xff01; 踏入 VoxEdit 的领…