Debian12安装K8S

Docker环境

添加 Docker 的官方 GPG 密钥

  • 安装 apt 依赖包,用于通过 HTTPS 来获取仓库

    sudo apt-get install \apt-transport-https \ca-certificates \curl \gnupg2 \software-properties-common
    
  • 添加秘钥

    curl -fsSL https://mirrors.ustc.edu.cn/docker-ce/linux/debian/gpg | sudo apt-key add -
    
  • 添加Docker稳定版仓库

    sudo add-apt-repository \"deb [arch=amd64] https://mirrors.ustc.edu.cn/docker-ce/linux/debian \$(lsb_release -cs) \stable"
    apt-get update -y
    

添加Docker国内源配置

添加阿里云docker源

vim /etc/apt/sources.listdeb http://mirrors.aliyun.com/docker-ce/linux/debian stretch stableapt update -y

apt update -y 出现证书错误请安装对应证书

安装最新版本docker

apt-get install docker-ce docker-ce-cli containerd.io -y

安装指定版本docker

apt-cache madison docker-ce

docker-ce | 5:19.03.153-0debian-stretch | http://mirrors.aliyun.com/docker-ce/linux/debian stretch/stable amd64 Packages
docker-ce | 5:19.03.143-0debian-stretch | http://mirrors.aliyun.com/docker-ce/linux/debian stretch/stable amd64 Packages
docker-ce | 5:19.03.133-0debian-stretch | http://mirrors.aliyun.com/docker-ce/linux/debian stretch/stable amd64 Packages
docker-ce | 5:19.03.123-0debian-stretch | http://mirrors.aliyun.com/docker-ce/linux/debian stretch/stable amd64 Packages
docker-ce | 5:19.03.113-0debian-stretch | http://mirrors.aliyun.com/docker-ce/linux/debian stretch/stable amd64 Packages
docker-ce | 5:19.03.103-0debian-stretch | http://mirrors.aliyun.com/docker-ce/linux/debian stretch/stable amd64 Packages
docker-ce | 5:19.03.93-0debian-stretch | http://mirrors.aliyun.com/docker-ce/linux/debian stretch/stable amd64 Packages
docker-ce | 5:19.03.83-0debian-stretch | http://mirrors.aliyun.com/docker-ce/linux/debian stretch/stable amd64 Packages
docker-ce | 5:19.03.73-0debian-stretch | http://mirrors.aliyun.com/docker-ce/linux/debian stretch/stable amd64 Packages
docker-ce | 5:19.03.63-0debian-stretch | http://mirrors.aliyun.com/docker-ce/linux/debian stretch/stable amd64 Packages

使用第二列中的版本字符串安装特定版本,例如5:19.03.153-0debian-stretch

apt-get install docker-ce=5:19.03.15~3-0~debian-stretch docker-ce-cli=5:19.03.15~3-0~debian-stretch containerd.io -y

Docker 镜像加速

国内从 DockerHub 拉取镜像有时会遇到困难,此时可以配置镜像加速器。Docker 官方和国内很多云服务商都提供了国内加速器服务,例如:

  • 科大镜像:https://docker.mirrors.ustc.edu.cn/
  • 网易:https://hub-mirror.c.163.com/
  • 阿里云:https://<你的ID>.mirror.aliyuncs.com
  • 七牛云:https://reg-mirror.qiniu.com

当配置某一个加速器地址之后,若发现拉取不到镜像,请切换到另一个加速器地址。国内各大云服务商均提供了 Docker 镜像加速服务,建议根据运行 Docker 的云平台选择对应的镜像加速服务。

阿里云镜像获取地址:阿里云登录 - 欢迎登录阿里云,安全稳定的云计算服务平台,登陆后,左侧菜单选中镜像加速器就可以看到你的专属地址

配置七牛云镜像仓库
vim /etc/docker/daemon.json
{"registry-mirrors": ["https://reg-mirror.qiniu.com"],"exec-opts": ["native.cgroupdriver=systemd"]}

native.cgroupdriver=systemd 后续使用K8S提前配置不使用k8s可以不配置

重新启动服务

systemctl daemon-reload
systemctl restart docker

检查加速器是否生效

docker info

Registry Mirrors:
https://reg-mirror.qiniu.com/

K8S环境

主机名地址备注
k8s-master10.0.20.7主节点
k8s-node110.0.20.3

