centos安装部署Kubernetes(k8s)步骤使用kubeadm方式

news2024/11/25 1:04:58

文章目录

    • 1、修改系统配置
    • 2、安装docker应用
    • 3. 拉取docker镜像
    • 4、cri-dockerd安装
    • 5、安装kubeadm和kubelet
    • 6、配置flannel网络插件
    • 7、Node节点加入集群操作

机器地址:

192.168.0.35 k8s-master
192.168.0.39 k8s-node1
192.168.0.116 k8s-node2

1、修改系统配置

修改每台机器的名字

 hostnamectl set-hostname k8s-master
 hostnamectl set-hostname k8s-node1
 hostnamectl set-hostname k8s-node2

关闭防火墙和selinux

 systemctl stop firewalld && systemctl disable firewalld

临时关闭selinux:

setenforce 0

永久关闭:

vim /etc/selinux/config

修改selinux为disabled或者permissive 重启生效
在这里插入图片描述
配置本地解析

  echo '''
192.168.0.35 k8s-master
192.168.0.39 k8s-node1
192.168.0.116 k8s-node2
''' >> /etc/hosts

在这里插入图片描述
确保每个节点MAC地址和 product_uuid 的唯一性

你可以使用命令 ip linkifconfig -a 来获取网络接口的 MAC 地址
可以使用 sudo cat /sys/class/dmi/id/product_uuid 命令对 product_uuid 校验
一般来讲,硬件设备会拥有唯一的地址,但是有些虚拟机的地址可能会重复。 Kubernetes 使用这些值来唯一确定集群中的节点。 如果这些值在每个节点上不唯一,可能会导致安装失败。

同步时间
如果各机器上时间都没有问题,也没有偏差,则可以跳过该步骤。

# 安装ntp工具
yum install -y ntp

#设置时区
timedatectl set-timezone 'Asia/Shanghai'

# 同步时间
ntpdate ntp1.aliyun.com

升级内核
链接:linux(centos7.6–>7.9)内核升级
更新yum—版本高可以跳过此步骤

sudo yum update

2、安装docker应用

每个节点都需要下载

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

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

yum -y install docker-ce 

注意:
如果使用的挂载磁盘则需要更改docker的数据目录

如果是启动过的docker则需要停止docker服务 然后把 /var/lib/docker/目录下的数据移动到新的目录 mv /var/lib/docker/ /data/docker/

修改docker默认数据存储目录配置,在/etc/docker/daemon.json文件添加 以下内容,若是没有/etc/docker/daemon.json文件,则新建该文件

vim /etc/docker/daemon.json

{

 "data-root": "/data/docker"

}

启动docker

systemctl start docker   

systemctl enable docker
  设置开机自启

在这里插入图片描述

关闭swap分区

Kubernetes 1.8开始要求关闭系统的Swap,如果不关闭,默认配置下kubelet将无法启动。方法一,通过kubelet的启动参数–fail-swap-on=false更改这个限制。方法二,关闭系统的Swap。

每个节点都需要关闭

swapoff -a

vim /etc/fstab 注释掉SWAP的自动挂载
在这里插入图片描述
使用free -m查看是否关闭
在这里插入图片描述

3. 拉取docker镜像

初始化的时候,它会自动拉取镜像但是自动拉取用的是k8s官网的源地址容易失败所以手动拉取aliyun的镜像。注意拉取的docker镜像的版本必须要和kubelet、kubectl的版本保持一致。在下面初始化时直接指定阿里云的镜像。

vim dockerpull.sh

docker pull registry.cn-hangzhou.aliyuncs.com/google_containers/kube-controller-manager:v1.26.2
docker pull registry.cn-hangzhou.aliyuncs.com/google_containers/kube-proxy:v1.26.2
docker pull registry.cn-hangzhou.aliyuncs.com/google_containers/kube-apiserver:v1.26.2
docker pull registry.cn-hangzhou.aliyuncs.com/google_containers/kube-scheduler:v1.26.2
docker pull registry.cn-hangzhou.aliyuncs.com/google_containers/coredns:1.9.3
docker pull registry.cn-hangzhou.aliyuncs.com/google_containers/etcd:3.5.6-0
docker pull registry.cn-hangzhou.aliyuncs.com/google_containers/pause:3.9

