【k8s】(四)kubernetes1.29.4离线部署之-组件安装

news/2024/5/28 2:25:47/ 标签: kubernetes, linux, 容器, k8s

(一)kubernetes1.29.4离线部署之-安装文件准备
(二)kubernetes1.29.4离线部署之-镜像文件准备
(三)kubernetes1.29.4离线部署之-环境初始化
(四)kubernetes1.29.4离线部署之-组件安装
(五)kubernetes1.29.4离线部署之-初始化第一个控制平面
(六)kubernetes1.29.4离线部署之-加入Node节点
(七)kubernetes1.29.4离线部署之-网络插件
(八)kubernetes1.29.4离线部署之-测试验证

备注: 完整版请参阅 【k8s】Kubernetes 1.29.4离线安装部署(总)

组件安装

需要安装的组件列表
  1. 安装containerd
  2. 部署containerd 配置文件
  3. 安装cni plugin
  4. 安装crictl
  5. 安装runc
  6. 安装部署kubeadm、kubelet、kubectl

特别关注:
再拷贝kubeadm、kubelet、kubectl文件后,务必记得要创建必须要的几个目录,否则会导致后面初始化控制平面时会出错,详情见完整的安装脚本
sudo mkdir -p /var/lib/kubelet
sudo mkdir -p /etc/kubernetes/manifests
yum 自动从网络安装不会出现该问题,会自动创建。

  1. 初始化集群第一控制平面节点
