Debian 安装 kubernets

Docker环境

添加 Docker 的官方 GPG 密钥

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

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

    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 拉取镜像拉取加速

vim /etc/docker/daemon.json
{"registry-mirrors": ["https://reg-mirror.qiniu.com","https://hub-mirror.c.163.com","https://docker.mirrors.ustc.edu.cn"],"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 用户的初始默认密码。

kubectl客户端调用远程集群

官方文档 在 Linux 系统中安装并设置 kubectl | Kubernetes

  • 下载客户端

    wget https://dl.k8s.io/release/v1.23.0/bin/linux/amd64/kubectlchmod 777 kubectl  # 允许执行
    
  • 验证 kubectl 配置

    将master 节点下 ~/.kube/config 复制在当前用户 ~/.kube/config

    kubectl get nodes --insecure-skip-tls-verify=true
    
      执行 kubectl 出现 `Unable to connect to the server: x509: certificate is valid for 10.20.x.x, 10.0.x.x, not 114.x.x.x `   添加跳过证书验证    `--insecure-skip-tls-verify=true` 
    

其他关联配置

修改主机名

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/diannao/27454.shtml

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

相关文章

python之面向对象(一)

一.类与对象 1.1类和对象的创建 类提供了创建对象的蓝图。对象是类的实例,拥有类中定义的属性和方法。self 参数是对类实例自身的引用,用于访问类的属性和方法。 案例: 下面举一个“长方形”类的例子,包含长,宽属性…

关于对pagination.js源代码进行修改且引入项目使用

实现效果 使用定时器对组件进行每秒请求&#xff0c;每过固定时间之后&#xff0c;进行下一页项目请求&#xff0c;进行到最后一页请求的时候返回第一页。 首先引入js插件 <script src"./js/pagination.js" type"text/javascript"></script>…

Python 中国象棋游戏【含Python源码 MX_011期】

简介&#xff1a; 中国象棋是一种古老而深受喜爱的策略棋类游戏&#xff0c;也被称为中国的国粹之一。它在中国有着悠久的历史&#xff0c;起源可以追溯到几个世纪以前。Python 中国象棋游戏是一个用Python编程语言编写的软件程序&#xff0c;旨在模拟和提供中国象棋的游戏体验…

CVE-2024-23692:Rejetto HFS 2.x 远程代码执行漏洞[附POC]

文章目录 CVE-2024-23692&#xff1a;Rejetto HFS 2.x 远程代码执行漏洞[附POC]0x01 前言0x02 漏洞描述0x03 影响版本0x04 漏洞环境0x05 漏洞复现1.访问漏洞环境2.构造POC3.复现 0x06 修复建议 CVE-2024-23692&#xff1a;Rejetto HFS 2.x 远程代码执行漏洞[附POC] 0x01 前言 …

Elasticsearch:简化数据流的数据生命周期管理

作者&#xff1a;来自 Elastic Andrei Dan 今天&#xff0c;我们将探索 Elasticsearch 针对数据流的新数据管理系统&#xff1a;数据流生命周期&#xff0c;从版本 8.14 开始提供。凭借其简单而强大的执行模型&#xff0c;数据流生命周期可让n 你专注于数据生命周期的业务相关方…

干货!电脑如何录屏?6款win10录屏大师软件深度测评

电脑如何录屏&#xff1f;在2024年&#xff0c;截图或屏幕录制可以说是一种无价的工具。它是捕捉重要信息、与朋友和同事分享说明&#xff0c;或者只是存储您最喜爱的游戏和应用程序中的记忆的好方法。在 Windows 上录制屏幕非常简单。在本篇文章中&#xff0c;我们将讨论在win…

113.网络游戏逆向分析与漏洞攻防-邮件系统数据分析-结构体数据更新思路分析

免责声明&#xff1a;内容仅供学习参考&#xff0c;请合法利用知识&#xff0c;禁止进行违法犯罪活动&#xff01; 如果看不懂、不知道现在做的什么&#xff0c;那就跟着做完看效果&#xff0c;代码看不懂是正常的&#xff0c;只要会抄就行&#xff0c;抄着抄着就能懂了 内容…

绘唐科技官网

绘唐科技AI工具是一系列经过训练的人工智能工具&#xff0c;旨在提供各种智能化的解决方案。这些工具可以应用于多个领域&#xff0c;包括自然语言处理、图像识别、语音识别、机器学习等。 其中&#xff0c;自然语言处理工具可以帮助用户处理和理解文本数据。它可以实现文本分类…

Spring 内置BeanFactoryPostProcessor的子孙们

同样的Spring 也 内置了 一些实现 BeanFactoryPostProcessor的类&#xff0c;各有各的用处。 spring-context AspectJWeavingEnabler 用来把ClassPreProcessorAgentAdapter注册到LoadTimeWeaver中ConfigurationClassPostProcessor 一个重要的类&#xff0c;用来处理Configurat…

3、matlab单目相机标定原理、流程及实验

1、单目相机标定流程及步骤 单目相机标定是通过确定相机的内部和外部参数&#xff0c;以便准确地在图像空间和物体空间之间建立映射关系。下面是单目相机标定的流程及步骤&#xff1a; 搜集标定图像&#xff1a;使用不同角度、距离和姿态拍摄一组标定图像&#xff0c;并确保标…

树莓派 sudo apt-get install python-smbus 报错

sudo apt-get install python-smbus 报错 sudo apt-get install python-smbus 报错 python-smbus : Depends: python (< 2.8)Depends: python (> 2.7~)Depends: python:any (< 2.8)Depends: python:any (> 2.7~) E: Unable to correct problems, you have held b…

泉州职业技术大学2024Java期末题库【基础题】

1.根据输入的表示星期几的数字&#xff0c;对应输出它的英文名称。 考察内容:Switch语句的掌握 public class test1 {public static void main(String[] args) {//switch语句复习//创建对象java.util.Scanner input new java.util.Scanner(System.in);//提示输入语句System.ou…

TF-IDF算法详细解析与应用

一、前言 在信息的海洋中&#xff0c;如何快速准确地找到我们需要的知识&#xff1f;搜索引擎给出了答案。而在搜索引擎背后&#xff0c;有一个核心算法无声地发挥着巨大作用——TF-IDF。本篇博客将为你揭开TF-IDF的神秘面纱&#xff0c;让你深入理解它的原理&#xff0c;并掌…

【递归、搜索与回溯】DFS解决FloodFill算法

一、经验总结 之前我们已经研究过了BFS解决FloodFill算法&#xff1a;【优选算法】BFS解决FloodFill算法-CSDN博客 DFS只是遍历顺序发生了变化&#xff0c;其他需要注意的点大差不差。 二、相关编程题 2.1 图像渲染 题目链接 733. 图像渲染 - 力扣&#xff08;LeetCode&am…

linux服务器网络配置

目录 1、centos的网络配置1.1 静态Ipv4配置方法&#xff1a;1.2 动态Ipv4的设置方法1.3 常见ping不通网关的原因&#xff1a;1.4 查看操作系统版本1.5 查看一台服务器的所有服务1.6 猜测所在房间网关ip 2、 Ubuntu的网络配置&#xff08;静态ipv4&#xff09;3、2024.6.14 解决…

计算机网络(8) Finite State Machines(有限状态机)

一.建立连接&#xff08;三次握手&#xff09; 建立连接过程中的状态转换如下&#xff1a; 客户端&#xff1a; 发送SYN CLOSED >>>>>>>>>>>>>>SYN SENT(第一次握手) 接收SYNACK发送ACK …

【云原生】创建harbor私有仓库及使用aliyun个人仓库

1.安装docker #删除已有dockersystemctl stop docker yum remove docker \docker-client \docker-client-latest \docker-common \docker-latest \docker-latest-logrotate \docker-logrotate \docker-engine #安装docker yum install -y docker-ce-20.10.1…

SIGMOD 2024 | 时空数据(Spatial-Temporal)和时间序列(Time Series)论文总结

SIGMOD2024于6月9号-6月14号正在智利圣地亚戈举行&#xff08;Santiago Chile&#xff09; 本文总结了SIGMOD 2024有关时间序列&#xff08;time series&#xff09;,包括时序数据库&#xff0c;查询优化等内容。以及时空数据&#xff08;spatial-temporal data&#xff09;的…

简单http客户端程序

要求和目的 深入理解http协议以及http下载相关功能的程序设计 实验环境 Java语言&#xff0c;PC平台 实验要求 基本要求&#xff1a;使用Socket类&#xff0c;实现一个简单的HTTP客户端程序。用户输入URL&#xff0c;该程序可以从服务器下载URL指定的资源&#xff0c;并将之…

【gtest】 C++ 的测试框架之使用 gtest 编写单元测试

目录 &#x1f30a;前言 &#x1f30a;使用 cmake 启动并运行 gtest &#x1f30d;1. 设置项目 &#x1f30d;2. 创建并运行二进制文件 &#x1f30a;1. gtest 入门 &#x1f30d;1.1 断言&#xff08;assertions&#xff09; &#x1f30d;1.2 简单测试 &#x1f30d;…