执行脚本拉取镜像

bash dockerpull.sh 

看下镜像是否都拉取成功

docker images  

在这里插入图片描述

4、cri-dockerd安装

Kubernetes 的早期版本仅适用于特定的容器运行时:Docker Engine。 后来,Kubernetes 增加了对使用其他容器运行时的支持。为了实现编排器和许多不同的容器运行时之间交互操作创建了CRI 标准。 Docker Engine 没有实现(CRI)接口,所以Kubernetes 项目创建了特殊代码dockershim来帮助过渡,Dockershim 代码一直是一个临时解决方案(因此得名:shim)。 Kubernetes自v1.24移除了对Dockershim 的支持,而Docker Engine默认又不支持CRI规范,因而二者将无法直接完成整合。为此,Mirantis和Docker联合创建了cri-dockerd项目,用于为Docker Engine提供一个能够支持到CRI规范的垫片,从而能够让Kubernetes基于CRI控制Docker 。

注意部署最新版本XXXX 默认不在是使用docker容器,所以需要下载一个插件
所有节点都需要下载
https://github.com/Mirantis/cri-dockerd/releases

下载对应版本的cri-dockerd rpm包,注意版本和linux版本,也可以自行下载上传至所有主机

wget https://github.com/Mirantis/cri-dockerd/releases/download/v0.3.2/cri-dockerd-0.3.2-3.el7.x86_64.rpm

安装
rpm -ivh cri-dockerd-0.3.2-3.el7.x86_64.rpm

在这里插入图片描述

修改/usr/lib/systemd/system/cri-docker.service文件中ExecStart配置kubelet使用pause镜像

vim /usr/lib/systemd/system/cri-docker.service


ExecStart=/usr/bin/cri-dockerd --network-plugin=cni --pod-infra-container-image=registry.aliyuncs.com/google_containers/pause:3.9

在这里插入图片描述
重新加载&现在启动

systemctl daemon-reload

systemctl enable --now cri-docker

加载ipvs相关内核模块

vim mod.sh

#!/bin/bash

modprobe ip_vs

modprobe ip_vs_rr

modprobe ip_vs_wrr

modprobe ip_vs_sh

modprobe nf_conntrack_ipv4

modprobe br_netfilter

在这里插入图片描述

chmod +x mod.sh

bash   mod.sh

在这里插入图片描述

scp mod.sh  k8s-node1:/root/   

scp mod.sh  k8s-node2:/root/ 

发送后记得执行一下

vim /etc/rc.local   如果重新开机,需要重新加载,需要写在 /etc/rc.local 中开机自动加载
添加这句 bash /root.mod.sh

在这里插入图片描述

chmod +x /etc/rc.local

配置转发相关参数,否则可能会出错

cat <<EOF >  /etc/sysctl.d/k8s.conf

net.bridge.bridge-nf-call-ip6tables = 1

net.bridge.bridge-nf-call-iptables = 1

vm.swappiness=0

EOF

使配置生效

sysctl --system  

查看是否加载成功

lsmod | grep ip_vs

在这里插入图片描述

5、安装kubeadm和kubelet

所有节点都需要安装

  • 配置阿里云的yum源
cat <<EOF > /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

EOF

拷贝到另外两台机器

 scp /etc/yum.repos.d/kubernetes.repo   k8s-node1:/etc/yum.repos.d/kubernetes.repo

 scp /etc/yum.repos.d/kubernetes.repo   k8s-node2:/etc/yum.repos.d/kubernetes.repo
  • 安装
yum makecache fast -y

yum install -y kubelet kubeadm kubectl ipvsadm

