(二)K8s学习笔记——使用Kubeadm搭建K8s集群(单master节点)

【kubernetes篇】教你kubeadm方式搭建kubernetes 集群。单master节点集群,多master节点集群说明。 文章目录kubernetes集群搭建1. 集群分类2. 集群搭建硬件要求3. 集群搭建方式4. kubeadm部署方式4.1 安装要求4.2 初始化工作4.3 安装Docker/kubeadm/kubelet4.4 部署Kubernetes Master4.5 加入Kubernetes Node4.6 部署CNI网络插件4.7 测试kubernetes集群 kubernetes集群搭建 1. 集群分类 kubernetes集群分为单Master节点集群和多Master节点集群。在实际应用中我们一般采用多Ma 阅读详情

一、准备工作

1.准备服务器

搭建K8s集群最好准备多台配置稍高点的机器,我这里使用谷歌云创建了三台2核4G的服务器用于实验,当然,也可以使用虚拟机进行试验。
在这里插入图片描述

服务器中所使用的的系统和软件版本如下:

名称版本
操作系统CentOS7
docker20.10.6(默认最新)
Kubeadm1.21.1 (默认最新)
Kubelet1.21.1(默认最新)

其中1台作为master节点,其他作为node节点。此时三台机器间是可以互相访问的。各节点及ip如下:

节点ip
master134.80.118.209
node135.189.182.143
node2104.199.196.26

2.所有服务器初始化

# *为可选项
# 1.关闭防火墙
systemctl stop firewalld
systemctl disable firewalld

# 2.关闭selinux功能
sed -i 's/enforcing/disabled/' /etc/selinux/config  # 永久关闭
setenforce 0  # 临时关闭

# 3.关闭swap
sed -ri 's/.*swap.*/#&/' /etc/fstab    # 永久关闭
swapoff -a  # 临时关闭

# *4.根据规划设置主机名,我这里就使用k8s-master、k8s-node1、k8s-node2
hostnamectl set-hostname <hostname>

# 5.在master添加hosts
cat >> /etc/hosts << EOF
34.80.118.209 k8s-master
35.189.182.143 k8s-node1
104.199.196.26 k8s-node2
EOF

# 6.将桥接的IPv4流量传递到iptables的链
cat > /etc/sysctl.d/k8s.conf << EOF
net.bridge.bridge-nf-call-ip6tables = 1
net.bridge.bridge-nf-call-iptables = 1
EOF
sysctl --system  # 生效

# 7.时间同步,先安装包。我这里使用阿里云的时间服务器
yum install ntpdate -y
ntpdate ntp1.aliyun.com

# *8.安装wget
yum install wget

二、开始搭建K8s集群

1.在所有机器上安装Docker、Kubeadm、Kubelet、Kubectl

1.1 安装Docker

(1)安装

# 添加docker仓库源,国内可以使用阿里云
wget https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo -O /etc/yum.repos.d/docker-ce.repo

# 我这里使用的谷歌云服务器,所以从国外镜像点下载速度较快,所以按照docker官方提示使用官方源:
yum install -y yum-utils
yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo

# 更新镜像源
yum clean all && yum makecache && yum -y update

# 查看docker-ce版本
yum list docker-ce --showduplicates | sort -r

# 安装docker,不指定版本则安装最新版,我这里使用最新版本吧
yum install docker-ce-<version> docker-ce-cli-<version> containerd.io

# 直接安装最新版:
yum install docker-ce docker-ce-cli containerd.io

# 启动docker并设置开机启动
systemctl enable docker && systemctl start docker

# 查看docker版本
docker --version
# 我这里自动安装的最新的20.10.6版本
Docker version 20.10.6, build 370c289

# 查看一下docker进程是否启动
ps aux |grep docker

(2)如果使用国内的服务器,最好配置一下阿里云docker镜像源:

# 阿里云docker镜像源
cat > /etc/docker/daemon.json << EOF
{
  "registry-mirrors": ["https://b9pmyelo.mirror.aliyuncs.com"]
}
EOF

1.2 安装Kubelet、Kubeadm、kubectl

(1)配置一下kubernetes源,我这里就不用国内的源了,使用k8s官方推荐的源:

# 阿里云k8s源
cat > /etc/yum.repos.d/kubernetes.repo << EOF
[kubernetes]
name=Kubernetes
baseurl=https://mirrors.aliyun.com/kubernetes/yum/repos/kubernetes-el7-x86_64
enabled=1
gpgcheck=0
repo_gpgcheck=0
gpgkey=https://mirrors.aliyun.com/kubernetes/yum/doc/yum-key.gpg https://mirrors.aliyun.com/kubernetes/yum/doc/rpm-package-key.gpg
EOF
# k8s官方源
cat <<EOF > /etc/yum.repos.d/kubernetes.repo
[kubernetes]
name=Kubernetes
baseurl=https://packages.cloud.google.com/yum/repos/kubernetes-el7-x86_64
enabled=1
gpgcheck=1
repo_gpgcheck=1
gpgkey=https://packages.cloud.google.com/yum/doc/yum-key.gpg https://packages.cloud.google.com/yum/doc/rpm-package-key.gpg
EOF

(2)开始安装Kubelet、kubeadm、kubectl

yum install -y kubelet kubeadm kubectl

# 设为kubelet开机启动
systemctl enable kubelet

2. K8s master节点初始化

(1)将所有节点的docker driver指定为systemcmd。如果不进行,会报k8s部署集群踩坑集锦中的错误2。

查看一下:

docker info |grep Cgroup

打开docker配置文件:

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

这里改一下,加在-H之前:
在这里插入图片描述
改为:

ExecStart=/usr/bin/dockerd --exec-opt native.cgroupdriver=systemd

然后重启docker:

systemctl daemon-reload
# 再次查看
docker info | grep Cgroup

如下:
在这里插入图片描述

(2)在master节点执行以下命令,ip为master的外网ip,版本号为kubelet版本号,最后两个参数不冲突即可。

kubeadm init \
  --kubernetes-version v1.21.1 \
  --service-cidr=10.96.0.0/16 \
  --pod-network-cidr=10.244.0.0/16

注意:国内需要指定镜像源,但是我没有尝试,可能会出错,具体见下面【注】踩坑集锦:

--image-repository registry.aliyuncs.com/google_containers

【注】这里踩了一个坑:不能指定 --apiserver-advertise-address=34.80.118.209 \这个字段。如果指定了这个字段,导致出现问题:见k8s部署集群踩坑集锦。

如果执行init失败,下次执行前需要重置一下:

# 每次执行init前先重置一下kubeadm,相当于对失败的初始化做一次清理
kubeadm reset

查看状态:

systemctl status kubelet

成功:
在这里插入图片描述
(3)按照上图蓝框中的提示,使用kubectl工具:

mkdir -p $HOME/.kube
cp -i /etc/kubernetes/admin.conf $HOME/.kube/config
chown $(id -u):$(id -g) $HOME/.kube/config
# 查看一下节点
kubectl get nodes

在这里插入图片描述
(4)把最后的加入集群指令复制下来,用于后面node节点加入集群使用:

kubeadm join 10.140.0.18:6443 --token lqob2i.7nzio8qd53dglufo \
        --discovery-token-ca-cert-hash sha256:917eb80e067276066fae71fe80b4801fe0fbd53379ae04729280ac2f8140ba9a
# 默认token有效期一天,到期后需要使用如下命令创建新token
kubeadm token create --print-join-command

(4)安装完后,执行一下docker images看一下master节点的当前已有的镜像如下:
在这里插入图片描述

【注】最后,备注一下k8s的卸载方法,假设安装完k8s后现有的docker images如下:
在这里插入图片描述

kubeadm reset
# 卸载
yum erase -y kubelet kubectl kubeadm kubernetes-cni
# 删除的时候注意版本号和docker images里的版本一样
docker rmi -f k8s.gcr.io/kube-apiserver:v1.19.0
docker rmi -f k8s.gcr.io/kube-controller-manager:v1.19.0
docker rmi -f k8s.gcr.io/kube-scheduler:v1.19.0
docker rmi -f k8s.gcr.io/kube-proxy:v1.19.0
docker rmi -f k8s.gcr.io/pause:3.2
docker rmi -f k8s.gcr.io/etcd:3.4.9-1
docker rmi -f k8s.gcr.io/coredns:1.7.0

3.向集群中添加node节点

(1)在所有node节点中,执行以下命令加入集群:

kubeadm join 10.140.0.18:6443 --token lqob2i.7nzio8qd53dglufo \
        --discovery-token-ca-cert-hash sha256:917eb80e067276066fae71fec0b4801fe8fbd93279ae04729280ac2f8940ba9a

如下,完成:
在这里插入图片描述
(2)在master节点中查看:

kubectl get nodes

可以看到所有加入集群的节点。此时都是NotReady状态。
在这里插入图片描述
(3)配置CNI网络插件,显示如下:

# 安装网络插件
kubectl apply -f https://raw.githubusercontent.com/coreos/flannel/master/Documentation/kube-flannel.yml

