【Linux】在ubuntu快速搭建部署K8S(1.27)集群

2024-04-23 07:04

本文主要是介绍【Linux】在ubuntu快速搭建部署K8S(1.27)集群,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

ubuntu快速安装K8s1.27

  • (一)环境说明
    • 1.硬件环境
    • 2.Ubuntu环境设置
  • (二)安装配置containerd
    • 1.安装
    • 2.配置
    • 3.启动
  • (三)所有节点操作
    • 1.安装runc和cni
    • 2.节点系统设置、关闭临时分区
    • 3.修改内核参数
    • 4.安装 kubeadm、kubectl、kubelet
  • (四)初始化k8s(master节点)
    • 1.生成配置脚本
    • 2.拉取需要的脚本
    • 3. 初始化主节点
  • (五)在node节点上
  • (六)启动K8s(1.27)
    • 1.启动master和node节点
    • 2.网络插件Calico
    • 3.进入Kuboard

可以与这篇文章在centos快速搭建K8S1.18集群进行对比安装,centos是通过kubeadm工具安装K8s1.18,Ubuntu安装1.27是通过配置containerd安装K8s.

(一)环境说明

1.硬件环境

虚拟机硬件规格:2CPU 40GB
虚拟机数量: 3台
虚拟机操作系统:ubuntu-22.04.3-live-server-amd64.iso

操作系统主机名IP
ubuntu-22.04.3k8s-master10.0.0.150
ubuntu-22.04.3k8s-node110.0.0.151
ubuntu-22.04.3k8s-node210.0.0.152

2.Ubuntu环境设置

2.1设置root用户密码

配置网络输入命令
# view /etc/netplan/00-installer-config.yaml

在这里插入图片描述

具体配置可以参考此博客网络配置——以Xubuntu为例

 输入命令:netplan apply(检测ip是否改过来了)检查sshd服务是否开始(active是开启状态)

在这里插入图片描述

2.2先以master为例配置主机名

sshd的服务已开启进行远程连接,以leyi普通用户进入来登入root用户
设置静态名称解析,考虑到后续会使用 node2 作为 nfs 服务器,此处预先做好名称解析,
输入如下指令:

 cat >> /etc/hosts << EOF10.0.0.150 k8s-master10.0.0.151 k8s-node110.0.0152 k8s-node2EOF检测:
通过命令:
ping k8s-master
ping k8s-node1
ping k8s-node2
来测试是否设置好静态名称解析
或者通过指令: 查看cat /etc/hosts  文件里是否有三个指令

在这里插入图片描述

(二)安装配置containerd

1.安装

可以通过本地上传文件(评论区获取)或者通过github网站上获取并解压

# wget https://github.com/containerd/containerd/releases/download/v1.7.0/containerd-1.7.0-linux-amd64.tar.gz
# tar Cxzvf /usr/local containerd-1.7.0-linux-amd64.tar.gz

2.配置

创建启动containerd的systemd服务

# cat << EOF >> /lib/systemd/system/containerd.service
[Unit]
Description=containerd container runtime
Documentation=https://containerd.io
After=network.target local-fs.target[Service]
ExecStartPre=-/sbin/modprobe overlay
ExecStart=/usr/local/bin/containerd
Type=notify
Delegate=yes
KillMode=process
Restart=always
RestartSec=5
# Having non-zero Limit*s causes performance problems due to accounting overhead
# in the kernel. We recommend using cgroups to do container-local accounting.
LimitNPROC=infinity
LimitCORE=infinity
LimitNOFILE=infinity
# Comment TasksMax if your systemd version does not supports it.
# Only systemd 226 and above support this version.
TasksMax=infinity
OOMScoreAdjust=-999[Install]
WantedBy=multi-user.target
EOF

在这里插入图片描述

3.启动

containerd服务开机自启

# systemctl daemon-reload
# systemctl enable --now containerd
# systemctl status containerd

在这里插入图片描述

3.5配置containerd的配置文件,并启动containerd服务