#注意,这样默认是下载最新版本

如果想下载旧版本,后面要跟上指定的版本号

yum install -y kubelet-1.22.2-0.x86_64 kubeadm-1.22.2-0.x86_64 kubectl-1.22.2-0.x86_64 ipvsadm  

启动kubelet

systemctl daemon-reload

systemctl enable kubelet && systemctl restart kubelet
systemctl status kubelet

在这里插入图片描述
(每个节点都会报错),不用管master节点初始化之后就好了。

  • 配置master节点初始化
  • kubeadm init --help可以查看命令的具体参数用法

在master节点执行初始化(node节点不用执行)

参数详情:

apiserver-advertise-address 指定apiserver的IP,即master节点的IP

image-repository 设置镜像仓库为国内的阿里云镜像仓库

kubernetes-version 设置k8s的版本,跟步骤三的kubeadm版本一致

service-cidr 这是设置node节点的网络的,暂时这样设置

pod-network-cidr 这是设置node节点的网络的,暂时这样设置

cri-socket 设置cri使用cri-dockerd
查看版本

kubeadm  version

在这里插入图片描述

kubeadm init --apiserver-advertise-address=192.168.0.35 --image-repository registry.aliyuncs.com/google_containers --kubernetes-version v1.27.2 --service-cidr=10.168.0.0/12 --pod-network-cidr=10.244.0.0/16 --cri-socket unix:///var/run/cri-dockerd.sock  --ignore-preflight-errors=all

执行完初始化的命令 查看一下回显是否成功 返回0为成功

echo $?

在这里插入图片描述

kubeadm join 192.168.0.35:6443 --token 62kh2k.7lfpud7ridya1it7 \
	--discovery-token-ca-cert-hash sha256:b55066a01216999577c2260bad6349ab8e293bff58ec9ea041b2c7c7bb51913e

在这里插入图片描述
初始化完成后根据提示的命令操作即可

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

如果使用的root用户可以操作这条命令

  export KUBECONFIG=/etc/kubernetes/admin.conf

可以查看到master在这里插入图片描述

6、配置flannel网络插件

完成master节点的时候k8s已经叫我们去配置pod网络了。在k8s系统上Pod网络的实现需要依赖于第三方插件进行种类有很多我们这里使用的flannel。

cd ~ && mkdir flannel && cd flannel
wget https://github.com/flannel-io/flannel/releases/latest/download/kube-flannel.yml

查看一下镜像版本随后使用docker拉取,所有节点都拉
vim kube-flannel.yml
在这里插入图片描述

在这里插入图片描述
拉取要用到的镜像所有节点都要拉取

docker pull docker.io/flannel/flannel:v0.22.0

docker pull docker.io/flannel/flannel-cni-plugin:v1.1.2

重新加载文件

kubectl apply -f kube-flannel.yml

在这里插入图片描述
查看一下master节点的状态

kubectl  get nodes

在这里插入图片描述
从NoReady 变成了 Ready 那么我们的flannel就部署好了

7、Node节点加入集群操作

Node1 节点操作

kubeadm join 192.168.0.35:6443 --token 62kh2k.7lfpud7ridya1it7 \
	--discovery-token-ca-cert-hash sha256:b55066a01216999577c2260bad6349ab8e293bff58ec9ea041b2c7c7bb51913e --cri-socket unix:///var/run/cri-dockerd.sock

在这里插入图片描述
再次查看状态,Node两个节点也已经加入成功
在这里插入图片描述
看下flannel运行状态

 kubectl get pods --namespace kube-flannel   

在这里插入图片描述
至此搭建完成。

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

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

相关文章

Web应用技术(第十六周/持续更新)

本次联系基于how2j的教程完成对SpringBoot的初步学习。 初识Springboot 学习导入&#xff1a;1.第一个基于SpringBoot的项目&#xff1a;&#xff08;1&#xff09;application.java&#xff1a;该文件中的核心代码&#xff1a; &#xff08;2&#xff09;HelloController.jav…