在这里插入图片描述
(4)查看pods的运行情况

# 等待一会,查看当前pods的运行情况
kubectl get pods -n kube-system

显示如下:
在这里插入图片描述
此时再次执行,状态显示为Ready:

kubectl get nodes

在这里插入图片描述

4.使用nginx测试k8s集群

(1)安装nginx

# 安装nginx
kubectl create deployment nginx --image=nginx
# 对外暴露端口
kubectl expose deployment nginx --port=80 --type=NodePort

(2)查看pod

# 查看pod
kubectl get pod,svc

显示如下:
在这里插入图片描述

(3)此时通过任意一个节点的ip+端口号31699即可访问到nginx。搭建集群成功。在这里插入图片描述

Kubeadm安装K8S单master节点集群 本文主要讲解通过kubeadm安装k8s集群环境所需要的操作有哪些,例如集群环境的规划、机器的配置、初始化集群、扩容集群添加节点,网络组建calico的安装以及验证等。 阅读详情

相关推荐

kubeadm部署单Master节点kubernetes集群

Kubeadm是为创建Kubernetes集群提供最佳实践并能够“快速路径”构建kubernetes集群的工具。它能够帮助我们执行必要的操作,以获得最小可行的、安全的集群,并以用户友好的方式运行。

tangtangttttt的博客 1341

kubeadm安装单master单node节点k8s集群

操作系统:centos7.6 podSubnet(pod 网段) 10.244.0.0/16 serviceSubnet(service 网段): 10.10.0.0/16 集群角色 IP 主机名 安装组件 控制节点 192.168.53.100 k8s-jy-master1 apiserver、controller-manager、scheduler、etcd、kube-proxy、...

weixin_47980221的博客 474

在欧拉系统上用Kubeadm方式部署(k8s)kubernetes多master高可用集群

1.1 Kubernetes高可用集群部署1.1.1 集群架构1. 高可用拓扑可以设置 HA 集群:使用堆叠(stacked)控制平面节点,其中 etcd 节点与控制平面节点共存;使用外部 etcd 节点,其中 etcd 在与控制平面不同的节点上运行;在设置 HA 集群之前,应该仔细考虑每种拓扑的优缺点。2. 堆叠(Stacked) etcd 拓扑主要特点:etcd 分布式数据存储集群堆叠在 kubeadm 管理的控制平面节点上,作为控制平面的一个组件运行。

Richardlygo的博客 2845

k8s入门之一用kubeadm部署kubernetes单master集群教程

2019独角兽企业重金招聘Python工程师标准>>> ...

weixin_33724059的博客 423

K8S集群kubeadm搭建(多master单node)

架构图: k8s环境规划: podSubnet(pod网段) 10.244.0.0/16 serviceSubnet(serivce网段) 10.10.0.0/16 实验环境规划: 操作系统: Centos7.9 配置: 2G内存/4vCPU/40G磁盘 网络:NAT模式 开启虚拟机的虚拟化 集群ip以及常见的需要安装的组件 常见的两种安装方式: kubeadm以及二进制安装 目前是按照kubeadm安装#修改/etc/sysconfig/network-scrips/ifcfg-ens33文件

Aaron.无剑 2505

kubernetes(K8S)学习(一):K8S集群搭建(1 master 2 worker)

本文详细介绍了使用kubeadm搭建1个master节点和2个worker节点组成的Kubernetes集群。主要内容包括:环境准备(统一Docker 18.09.0和K8S v1.14.0版本,系统要求CentOS 7+)、3台虚拟机配置(2核2GB内存)、网络互通验证;集群搭建步骤:更新yum、安装依赖包、配置Docker仓库和镜像加速器。所有操作需在3台机器上执行,为后续K8S组件安装奠定基础。

꯭ 瞎꯭扯꯭蛋꯭的博客 3064

kubeadm部署单master节点

选择拉取的kubernetes镜像版本过高,因此需要降低一些,修改中的即可。

sinat_37163044的博客 588

kubeadm安装K8s高可用集群之集群初始化及master/node节点加入calico网络插件安装

记录用kubeadm部署搭建keepalive+nginx方式实现高可用集群 kubeadm安装K8s集群之集群初始化及master/node节点加入集群calico网络插件安装

诚不我欺的博客 1906

kubeadm安装 多master节点的k8s高可用集群