前置环境配置

  • 每台主机配置host

    vim /etc/hosts
    

    添加配置

    10.0.20.3 k8s-node1
    10.0.20.7 k8s-master
    
  • 关闭各节点的防火墙

    systemctl disable nftables.service && systemctl stop nftables.service && systemctl status nftables.service
    
  • 永久禁用各节点的交换分区

    swapoff -a && sed -i 's/.*swap.*/#&/' /etc/fstab # 注释掉swap那一行
    
  • 同步各节点的时区

    timedatectl set-timezone Asia/Shanghai # 设置系统时区为中国/上海
    

K8S源配置

kubeadm 不能帮你安装或者管理 kubelet 或 kubectl, 所以你需要确保它们与通过 kubeadm 安装的控制平面的版本相匹配。 如果不这样做,则存在发生版本偏差的风险,可能会导致一些预料之外的错误和问题。 然而,控制平面与 kubelet 之间可以存在一个次要版本的偏差,但 kubelet 的版本不可以超过 API 服务器的版本

  • 更新 apt 包索引并安装使用 Kubernetes apt 仓库所需要的包

    apt-get update -y
    apt-get install -y apt-transport-https ca-certificates curl -y
    
  • 下载 Google Cloud 公开签名秘钥

    # sudo curl -fsSLo /etc/apt/keyrings/kubernetes-archive-keyring.gpg https://packages.cloud.google.com/apt/doc/apt-key.gpg
    # 将证书下载到/usr/share/keyrings/kubernetes-archive-keyring.gpg
    sudo curl -fsSLo /usr/share/keyrings/kubernetes-archive-keyring.gpg https://mirrors.aliyun.com/kubernetes/apt/doc/apt-key.gpg
    
  • 添加 Kubernetes apt 仓库

    echo "deb [signed-by=/usr/share/keyrings/kubernetes-archive-keyring.gpg] https://mirrors.aliyun.com/kubernetes/apt/ kubernetes-xenial main" | sudo tee /etc/apt/sources.list.d/kubernetes.list
    
  • 更新 apt 包索引,安装 kubelet、kubeadm 和 kubectl,并锁定其版本

    sudo apt-get upgrade -y && sudo apt-get update -y
    

安装K8S

  • K8S 1.20版本以前,CRI内部维护了DockerShim,CR使用的是Docker, CRI与CR进行交互时是通过DockerShim桥接来实现的

  • K8S 1.20版本以后,CRI内部取消的DockerShim(市场上大部分CR都遵循了K8S的CRI规范,KS8为了适应更多的CR而放弃了Docker,如果还想使用Docker则需要外部单独安装cri-dockerd),CR使用的是Containerd

    使用docker容器建议使用K8S版本1.20以前版本,1.20版本后需要搭配cri-dockerd才能使用

安装最新版本

apt-get install -y kubelet kubeadm kubectl 
# sudo apt-get remove kubelet kubeadm kubectl # 卸载

查看可用版本

apt-cache madison kubeadm
# 安装1.19.1-00 版本
apt-get install -y kubelet=1.19.1-00 kubeadm=1.19.1-00  kubectl=1.19.1-00 

锁定版本

sudo apt-mark hold kubelet kubeadm kubectl # 锁定版本,标记软件包不被自动更新

添加 kubelet 开机自启

sudo systemctl enable kubelet # 添加 kubelet 开机自启
sudo systemctl restart kubelet && sudo systemctl status kubelet # 重启并查看状态

初始化master节点

# kubernetes-version #制定 kubernetes 版本
# image-repository  #选择用于拉取镜像的容器仓库
# apiserver-advertise-address #当前 Master 主机的ip地址
# service-cidr #为服务的虚拟 IP 地址段,默认值:"10.96.0.0/12"
# pod-network-cidr #指明 pod 网络可以使用的 IP 地址段。如果设置了这个参数,控制平面将会为每一个节点自动分配 CIDRkubeadm init \--kubernetes-version v1.19.1 \--image-repository registry.aliyuncs.com/google_containers \--apiserver-advertise-address 10.0.20.7 \--service-cidr 10.245.0.0/12 \--pod-network-cidr 10.244.0.0/16 

安装成功提示
Your Kubernetes control-plane has initialized successfully!

Your Kubernetes control-plane has initialized successfully!To start using your cluster, you need to run the following as a regular user:mkdir -p $HOME/.kubesudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/configsudo chown $(id -u):$(id -g) $HOME/.kube/configYou should now deploy a pod network to the cluster.
Run "kubectl apply -f [podnetwork].yaml" with one of the options listed at:https://kubernetes.io/docs/concepts/cluster-administration/addons/Then you can join any number of worker nodes by running the following on each as root:kubeadm join 10.0.20.7:6443 --token z6f8b5.eg77ay382qnkmhu3 \--discovery-token-ca-cert-hash sha256:748d1140b11748a015a4fbb3629b99050e1eb4749b1af12e23c0e348ece1dc9a
  • Master节点执行

     mkdir -p $HOME/.kubesudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/configsudo chown $(id -u):$(id -g) $HOME/.kube/config
    
  • 所有Node节点执行(加入Node节点到Master节点)

    kubeadm join 10.0.20.7:6443 --token z6f8b5.eg77ay382qnkmhu3 \--discovery-token-ca-cert-hash sha256:748d1140b11748a015a4fbb3629b99050e1eb4749b1af12e23c0e348ece1dc9a
    