安装完整的脚本
#!/bin/bash
###############################################
# QingHub K8S Install 版本: $VERSION
# 架构: $ARCH_TYPE 目前版本主要支持amd64,其他待敬请期待
# 操作系统: $os_type
# QingHub Studio官网: https://qinghub.net
# 如过您安装遇到问题,请到官网查找官方联系方式或加支持群:
#                           https://qinghub.net
###############################################
ENV_CFG=./env.cfg
if [ -f ${ENV_CFG} ] ; thenchmod 777 ${ENV_CFG}source ${ENV_CFG}
fi
os_type=$(uname -s)if [ $(arch) = "x86_64" ] || [ $(arch) = "amd64" ]; thenarch_type=amd64
elif [ $(arch) = "aarch64" ] || [ $(arch) = "arm64" ]; thenarch_type=arm64
elif [ $(arch) = "i386" ]; thenarch_type=amd64echo -e "${YELLOW}[WAIN] 检测到 i386, 我们暂时把它当做 x86_64(amd64) ${NC}"
elseecho -e "${RED}[ERROR] QingHub Studio 目前还不支持 $(arch) 架构 ${NC}"exit 1
fi###############################################
# 复制并安装cri_containerd_cni 包括:cri, containerd,cni三合一,后续会覆盖安装
# QingHub Studio官网: https://qinghub.net
# 如过您安装遇到问题,请到官网查找官方联系方式或加支持群:
#                                https://qinghub.net
###############################################
function install_cri_containerd_cni(){echo -e "${GREEN}[INFO] 下载并安装cri_containerd_cni二级制文件 ${cri_containerd_cni_name} ${NC}"if [[ -e /usr/bin/curl ]]; then# 离线下载文件请修改TODOcurl -L ${cri_containerd_cni_url} | sudo tar -C / -xz || {echo -e "${RED}[ERROR] 下载并安装cri_containerd_cni二进制文件失败 ${NC}"exit 1}elsewget -c "$cri_containerd_cni_url" | sudo tar -C / -xz || {echo -e "${RED}[ERROR] 下载cri_containerd_cni二进制文件失败 ${NC}"exit 1}fiecho -e "${GREEN}[INFO] 创建containerd.service 文件 ${NC}"sudo systemctl enable --now containerdecho -e "${GREEN}[INFO] 安装containerd成功${NC}"
}###############################################
# 描述: 初始化containerd 配置文件,添加修改仓库信息,请酌情修改
# QingHub Studio官网: https://qinghub.net
# 如过您安装遇到问题,请到官网查找官方联系方式或加支持群:
#                                https://qinghub.net
###############################################
function install_containerd_config(){mkdir -p /etc/containerdsudo /usr/local/bin/containerd config default | tee /etc/containerd/config.toml# 修改Containerd的配置文件sudo sed -i "s#SystemdCgroup\ \=\ false#SystemdCgroup\ \=\ true#g" /etc/containerd/config.tomlcat /etc/containerd/config.toml | grep SystemdCgroupsudo sed -i "s#registry.k8s.io\/pause:3.8#qinghub.net:5000\/qingcloudtech\/pause:3.9#g" /etc/containerd/config.tomlcat /etc/containerd/config.toml | grep sandbox_imagesudo sed -i "s#config_path\ \=\ \"\"#config_path\ \=\ \"/etc/containerd/certs.d\"#g" /etc/containerd/config.tomlcat /etc/containerd/config.toml | grep certs.dmkdir /etc/containerd/certs.d/qinghub.net:5000 -pvsudo bash -c 'cat > /etc/containerd/certs.d/qinghub.net:5000/hosts.toml << EOF
server = "qinghub.net:5000"
[host."qinghub.net:5000"]capabilities = ["pull", "resolve"]
EOF'mkdir /etc/containerd/certs.d/docker.io -pvsudo bash -c 'cat > /etc/containerd/certs.d/docker.io/hosts.toml << EOF
server = "https://docker.io"
[host."https://qinghub.net:5000"]capabilities = ["pull", "resolve"]
[host."https://dockerproxy.com"]capabilities = ["pull", "resolve"]
[host."https://docker.m.daocloud.io"]capabilities = ["pull", "resolve"]
[host."https://reg-mirror.qiniu.com"]capabilities = ["pull", "resolve"]
[host."http://hub-mirror.c.163.com"]capabilities = ["pull", "resolve"]
EOF'systemctl daemon-reloadsystemctl restart containerd.service
}###############################################
# 描述: 安装cni文件
# QingHub Studio官网: https://qinghub.net
# 如过您安装遇到问题,请到官网查找官方联系方式或加支持群:
#                                https://qinghub.net
###############################################
function install_cni_plugins(){DEST="/opt/cni/bin"sudo mkdir -p "$DEST"echo -e "${GREEN}[INFO] 下载并安装cni_plugins二级制文件 ${cni_plugins_name} ${NC}"if [[ -e /usr/bin/curl ]]; then# 离线下载文件请修改TODOcurl -L ${cni_plugins_url} | sudo tar -C "$DEST" -xz || {echo -e "${RED}[ERROR] 下载cni_plugins二进制文件失败 ${NC}"exit 1}elsewget -c "$cni_plugins_url" | sudo tar -C "$DEST" -xz || {echo -e "${RED}[ERROR] 下载cni_plugins二进制文件失败 ${NC}"exit 1}fiecho -e "${GREEN}[INFO] 安装cni_plugins成功${NC}"
}###############################################
# 描述: 拷贝runc文件
# QingHub Studio官网: https://qinghub.net
# 如过您安装遇到问题,请到官网查找官方联系方式或加支持群:
#                                https://qinghub.net
###############################################
function install_runc(){DEST="/usr/bin"sudo mkdir -p "$DEST"cd "$DEST"echo -e "${GREEN}[INFO] 下载并安装runc二级制文件 ${runc_name} ${NC}"if [[ -e /usr/bin/curl ]]; then# 离线下载文件请修改TODOcurl -L -O ${runc_url} || {echo -e "${RED}[ERROR] 下载并安装runc二进制文件失败 ${NC}"exit 1}elsewget -c "$runc_url" || {echo -e "${RED}[ERROR] 下载runc二进制文件失败 ${NC}"exit 1}fiif [ -f $DEST/runc.amd64 ]; thenchmod +x $DEST/runc.amd64mv $DEST/runc.amd64 $DEST/runcfiecho -e "${GREEN}[INFO] 安装runc成功${NC}"
}###############################################
# 描述: 拷贝crictl工具文件
# QingHub Studio官网: https://qinghub.net
# 如过您安装遇到问题,请到官网查找官方联系方式或加支持群:
#                                https://qinghub.net
###############################################
function install_crictl(){DEST="/usr/local/bin"sudo mkdir -p "$DEST"echo -e "${GREEN}[INFO] 下载并安装crictl二级制文件 ${crictl_name} ${NC}"if [[ -e /usr/bin/curl ]]; then# 离线下载文件请修改TODOsudo curl -L ${crictl_url} | sudo tar -C $DEST -xz || {echo -e "${RED}[ERROR] 下载crictl二进制文件失败 ${NC}"exit 1}elsesudo wget -c "$crictl_url" | sudo tar -C "$DEST" -xz || {echo -e "${RED}[ERROR] 下载crictl二进制文件失败 ${NC}"exit 1}fiecho -e "${GREEN}[INFO] 安装crictl成功${NC}"#生成配置文件sudo bash -c "cat > /etc/crictl.yaml <<EOF
runtime-endpoint: unix:///run/containerd/containerd.sock
image-endpoint: unix:///run/containerd/containerd.sock
timeout: 10
EOF"systemctl restart containerd
}###############################################
# 描述: 安装kubeadmin,kubelet,kubectl,在每个节点都需要安装kubeadmin,kubelet,
# kubectl根据情况在合适的控制平台节点安装,可以修改参数$QINGCLOUD_KUBECTL_FLAG=no关闭安装
# QingHub Studio官网: https://qinghub.net
# 如过您安装遇到问题,请到官网查找官方联系方式或加支持群:
#                                https://qinghub.net
###############################################
function install_kubeadm(){TEMP="/tmp"echo -e "${GREEN}[INFO] 下载Kubernetes二级制文件 ${KUBERNETES_VERSION} ${NC}"if [[ -e /usr/bin/curl ]]; then# 离线下载文件请修改TODOsudo curl -L "${kubernetes_server_url}" | sudo tar -C "$TEMP" -xz || {echo -e "${RED}[ERROR] 下载Kubernetes二进制文件失败 ${NC}"exit 1}elsesudo wget -c "$kubernetes_server_url" | sudo tar -C "$TEMP" -xz || {echo -e "${RED}[ERROR] 下载Kubernetes二进制文件失败 ${NC}"exit 1}fiDEST="/usr/bin"cd $DESTsudo cp $TEMP/kubernetes/server/bin/{kubeadm,kubelet} .sudo chmod +x {kubeadm,kubelet}echo -e "${GREEN}[INFO] 成功安装kubeadm,kubelet到${DEST}目录 ${NC}"echo -e "${GREEN}[INFO] 创建kubelet.service 文件 ${NC}"sudo bash -c "cat > /usr/lib/systemd/system/kubelet.service <<EOF
[Unit]
Description=kubelet: The Kubernetes Node Agent
Documentation=https://kubernetes.io/docs/
Wants=network-online.target
After=network-online.target[Service]
ExecStart=${DEST}/kubelet
Restart=always
StartLimitInterval=0
RestartSec=10[Install]
WantedBy=multi-user.target
EOF"sudo mkdir -p /usr/lib/systemd/system/kubelet.service.decho -e "${GREEN}[INFO] 创建10-kubeadm.conf 文件 ${NC}"sudo bash -c "cat > /usr/lib/systemd/system/kubelet.service.d/10-kubeadm.conf <<EOF
[Service]
Environment=\"KUBELET_KUBECONFIG_ARGS=--bootstrap-kubeconfig=/etc/kubernetes/bootstrap-kubelet.conf --kubeconfig=/etc/kubernetes/kubelet.conf\"
Environment=\"KUBELET_CONFIG_ARGS=--config=/var/lib/kubelet/config.yaml\"
EnvironmentFile=-/var/lib/kubelet/kubeadm-flags.env
EnvironmentFile=-/etc/sysconfig/kubelet
ExecStart=
ExecStart=$DEST/kubelet \\\$KUBELET_KUBECONFIG_ARGS \\\$KUBELET_CONFIG_ARGS \\\$KUBELET_KUBEADM_ARGS \\\$KUBELET_EXTRA_ARGS
EOF"
sudo bash -c "cat > /etc/sysconfig/kubelet <<EOF
KUBELET_EXTRA_ARGS=
EOF"#创建必须要的几个目录sudo mkdir -p /var/lib/kubeletsudo mkdir -p /etc/kubernetes/manifestssudo systemctl enable kubeletif [ "$QINGCLOUD_KUBECTL_FLAG" == "yes" ]; thencd $DESTsudo cp ${TEMP}/kubernetes/server/bin/kubectl .sudo chmod +x kubectlecho -e "${GREEN}[INFO] 成功安装kubectl到${DEST}目录 ${NC}"fiif [[ -d "${TEMP}/kubernetes" ]]; thensudo rm -rf "${TEMP}/kubernetes-server-linux-amd64"echo -e "${GREEN}[INFO] 临时安装文件${TEMP}/kubernetes-server-linux-amd64正常删除 ${NC}"fi
}###############################################
# 描述: 初始化控制平面节点。
# ${QINGCLOUD_ADVERTISE_ADDRESS}       ApiServer地址,请根据情况填写,可以是配置的高可用地址
# ${LOCAL_IMAGE_DOMAIN}               本地容器镜像仓库地址
# ${LOCAL_IMAGE_NAMESPACE}            本地容器镜像命名空间
# ${KUBERNETES_VERSION}               K8S版本
# QingHub Studio官网: https://qinghub.net
# 如过您安装遇到问题,请到官网查找官方联系方式或加支持群:
#                                https://qinghub.net
###############################################
function init_cluster(){echo -e "${GREEN}[INFO] ==========初始化第一个控制平面,请根据输出结果初始其他他节点========= ${NC}"kubeadm init \--apiserver-advertise-address="${QINGCLOUD_ADVERTISE_ADDRESS}" \--image-repository "${LOCAL_IMAGE_DOMAIN}/${LOCAL_IMAGE_NAMESPACE}" \--kubernetes-version "${KUBERNETES_VERSION}" \--cri-socket=unix:///run/containerd/containerd.sock \--service-cidr=10.96.0.0/16 \--pod-network-cidr=172.16.0.0/16
}# 主入口地址,根据实际可以手动执行相关内容
function main {echo -e "${GREEN}[INFO] ==========开始安装kubernetes========= ${NC}"#安装containerdinstall_cri_containerd_cni#安装cni plugininstall_cni_plugins#安装containerd 配置文件install_containerd_config#安装crictlinstall_crictl#安装runcinstall_runc#安装kubeadminstall_kubeadm#初始化集群master节点if [ "$QINGCLOUD_KUBECTL_FLAG" == "yes" ] ;theninit_clusterfiecho -e "${GREEN}[INFO] ==========完成安装kubernetes========= ${NC}"
}main