Swap是交换分区,如果机器内存不够,会使用swap分区,但是swap分区的性能较低,k8s设计的时候为了能提升性能,默认是不允许使用交换分区的。Kubeadm初始化的时候会检测swap是否关闭,如果没关闭,那就初始化失败。拉取镜像,但是k8s.gcr.io访问不到,所以需要指定从registry.aliyuncs.com/google_containers仓库拉取镜像。说明::手动指定仓库地址为registry.aliyuncs.com/google_containers,kubeadm默认从。

weixin_36873225的博客 1972

使用kubeadm方式以及使用第三方工具sealos搭建K8S集群

kubeadm是官方社区推出的一个用于快速部署kubernetes集群的工具。

2401_83342251的博客 1632

EPSON RX8010SJ RTC实战:I2C寄存器配置避坑指南(附完整初始化代码)

本文详细解析了EPSON RX8010SJ RTC芯片在I2C寄存器配置中的常见问题与解决方案,包括TEST位、STOP位和中断控制等关键配置要点。通过实战经验分享和完整的初始化代码模板,帮助开发者避免常见陷阱,确保RTC模块的稳定运行。

weixin_28678831的博客 406

Kubeadm安装高可用的K8S集群--多master单node

Kubeadm安装高可用的K8S集群–多master单node master1 IP 192.168.1.180/24 OS Centos7.6 master2 IP 192.168.1.181/24 OS Centos7.6 node1 IP 192.168.1.182/24 OS Centos7.6 1.初始化k8s集群的安装环境 1.1 .配置静态ip 按如上ip信息给三台节点配置好ip地址 1.2 .修改节点主机名 #master1 hostnamectl set-hostname master1

weixin_49888547的博客 996

大疆M3508电机使用CAN通信进行速度PID闭环控制详解

目录一. 简介二. 电机通信协议三. 电机PID控制原理四. 官方代码移植-中断接收五. 官方代码移植-查询接收 一. 简介 之前写过一篇文章STM32实现四驱小车(五)电机控制任务——电机速度PID控制算法,其中是以大疆的M3508电机为例进行讲解的(没错,就是RoboMaster机器人同款电机,不过Robomaster上的电机好像是小一号的M2006)。不少小伙伴私信问我要代码,我都回复说不是有官方demo么。后来问的人多了我大概明白了,看来官方的Demo还是有点门槛。可能是带FreeRTOS操作系统看

qq_30267617的博客 7万+

【云原生 • Kubernetes】搭建 k8s 集群(Kubeadm 方式)

kubeadm 方式搭建 k8s 集群,包含详细步骤及解析。

商务合作 | 共同学习 | 携手共进 7万+

从材料到磁场:ANSYS Workbench永磁体仿真全流程解析

本文详细解析了在ANSYS Workbench中进行永磁体仿真的完整流程。从钕铁硼等永磁材料的特性讲起,逐步指导如何在软件中搭建模型、定义关键磁化方向、设置边界条件与网格划分,并解读磁场分布结果。文章旨在帮助工程师掌握静磁场仿真核心技术,为电机、传感器等设备的设计与优化提供精准指导。

weixin_29229989的博客 272

别再死记硬背了!一张图搞懂无刷电机半桥与全桥驱动的核心差异(附避坑指南)

本文深入解析无刷直流电机的半桥与全桥驱动方式的核心差异,提供直观对比与选型指南。半桥驱动结构简单、成本低,适合低要求场景;全桥驱动性能优越但复杂,适用于高精度控制。文章还包含实战避坑指南,帮助工程师优化驱动方案选择与应用。

weixin_29290947的博客 319

kubeadm搭建生产环境的单master节点的k8s集群

使用kubeadm快速搭建生产环境的单master节点的k8s集群

qq_38882630的博客 2745

彻底解决0x80070005错误代码:全面分析与实战指南

0x80070005错误代码虽然令人头疼,但通过上述方法,我们完全有能力将其攻克。从检查磁盘空间、设置账号权限,到运行疑难解答和系统文件检查器,再到调整相关服务状态,每一步都是解决这一问题的关键。希望本文能为你提供有力的帮助,让你在使用Windows系统的过程中更加顺畅无忧。

nntxthml的博客 6933

从零搭建 Kubernetes 单 Master 集群:CentOS 7 + containerd + Flannel 完整实录

本文将在CentOS 7环境中使用containerd、kubeadm、kubelet、kubectl与Flannel搭建Kubernetes集群,并整理Master与Worker节点的自动安装脚本。

羑悻的博客. 3万+

PD3.0详解 协议的时序timer和counter计数