安装kuboard

安装 Kuboard v3.x 版本的指令如下

sudo docker run -d \--restart=unless-stopped \--name=kuboard \-p 80:80/tcp \-p 10081:10081/tcp \-e KUBOARD_ENDPOINT="http://内网IP:80" \-e KUBOARD_AGENT_SERVER_TCP_PORT="10081" \-v /root/kuboard-data:/data \eipwork/kuboard:v3# 也可以使用镜像 swr.cn-east-2.myhuaweicloud.com/kuboard/kuboard:v3 ,可以更快地完成镜像下载。# 请不要使用 127.0.0.1 或者 localhost 作为内网 IP \# Kuboard 不需要和 K8S 在同一个网段,Kuboard Agent 甚至可以通过代理访问 Kuboard Server \

DANGER

  • KUBOARD_ENDPOINT 参数的作用是,让部署到 Kubernetes 中的 kuboard-agent 知道如何访问 Kuboard Server;
  • KUBOARD_ENDPOINT 中也可以使用外网 IP;
  • Kuboard 不需要和 K8S 在同一个网段,Kuboard Agent 甚至可以通过代理访问 Kuboard Server;
  • 建议在 KUBOARD_ENDPOINT 中使用域名;
  • 如果使用域名,必须能够通过 DNS 正确解析到该域名,如果直接在宿主机配置 /etc/hosts 文件,将不能正常运行;

参数解释

  • 建议将此命令保存为一个 shell 脚本,例如 start-kuboard.sh,后续升级 Kuboard 或恢复 Kuboard 时,需要通过此命令了解到最初安装 Kuboard 时所使用的参数;
  • 第 4 行,将 Kuboard Web 端口 80 映射到宿主机的 80 端口(您可以根据自己的情况选择宿主机的其他端口);
  • 第 5 行,将 Kuboard Agent Server 的端口 10081/tcp 映射到宿主机的 10081 端口(您可以根据自己的情况选择宿主机的其他端口);
  • 第 6 行,指定 KUBOARD_ENDPOINT 为 http://内网IP,如果后续修改此参数,需要将已导入的 Kubernetes 集群从 Kuboard 中删除,再重新导入;
  • 第 7 行,指定 KUBOARD_AGENT_SERVER 的端口为 10081,此参数与第 5 行中的宿主机端口应保持一致,修改此参数不会改变容器内监听的端口 10081,例如,如果第 5 行为 -p 30081:10081/tcp 则第 7 行应该修改为 -e KUBOARD_AGENT_SERVER_TCP_PORT="30081"
  • 第 8 行,将持久化数据 /data 目录映射到宿主机的 /root/kuboard-data 路径,请根据您自己的情况调整宿主机路径;

其他参数

  • 在启动命令行中增加环境变量 KUBOARD_ADMIN_DERAULT_PASSWORD,可以设置 admin 用户的初始默认密码。

其他关联配置

修改主机名

hostnamectl set-hostname master

重新连接SSH主机名生效

Vim 无法粘贴

vim /usr/share/vim/vim90/defaults.vim

大约84行位置 set mouse=a 改为 set mouse-=a

查看Debain发行版本

lsb_release -a

Distributor ID: Debian
Description: Debian GNU/Linux 12 (bookworm)
Release: 12
Codename: bookworm

SSH 免密登入

本机执行

ssh-keygen -t rsa
# 秘钥同步到服务
ssh-copy-id root@10.0.20.3

常见错误处理

更新源证书错误 NO_PUBKEY B53DC80D13EDEF05

Err:6 https://mirrors.tuna.tsinghua.edu.cn/kubernetes/apt kubernetes-xenial InRelease