你可以通过【QingHub Studio】) 套件直接安装部署,也可以手动按如下文档操作,该项目已经全面开源,完整的脚本可以从如下开源地址获取:
开源地址: https://gitee.com/qingplus/qingcloud-platform
【QingHub Studio集成开发套件】


http://www.ppmy.cn/news/1434640.html

相关文章

Ubuntu Pycharm安装

下载PyCharm&#xff0c;https://www.jetbrains.com/pycharm/download/?sectionlinux 然后按照下图执行安装&#xff1a; 安装的时候可能出现的问题&#xff1a; 问题1&#xff1a;No JDK found. Please validate either PYCHARM_JDK, JDK_HOME or JAVA_HOME environment var…

Day3: 5道C++ 面向对象高频题整理

1、虚函数表是针对类的还是针对对象的&#xff1f;同一个类的两个对象的虚函数表是怎么维护的&#xff1f; 答&#xff1a;虚函数表&#xff0c;或者称为vtable&#xff0c;是针对类的。虚函数表是一个存储类中所有虚函数地址的数组。当我们定义一个类&#xff0c;并在其中声明…

软件游戏缺失d3dcompiler_43.dll怎么修复?分享多种靠谱的解决方法

在我们日常频繁地操作和使用电脑的过程中&#xff0c;时常会遇到一些突发的技术问题。其中一种常见的情况是&#xff0c;在尝试启动或运行某个应用程序时&#xff0c;系统会弹出一个错误提示窗口&#xff0c;明确指出当前电脑环境中缺少了一个至关重要的动态链接库文件——d3dc…