# mkdir -p /etc/containerd
# containerd config default | tee /etc/containerd/config.toml
# str1="registry.k8s.io/pause:3.8"
# str2="registry.aliyuncs.com/google_containers/pause:3.9"
# sed -i "/sandbox_image/ s%${str1}%${str2}%g" /etc/containerd/config.toml
# sed -i '/SystemdCgroup/ s/false/true/g' /etc/containerd/config.toml
# systemctl restart containerd && systemctl status containerd

在这里插入图片描述

在这里插入图片描述

(三)所有节点操作

1.安装runc和cni

快捷步骤

# install -m 755 runc.amd64 /usr/local/sbin/runc
# mkdir -p /opt/cni/bin
# tar xf  /home/leyi/cni-plugins-linux-amd64-v1.1.1.tgz -C /opt/cni/bin/

2.节点系统设置、关闭临时分区

swapoff -a(关闭所有swap分区),因为在部署kubernetes要求不适用swap分区,
sed -i '/swap/ s%/swap%#/swap%g' /etc/fstab
(寻找swap行将swap替换成#swap)
这个操作的意思是将 /swap 替换为 #/swap,用 "#" 注释掉 swap 相关的行,防止系统在启动时自动挂载 swap 分区。

3.修改内核参数

# modprobe overlay
# modprobe br_netfilter
# cat <<EOF >> /etc/modules-load.d/k8s.conf overlay br_netfilter EOF
# cat <<EOF >> /etc/sysctl.d/k8s.conf 
# net.bridge.bridge-nf-call-ip6tables = 1 
# net.bridge.bridge-nf-call-iptables = 1 
# net.ipv4.ip_forward = 1 EOF
# sysctl --system

在这里插入图片描述

4.安装 kubeadm、kubectl、kubelet

7.1更新apt源,添加国内aliyun源

# apt-get update && apt-get install -y apt-transport-https ca-certificates
# curl https://mirrors.aliyun.com/kubernetes/apt/doc/apt-key.gpg | apt-key add - 
# cat <<EOF >/etc/apt/sources.list.d/kubernetes.list 
> deb https://mirrors.aliyun.com/kubernetes/apt/ kubernetes-xenial main EOFapt-get update
> EOF

在这里插入图片描述
在这里插入图片描述

7.2以安装 1.27.0为例

# apt install -y kubelet=1.27.0-00 kubeadm=1.27.0-00  kubectl=1.27.0-00

在这里插入图片描述

7.3设置 kubelet 自动启动

# systemctl enable kubelet

7.4禁止更新(可选)

# apt-mark hold kubelet kubeadm kubectl
# systemctl enable --now kubelet

在这里插入图片描述

到这里的k8s-master完成后开始克隆操作,克隆出k8s-node1和k8s-node以及更改主机名更改ip地址node1是(10.0.0.151)、node2是(10.0.0.152),之后进行分节点操作。

(四)初始化k8s(master节点)

1.生成配置脚本

//生成文件
[root@k8s-master ~]# kubeadm config print init-defaults > kubeadm.yaml
[root@k8s-master ~]# vim kubeadm.yaml	vim中编辑进入
apiVersion: kubeadm.k8s.io/v1beta3
bootstrapTokens:
- groups:- system:bootstrappers:kubeadm:default-node-tokentoken: abcdef.0123456789abcdefttl: 24h0m0susages:- signing- authentication
kind: InitConfiguration
localAPIEndpoint:advertiseAddress: 10.0.0.150bindPort: 6443
nodeRegistration:criSocket: unix:///var/run/containerd/containerd.sockimagePullPolicy: IfNotPresentname: k8s-mastertaints: null
---
apiServer:timeoutForControlPlane: 4m0s
apiVersion: kubeadm.k8s.io/v1beta3
certificatesDir: /etc/kubernetes/pki
clusterName: kubernetes
controllerManager: {}
dns: {}
etcd:local:dataDir: /var/lib/etcd
imageRepository: registry.cn-hangzhou.aliyuncs.com/google_containers
kind: ClusterConfiguration
kubernetesVersion: 1.27.0
networking:dnsDomain: cluster.localpodSubnet: 10.244.0.0/16serviceSubnet: 10.96.0.0/12
scheduler: {}
---
apiVersion: kubeproxy.config.k8s.io/v1alpha1
kind: KubeProxyConfiguration
mode: ipvs
---
apiVersion: kubelet.config.k8s.io/v1beta1
kind: KubeletConfiguration
cgroupDriver: systemd

2.拉取需要的脚本

//初始化apiserver等依赖镜像
[root@k8s-master ~]# kubeadm config images pull --config=kubeadm.yaml

3. 初始化主节点

//初始化k8s 服务器起码2C,否则报错
[root@k8s-master ~]# kubeadm init --config kubeadm.yaml | tee kubeadm-init.log

在这里插入图片描述

在这里插入图片描述
标黄(生成了一串用于添加node节点到master节点上的指令,单独复制出来后续node操作需要用到)

执行如下指令:

[root@k8s-master ~]# mkdir -p $HOME/.kube
[root@k8s-master ~]# sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config
[root@k8s-master ~]# sudo chown $(id -u):$(id -g) $HOME/.kube/config[root@k8s-master ~]# export KUBECONFIG=/etc/kubernetes/admin.conf

检查节点

[root@k8s-master ~]# kubectl get nodes
NAME         STATUS     ROLES                  AGE     VERSION
k8s-master   NotReady   control-plane,master   8m20s   v1.27.0

将.kube/config leyi@k8s-node1(/k8s-node2):/home/leyi (将.kube文件下的config文件传输到k8s-node1的家目录下)

在这里插入图片描述

(五)在node节点上

查看文件是否传输过来,并创建mkdir -p $HOME/.kube目录,并将家目录下的config文件复制到.kube文件下(两个节点都是如此操作)

在这里插入图片描述

在这里插入图片描述
将上面初始化主节点的标黄指令,复制到node1和node2中执行

(六)启动K8s(1.27)

1.启动master和node节点

//在master节点上输入
# kubectl get nodes

可以看到已经将node1和node2节点添加进来了
而表示该节点没有运行,状态也是NotReady

//设置节点标签
# kubectl get nodes --show-labels
//设置完节点标签,再次输入如下命令查看,能看到roles成了< work >
# kubectl get nodes

在这里插入图片描述

// 设置标签
kubectl label nodes k8s-node1 node-role.kubernetes.io/work=work
kubectl label nodes k8s-node2 node-role.kubernetes.io/work=work
//设置完标签,再次输入如下命令查看,能看到STATUS成了< Ready >
# kubectl get nodes

在这里插入图片描述

2.网络插件Calico

//使用kubectl安装kube
# kubectl apply -f calico.yaml

在这里插入图片描述

3.进入Kuboard

到这里节点都run且ready的状态,那我们就可以进入http://10.0.0.150/

用户名: admin
密 码: Kuboard123

创建一个集群k8s:

在这里插入图片描述

这篇关于【Linux】在ubuntu快速搭建部署K8S(1.27)集群的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/928092

相关文章

linux生产者,消费者问题

pthread_cond_wait() :用于阻塞当前线程,等待别的线程使用pthread_cond_signal()或pthread_cond_broadcast来唤醒它。 pthread_cond_wait() 必须与pthread_mutex 配套使用。pthread_cond_wait()函数一进入wait状态就会自动release mutex。当其他线程通过pthread

Linux 安装、配置Tomcat 的HTTPS

Linux 安装 、配置Tomcat的HTTPS 安装Tomcat 这里选择的是 tomcat 10.X ,需要Java 11及更高版本 Binary Distributions ->Core->选择 tar.gz包 下载、上传到内网服务器 /opt 目录tar -xzf 解压将解压的根目录改名为 tomat-10 并移动到 /opt 下, 形成个人习惯的路径 /opt/tomcat-10

乐鑫 Matter 技术体验日|快速落地 Matter 产品,引领智能家居生态新发展

随着 Matter 协议的推广和普及,智能家居行业正迎来新的发展机遇,众多厂商纷纷投身于 Matter 产品的研发与验证。然而,开发者普遍面临技术门槛高、认证流程繁琐、生产管理复杂等诸多挑战。  乐鑫信息科技 (688018.SH) 凭借深厚的研发实力与行业洞察力,推出了全面的 Matter 解决方案,包含基于乐鑫 SoC 的 Matter 硬件平台、基于开源 ESP-Matter SDK 的一

RedHat运维-Linux文本操作基础-AWK进阶

你不用整理,跟着敲一遍,有个印象,然后把它保存到本地,以后要用再去看,如果有了新东西,你自个再添加。这是我参考牛客上的shell编程专项题,只不过换成了问答的方式而已。不用背,就算是我自己亲自敲,我现在好多也记不住。 1. 输出nowcoder.txt文件第5行的内容 2. 输出nowcoder.txt文件第6行的内容 3. 输出nowcoder.txt文件第7行的内容 4. 输出nowcode

【Linux进阶】UNIX体系结构分解——操作系统,内核,shell

1.什么是操作系统? 从严格意义上说,可将操作系统定义为一种软件,它控制计算机硬件资源,提供程序运行环境。我们通常将这种软件称为内核(kerel),因为它相对较小,而且位于环境的核心。  从广义上说,操作系统包括了内核和一些其他软件,这些软件使得计算机能够发挥作用,并使计算机具有自己的特生。这里所说的其他软件包括系统实用程序(system utility)、应用程序、shell以及公用函数库等

一份LLM资源清单围观技术大佬的日常;手把手教你在美国搭建「百万卡」AI数据中心;为啥大模型做不好简单的数学计算? | ShowMeAI日报

👀日报&周刊合集 | 🎡ShowMeAI官网 | 🧡 点赞关注评论拜托啦! 1. 为啥大模型做不好简单的数学计算?从大模型高考数学成绩不及格说起 司南评测体系 OpenCompass 选取 7 个大模型 (6 个开源模型+ GPT-4o),组织参与了 2024 年高考「新课标I卷」的语文、数学、英语考试,然后由经验丰富的判卷老师评判得分。 结果如上图所

UnrealScriptIDE调试环境部署

先安装vs2010   再安装VSIsoShell.exe, 下载地址 https://pan.baidu.com/s/10kPNUuDGTbWXbz7Nos-1WA       fd3t   最后安装unside,下载地址 https://archive.codeplex.com/?p=uside  安装中间有一步选择Binary文件夹要选对路径。   安装好以后,启动 UDKDe

Windows/macOS/Linux 安装 Redis 和 Redis Desktop Manager 可视化工具

本文所有安装都在macOS High Sierra 10.13.4进行,Windows安装相对容易些,Linux安装与macOS类似,文中会做区分讲解 1. Redis安装 1.下载Redis https://redis.io/download 把下载的源码更名为redis-4.0.9-source,我喜欢跟maven、Tomcat放在一起,就放到/Users/zhan/Documents

Linux系统稳定性的奥秘:探究其背后的机制与哲学

在计算机操作系统的世界里,Linux以其卓越的稳定性和可靠性著称,成为服务器、嵌入式系统乃至个人电脑用户的首选。那么,是什么造就了Linux如此之高的稳定性呢?本文将深入解析Linux系统稳定性的几个关键因素,揭示其背后的技术哲学与实践。 1. 开源协作的力量Linux是一个开源项目,意味着任何人都可以查看、修改和贡献其源代码。这种开放性吸引了全球成千上万的开发者参与到内核的维护与优化中,形成了

Linux 下的Vim命令宝贝

vim 命令详解(转自:https://www.cnblogs.com/usergaojie/p/4583796.html) vi: Visual Interface 可视化接口 vim: VI iMproved VI增强版 全屏编辑器,模式化编辑器 vim模式: 编辑模式(命令模式)输入模式末行模式 模式转换: 编辑-->输入: i: 在当前光标所在字符的前面,转为输入模式