The following signatures couldn’t be verified because the public key is not available: NO_PUBKEY B53DC80D13EDEF05

  • 安装证书需要依赖

    apt-get install apt-transport-https ca-certificate curl gnupg2 software-properties-common -y
    
  • 获取公钥: 你需要获取缺失的公钥。在这个例子中,公钥是 B53DC80D13EDEF05。你可以使用以下命令获取公钥:

    gpg --recv-keys --keyserver keyserver.ubuntu.com B53DC80D13EDEF05
    

    如果你在防火墙或代理的后面,可能需要配置一下 GPG 来使用代理:

    gpg --keyserver hkp://keyserver.ubuntu.com:80 --recv-keys B53DC80D13EDEF05
    
  • 将公钥添加到系统: 下载公钥后,将其添加到 APT 的密钥环中:

    gpg --export --armor B53DC80D13EDEF05 | sudo apt-key add -
    

    或者,如果你使用的是较新的 Ubuntu | Debian 版本,可以使用以下命令:

    gpg --export --armor B53DC80D13EDEF05 | sudo gpg --dearmor -o /usr/share/keyrings/kubernetes-archive-keyring.gpg
    
  • 更新 APT: 更新 APT 包列表,以确保你的系统可以识别并使用新添加的密钥:

    sudo apt-get update
    
  • 重新尝试安装: 现在,你应该能够重新尝试安装 Kubernetes 包:

    sudo apt-get install -y kubelet kubeadm kubectl
    

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

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

相关文章

OZON快蜗牛数据工具,OZON数据分析工具

在当今的电商时代&#xff0c;数据已经成为了商家们最宝贵的资产之一。无论是产品选品、市场定位&#xff0c;还是营销策略的制定&#xff0c;都离不开对数据的深入分析和精准把握。而在众多电商平台中&#xff0c;OZON以其独特的商业模式和庞大的用户群体&#xff0c;吸引了众…

【Elasticsearch】es基础入门-03.RestClient操作文档

RestClient操作文档 示例&#xff1a; 一.初始化JavaRestClient &#xff08;一&#xff09;引入es的RestHighLevelClient依赖 <!--elasticsearch--> <dependency><groupId>org.elasticsearch.client</groupId><artifactId>elasticsearch-rest…

spring框架限制接口是否要登录过才能访问

1、引入spring 、spring boot依赖&#xff0c;这部分不再多说&#xff0c;正常开发spring boot项目就可以。 2、定义类&#xff0c;实现WebMvcConfigurer接口 package com.hmblogs.config;import com.hmblogs.config.web.interceptor.PortalTokenInterceptor; import org.spri…

JVM垃圾收集器和性能调优

目标&#xff1a; 1.JVM垃圾收集器有哪几种&#xff1f; 2.CMS垃圾收集器回收步骤。 一、JVM常见的垃圾回收器 为什么垃圾回收的时候需要STW? 标记垃圾的时候&#xff0c;如果不STW&#xff0c;可能用户线程就会不停的产生垃圾。 1.1 单线程收集 Serial和SerialOld使用单…

软件设计模式概述

一 软件模式概述 软件设计模式是在软件开发过程中经过验证的、可重复使用的最佳实践。 它们提供了解决常见设计问题的模板和指导方针&#xff0c;有助于开发人员编写高质量、可维护和可扩展的代码。 软件设计模式通常基于面向对象的编程范式&#xff0c;并利用封装、…

山东大学软件学院项目实训-创新实训-基于大模型的旅游平台(二十八)- 微服务(8)

目录 11.4 SpringAMQP 11.4.2 Work Queue工作队列 11.4.3 发布订阅模型 11.4.4 FanoutExchange(广播交换机) 11.4.5 DirectExchange(路由模式交换机) 11.4.6 TopicExchange 11.5 消息转换器 11.4 SpringAMQP 父工程引入AMQP依赖 <!--AMQP依赖&#xff0c;包含RabbitMQ…

【Android面试】Java中静态内部类是什么?和非静态内部类的区别是什么?

文章目录 Java中静态内部类是什么?和非静态内部类的区别是什么?这道题想考察什么?考察的知识点考生应该如何回答什么是内部类,什么是静态内部类?静态内部类非静态内部类静态内部类和非静态内部类的区别静态内部类和普通内部类都有各自的用途和优势扩展一:使用静态内部类来…

接口自动化测试做到什么程度的覆盖算是合格的

接口自动化测试的覆盖程度是一个衡量测试质量与效率的重要指标&#xff0c;其“好”的标准并非绝对&#xff0c;而是根据项目特性和团队需求动态调整的结果。然而&#xff0c;有几个原则和实践可以帮助我们确定一个相对合理的覆盖范围&#xff0c;以及为何这些覆盖是必要的。 1…

鸿蒙全栈开发-一文读懂鸿蒙同模块不同模块下的UIAbility跳转详解

前言 根据第三方机构Counterpoint数据&#xff0c;截至2023年三季度末&#xff0c;HarmonyOS在中国智能手机操作系统的市场份额已经提升至13%。短短四年的时间&#xff0c;HarmonyOS就成长为仅次于安卓、苹果iOS的全球第三大操作系统。 因此&#xff0c;对于鸿蒙生态建设而言&a…