【2024官方文档版学习笔记】React-脱围机制

系列文章 一、 React快速入门 二、React描述IU 三、React添加交互 四、React状态管理 五、React脱围机制 五、脱围机制 “脱围机制”&#xff08;Fallback Mechanism&#xff09;通常指的是在组件加载过程中&#xff0c;当遇到加载失败或者加载时间过长的情况时&#xff0c;能…

Springboot的日常操作技巧

文章目录 1、自定义横幅2、容器刷新后触发方法自定义3、容器启动后触发方法自定义**CommandLineRunner**ApplicationRunner 不定时增加 参考文章 1、自定义横幅 简单就一点你需要把banner.text放到classpath 路径下 &#xff0c;默认它会找叫做banner的文件&#xff0c;各种格式…

vue封装请求、合并js、合并多个js

vue封装请求、合并js、合并多个js 作为一个后端开发&#xff0c;写前端时发现&#xff0c;每次导入api接口都会有一堆代码&#xff0c;像下面这样&#xff1a; import {footprintList, footprintDelete} from /api/userApi.js import {addressList} from /api/userApi.js impor…

【软件工程与实践】(第四版)第6章习题答案详解

第6章 一、填空题二、选择题三、简答题四、实践题 一、填空题 &#xff08;1&#xff09; 编程语言是人与计算机交流的 工具。 &#xff08;2&#xff09; 从语言层次上&#xff0c;编程语言可以分为 低级语言 和 高级语言 两种类型。 &#xff08;3&#xff09; 1960年代出现…

设计模式-创建型-抽象工厂模式-Abstract Factory