一. ATR技术指标的定义与运用

一. ATR的定义 1. 什么是ATR ATR英文全名是Average true range&#xff0c;翻译过来就是平均真实波幅&#xff0c;这个指标主要用来衡量最近N天TR(真实波幅)的平均值。 2. ATR相关计算公式 T R [ ( 最高价 − 最低价 ) &#xff0c; ( 前一次收盘价 − 最高价 ) &#xff0…

macOS Sonoma 14.0 Beta 1 (23A5257q) Boot ISO 原版可引导镜像

macOS Sonoma 14.0 Beta 1 (23A5257q) Boot ISO 原版可引导镜像 本站下载的 macOS 软件包&#xff0c;既可以拖拽到 Applications&#xff08;应用程序&#xff09;下直接安装&#xff0c;也可以制作启动 U 盘安装&#xff0c;或者在虚拟机中启动安装。另外也支持在 Windows 和…

OAuth2.0 授权 OpenID Connect 身份认证

文章目录 OAuth2.0历史由来名词解释授权码模式&#xff08;authorization code 最常用&#xff09;先换取code&#xff0c;再根据 code 换取 access_token原因 简化模式&#xff08;implicit&#xff09;密码模式&#xff08;resource owner password credentials&#xff09;客…

【P49】JMeter 查看结果树(View Results Tree)

文章目录 一、查看结果树&#xff08;View Results Tree&#xff09;参数说明二、准备工作三、测试计划设计 一、查看结果树&#xff08;View Results Tree&#xff09;参数说明 可以查看取样器的请求参数、返回结果 使用场景&#xff1a;一般在调试测试计划期间用来查看取样…

Bigdata1234.cn课堂测试

Java源文件中有一个公共类名称为Test&#xff0c;则该源文件名必须是&#xff1a;Test.java . Java中的基本数据类型共有8个&#xff1a;byte、short、int、long、float、double、char、boolean。 . Eclipse中内容补全的快捷键是alt/ Eclipse 中自动导包的快捷键是 Ctrl Sh…

MySQL数据库从入门到精通学习第8天(表数据的查询)

表数据的查询 基本查询语句单表查询聚合函数查询多表连接查询子查询合并查询结果定义表和字段的别名使用正则表达式查询 基本查询语句 SELECT 语句非常的强大&#xff0c;是最常用的查询语句。他具有一个固定的格式&#xff0c;如下&#xff1a; SELECT 查询的内容 FROM 数据…

【Mysql数据库从0到1】-入门基础篇--mysql 多表查询

【Mysql数据库从0到1】-入门基础篇--mysql 多表查询 &#x1f53b;一、mysql 多表查询1.1 &#x1f343; 7种sql joins 的实现1.2 &#x1f343; 错误写法---笛卡尔积错误1.3 &#x1f343; 正确的多表select写法 &#x1f53b;二、内连接( inner) join&#x1f53b;三、 外连接…

100天精通Golang(基础入门篇)——第2天:学习Go语言的前世今生:一门强大的编程语言的崛起

&#x1f337; 博主 libin9iOak带您 Go to Golang Language.✨ &#x1f984; 个人主页——libin9iOak的博客&#x1f390; &#x1f433; 《面试题大全》 文章图文并茂&#x1f995;生动形象&#x1f996;简单易学&#xff01;欢迎大家来踩踩~&#x1f33a; &#x1f30a; 《I…

如何构建一个可实盘的跨期套利策略?

一、策略摘要 跨期套利&#xff0c;在同一个品种但不同月份的期货合约上建立仓位相同、方向相反的交易头寸&#xff0c;最后以对冲或交割方式结束交易、获得收益。因其合约价差具有较好的稳定性&#xff0c;被众多交易者所青睐。本篇内容我们将通过掘金量化平台构建一个可交易…

私募证券基金动态-23年5月报