FatFs文件系统移植到MCU平台详细笔记经验教程

0、准备工作 在移植FatFs文件系统前&#xff0c;需要准备好一块开发板&#xff0c;和一张SD卡&#xff0c;且需要已经实现开发板正常的读写SD卡或其它硬件设备。 本文笔记教程中使用的硬件设备是STM32F407VET6开发板&#xff08;板载SD插槽&#xff09;&#xff0c;配备8G和32G…

C#知识|通过ADO.NET实现应用程序对数据库的查询操作。

哈喽,你好啊,我是雷工! 前边学习了通过ADO.NET实现C#应用程序对数据库的增、删、改操作。 接下来接着学习查询操作,以下为学习笔记。 查询返回有两种类型,一种是单行单列的单一结果,一种是结果集,首先了解查询结果是单行单列结果的写法。 01 查询返回单一结果 以前方的…

[AVL数四种旋转详细图解]

文章目录 一.右单旋二. 左单旋三. 右左双旋四. 左右双旋 一.右单旋 新节点插入较高左子树的左侧—左左&#xff1a;右单旋 由于在较高左子树的左侧插入一个节点后&#xff0c;左边插入导致30的平衡因子更新为-1&#xff0c;而60平衡因子更新为-2&#xff0c;此时不平衡&…

RxSwift-数据双向绑定

RxSwift原理: RxSwift 的一些原理解析 | Zacharys blog RxSwift 源码解析03:Observable 核心逻辑 - 简书 RxSwift源码分析(一)-核心逻辑解析 RxSwift 是一个用于 iOS 开发的响应式编程库,它提供了一种声明式的方法来处理异步数据流。双向数据绑定(Two-way Data Binding…

iCloud高效利用

在 iPhone、iPad 或 iPod touch 上为“备忘录”设置 iCloud 在 iPhone、iPad 或 iPod touch 上&#xff0c;前往“设置”> [你的名字] > iCloud。 执行以下任一操作&#xff1a; iOS 16、iPadOS 16 或更高版本&#xff1a;轻点“显示全部”&#xff0c;轻点“备忘录”&a…

五大PS插件推荐,让你的设计效率翻倍!

前言 PS插件可以在繁忙的设计工作中&#xff0c;帮助设计师们快速高效地完成任务&#xff0c;是每个设计师都渴望解决的问题。这些插件不仅能够提升设计效率&#xff0c;还能让设计师的创意得到更好的展现。接下来&#xff0c;就为大家推荐五款必备的PS插件&#xff0c;让你的…

AI数字人本地算力直播怎么做?青否数字人教您快速搭建直播间!

一、青否数字人直播分为两种&#xff0c;一种是云端渲染另外一种就是本地渲染 使用本地算力来进行直播间互动&#xff0c;本地算力能够使商家拥有更低成本运营 在独立部署数字人SaaS系统后&#xff0c;其他的数字人厂商是【云服务器】【算力服务器】相结合的方式&#xff0c;以…

动态IP在云计算中的应用与优势(短效IP的作用)

一、云计算概述 云计算是指通过互联网将计算资源和服务提供给用户的一种模式。它具有高灵活性、可扩展性和成本效益等特点&#xff0c;使得企业能够快速响应市场变化&#xff0c;降低IT投入成本。云计算的核心优势在于其资源的动态分配和高效利用。 二、动态IP在云计算中的角…

JDK17语法新增特性(常用)

1、yield 关键字 yield 关键字从Java13开始引入&#xff0c;用于从case的代码块中返回值 示例&#xff1a; 正常的switch语句&#xff1a; public static void main(String[] args) {String data "one";int result 0;//接收数据的返回值switch(data) {case &quo…

2024年计算机、信息工程与大数据应用国际会议(CIEBDA 2024)

2024 International Conference on Computer, Information Engineering, and Big Data Applications 【1】大会信息 会议简称&#xff1a;CIEBDA 2024 大会地点&#xff1a;中国青岛 审稿通知&#xff1a;投稿后2-3日内通知 投稿邮箱&#xff1a;ciebdasub-paper.com 【2】会…

三、【源码】Mapper XML的解析和注册使用

源码地址&#xff1a;https://github.com/mybatis/mybatis-3/ 仓库地址&#xff1a;https://gitcode.net/qq_42665745/mybatis/-/tree/03-parse-mapperXML Mapper XML的解析和注册使用 流程&#xff1a; 1.Resources加载MyBatis配置文件生成Reader字符流 2.SqlSessionFact…