前面介绍了关于PD协议的交互,还有协议层数据各个字段的含义,但是一直没有系统的说关于协议的时序,还有部分counter,就是协议允许发送的次数,或者一些其他计数。 大师匈今天说一下关于这方面的东西,这些东西都是非常关键的东西,但是相对来说PD标准内对时序的要求还是比较宽泛,非常容易能够实现这样的要求。 Timer 1、CRCReceiveTimer 0.9~1.1ms 表示每次通信收到goodcrc的时间,必须在这个时间内收到goodcrc, 我们要注意不是在0.9~1.1ms内,而是第三方可以在这个范

大师匈的博客 5007

财务数字化——解读美的战略规划之财务组织体系建设【附全文阅读】

本文提出适用于集团企业的财务管控方案,面向财务负责人、HR及战略规划人员。方案整合四种管控模式,结合500强案例,构建"职能定位-架构设计-权责划分-人才发展"体系,涵盖财务五大模块。通过明确总部与事业部权责边界,提供组织架构等实操框架,旨在平衡财务管控与业务支持,提升效率与风控能力,满足集团财务体系规范化建设需求。

cdfunlove的博客 663

【云原生-K8s-1】kubeadm搭建k8s集群(一主两从)完整教程及kubernetes简介

Kubernetes(简称:k8s) 是Google在2014年6月开源的一个容器集群管理系统,使用Go语言开发,用于管理云平台中多个主机上的容器化的应用,Kubernetes的目标是让部署容器化的应用简单并且高效,Kubernetes提供了资源调度、部署管理、服务发现、扩容缩容、监控,维护等一整套功能。

liu_chen_yang的博客 5788

NVIDIA Isaac Lab 入门教程(一)

Isaac Lab 是一个用于机器人学习的统一模块化框架,旨在简化机器人研究中的常见工作流程(如 RL、从演示中学习和运动规划)。它建立在英伟达 Isaac Sim 的基础上,利用最新的仿真功能实现逼真的场景和快速高效的仿真。该框架的核心目标是Isaac Lab 的主要功能包括:由 PhysX 提供的快速准确的物理模拟、用于矢量化渲染的平铺渲染 API、用于提高鲁棒性和适应性的域随机化,以及对在云中运行的支持。有关该框架的更多信息,请参阅论文[MYY+23]。

机器人控制与仿真应用 8217

Kubeadm安装单master多node节点K8S集群

记录安装K8S集群 单控制节点多工作节点 的步骤

weixin_40364776的博客 1727

LinePhone3.2.7(android端最新版本) sip客户端

SIP客户端For android:LinePhone3.2.7(最新版本),官网地址:http://www.linphone.org/

efm32 入门.pdf

本PDF共计22页,介绍的是操作驱动API,下载与否自己斟酌。

kubeadm部署K8S单master架构实战

Kubernetes(K8S)是主流的容器编排工具,支持单机和集群部署。其架构分为控制平面(master)和工作节点(worker),包含etcd、api-server等核心组件,通过网络插件(CNI)实现容器通信。部署方式包括官方的kubeadm(快速部署)和二进制方式(更灵活),以及第三方方案如kubesphere。环境准备需关闭swap分区、确保节点唯一性、配置网络和cgroup驱动。建议生产环境使用1.23版本,1.24+版本需注意docker运行时兼容性。安装需匹配kubeadm、kubelet和

日常分享linux运维知识 1883

复分析 阿尔福斯(Ahlfors) 第三版答案 英文

答案分为十章,有部分习题没有答案,全英文复分析阿尔福斯(Ahlfors) 第三版答案

Kubernetes(K8s)使用 kubeadm 方式搭建多 master 高可用 K8s 集群

以上就是搭建高可用k8s集群全部的内容,步骤讲解得非常详细,比较适合初学者学习,我们一起共同学习,共同进步。httpshttpshttpshttpshttpshttpshttpshttps。

养歌的博客 1万+

计算机控制技术及应用

《计算机控制技术及应用》通过总结作者的科研成果和吸收国内外的先进理论、方法和技术,以计算机控制系统的网络化、开放化、智能化和集成化发展趋势为主线索,主要介绍计算机控制系统的基本概念和计算机控制系统的典型形式,计算机控制系统的数学描述与基本分析方法,以及数字PID控制器、最少拍控制系统、达林算法、状态变量设计法等设计方法及其各种改进算法。重点突出计算机控制系统输入输出通道接口的设计方法和典型控制系统的设计案例与实现方法等。

上一篇: K8s部署集群踩坑集锦
下一篇: 可迭代对象、迭代器、生成器以及yield关键字使用
MegaBytes
博客等级 码龄8年 45粉丝 115原创
评论 2
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值