成交量&#xff1a;5月日均11,342.95亿元 2023年5月A股两市日均成交9,284.12亿元&#xff0c;环比下降18.15%、同比上升10.56%。5月整体20个交易日&#xff0c;仅有月初5个交易日单日成交金额过万亿。 管理人&#xff1a;新提交备案6家&#xff0c;备案通过0家 2023年5月新提…

Shape-Erased Feature Learning for Visible-Infrared Person Re-Identification

Shape-Erased Feature Learning for Visible-Infrared Person Re-Identification&#xff08;形状擦除特征学习在可见红外人物再识别中的应用&#xff09; 期刊合集&#xff1a;最近五年&#xff0c;包含顶刊&#xff0c;顶会&#xff0c;学报>>网址 文章来源&#xff1…

Lecture 10 Distributional Semantics

目录 Problems of Lexical Database 词汇数据库的问题分布假设根据上下文猜测单词含义Word vectors 词向量词嵌入Count-based Word Vectors 基于计数的方法Document as Context: The Vector Space Model 向量空间模型TF-IDFDimensionality Reduction 降维 Words as Context 单词…

跨数据中心高可用架构设计

前言 随着常年的码代码&#xff0c;做设计&#xff0c;笔者做过基础编码&#xff0c;云计算平台&#xff0c;架构师&#xff0c;见过不少应用设计&#xff0c;系统设计&#xff0c;中间件&#xff0c;了解现有的技术体系发展模式&#xff0c;集中式->分布式&#xff1b;cap…

阿里8年,肝到P7只剩这份笔记了,已助朋友拿到15个Offer....

时光飞逝&#xff0c;转眼间在阿里工作了8年&#xff0c;工作压力大&#xff0c;节奏快&#xff0c;但是从技术上确实得到了成长&#xff0c;尤其是当你维护与大促相关的系统的时候&#xff0c;熬到P7也费了不少心思 我的职业生涯开始和大多数测试人一样&#xff0c;刚开始接触…

Redis进阶:分布式锁问题

分布式锁问题 1. 分布式锁问题1.1 问题介绍1.2 解决方案1.2.1 分布式锁主流的实现方案1.2.2 使用Redis实现分布式锁1.2.3 分布式锁需要满足的四个条件 1.3 实现分布式锁 1. 分布式锁问题 1.1 问题介绍 单机单体中的锁机制在分布式集群系统中失效&#xff1b;单纯的Java API并…

Linux快速安装MySQL

文章目录 Linux上安装MySQL1. 安装MySQL1&#xff09;上传MySQL安装包以及MySQL驱动jar包2&#xff09;解压MySQL安装包3&#xff09;卸载系统自带的mariadb4&#xff09;安装MySQL依赖5&#xff09;安装mysql-client6&#xff09;安装mysql-server7&#xff09;启动MySQL8&…

案例27:基于Java宠物领养系统开题报告设计

博主介绍&#xff1a;✌全网粉丝30W,csdn特邀作者、博客专家、CSDN新星计划导师、java领域优质创作者,博客之星、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java技术领域和毕业项目实战✌ &#x1f345;文末获取源码联系&#x1f345; &#x1f447;&#x1f3fb; 精彩专…

性能测试之Docker监控

相信很多程序员在进行性能测试时常常会遇到一些问题&#xff0c;比如如何监控Docker容器的运行状态。这时候&#xff0c;Docker监控工具就派上了用场。 我曾经也遇到过这样的问题&#xff0c;不知道如何获取Docker容器的性能数据&#xff0c;直到我发现了Docker监控工具。使用…

干货分享 | TSMaster小功能之实时注释在图形中的使用技巧

今天给大家介绍TSMaster功能之实时注释在图形中的使用技巧&#xff0c;主要通过手动注释、自动化注释、实时注释在记录与回放中的运用等三方面来进行介绍。 一、实时注释的作用 在了解实时注释的使用技巧之前&#xff0c;我们先了解一下实时注释是什么以及它的作用。 实时注释…