UML类图 工厂接口类 public interface ProductFactory {Phone phoneProduct();//生产手机Router routerProduct();//生产路由器 } 小米工厂实现类 public class XiaomiFactoryImpl implements ProductFactory {Overridepublic Phone phoneProduct() {return new XiaomiPhone…

聊聊linux的文件缓存

序 本文主要研究一下linux的文件缓存 文件缓存 linux使用page cache来缓存最近读取的文件&#xff0c;也有目录结构(dcache: Directory Entry Cache)缓存及inode缓存&#xff0c;它们都使用了LRU算法来管理这些page及dentries cache vmstat ## vmstat procs -----------me…

【Python打包exe文件】

Python打包exe文件 ■ Python打包exe文件■■■ ■ Python打包exe文件 需求&#xff1a; 自己写的Python代码&#xff0c;在对方电脑里没有安装py环境无法运行&#xff0c;怎么办&#xff1f; 答&#xff1a;打包成exe文件发送对方就能运行。 首先自己写的python代码自己要能…

JetBrains PhpStorm v2024.1 安装教程 (PHP集成开发IDE)

前言 PhpStorm是由JetBrains推出的一款轻量级集成开发环境&#xff0c;专为PHP开发者而设计。该软件融合了智能的HTML/CSS/JavaScript/PHP编辑器、代码质量分析工具、版本控制系统集成&#xff08;包括SVN和GIT&#xff09;、调试和测试等功能。除此之外&#xff0c;PhpStorm还…

第二期书生浦语大模型训练营第四次笔记

大模型微调技术 大模型微调是一种通过在预训练模型的基础上&#xff0c;有针对性地微调部分参数以适应特定任务需求的方法。 微调预训练模型的方法 微调所有层&#xff1a;将预训练模型的所有层都参与微调&#xff0c;以适应新的任务。 微调顶层&#xff1a;只微调预训练模型…

基于百度文心大模型全面重构,小度正式推出AI原生操作系统DuerOS X

4月16日&#xff0c;以“创造未来”为主题的2024百度Create AI开发者大会在深圳举办。百度集团副总裁、小度科技CEO李莹正式发布了小度新一代操作系统DuerOS X&#xff0c;该操作系统是小度基于百度文心大模型推出的全球首个AI原生操作系统。李莹表示&#xff1a;“作为⽂⼼⼤模…

IDEA中添加servlet模板

官方代码链接 #if (${PACKAGE_NAME} && ${PACKAGE_NAME} ! "")package ${PACKAGE_NAME};#end #parse("File Header.java")import javax.servlet.*; import javax.servlet.http.*; import javax.servlet.annotation.*; import java.io.IOException…

C++:类与对象完结篇

hello&#xff0c;各位小伙伴&#xff0c;本篇文章跟大家一起学习《C&#xff1a;运算符重载》&#xff0c;感谢大家对我上一篇的支持&#xff0c;如有什么问题&#xff0c;还请多多指教 &#xff01; 文章目录 重新认识构造函数1.初始化列表2.explicit关键字 static成员1.sta…

Elasticsearch进阶篇(三):ik分词器的使用与项目应用

ik分词器的使用 一、下载并安装1.1 已有作者编译后的包文件1.2 只有源代码的版本1.3 安装ik分词插件 二、ik分词器的模式2.1 ik_smart演示2.2 ik_max_word演示2.3 standard演示 三、ik分词器在项目中的使用四、ik配置文件4.1 配置文件的说明4.2 自定义词库 五、参考链接 一、下…

轻量级SQLite可视化工具Sqliteviz

什么是 Sqliteviz &#xff1f; Sqliteviz 是一个单页面离线优先的渐进式网络应用&#xff08;PWA&#xff09;&#xff0c;用于完全客户端的 SQLite 数据库或 CSV 文件的可视化。 所谓完全客户端&#xff0c;就是您的数据库永远不会离开您的计算机。使用 sqliteviz&#xff0c…

11、【桥接模式】让将抽象和实现分离,使得它们可以独立地变化

你好&#xff0c;我是程序员雪球。 今天我们来聊聊 23 种设计模式中&#xff0c;一种常见的结构型模式&#xff0c;桥接模式。聊聊它的设计思想、应用场景&#xff0c;以及如何使用。 一、设计思想 桥接模式&#xff08;Bridge Pattern&#xff09;是一种结构型设计模式&#…

拿捏 顺序表(1)

目录 1. 顺序表的分类2. 顺序表实现3. 顺序表实现完整代码4. 总结 前言: 一天xxx想存储一组数据, 并且能够轻松的实现删除和增加, 此时数组大胆站出, 但是每次都需要遍历一遍数组, 来确定已经存储的元素个数, 太麻烦了, 于是迎来了顺序表不屑的调侃: 数组你不行啊… 顺序表是一…

mac qt android开发环境

1,安装Android Studio 下载 Android Studio 和应用工具 - Android 开发者 | Android Developers (google.cn)