最新kubernetes的安装填坑之旅(新手篇)

news2025/1/13 2:24:27

Kubernetes(常简称为 K8s)是一个开源的容器编排平台,用于自动化部署、扩展和管理容器化应用程序,lz也不知道哪根脑经秀逗了,竟然妄挑战学习一下,结果折戟沉沙,被折腾的欲仙欲死,不过索性还是搭建成功了~

问题1:kubelet、kubeadm、kubectl No apt package

问题2:kubeadm config images pull 拉取不到镜像

1. 入门先知

        Kubernetes(常简称为 K8s),了解它的人都知道。它这个集群服务很强大,具体强大到哪呢,lz也不知道。毕竟,lz对它的初次了解始于两天前。所以,这篇博客很适合新手。

        k8s主要和docker搭配使用,用于管理容器化的工作负载和服务,方便进行声明式配置和自动化。通过它,可以让多个不同服务器进行集群化,达到通信负载均衡等目的。

在 Kubernetes 生态系统中,kubeletkubeadm kubectl 是三个关键的命令行工具,每个工具都有其独特的作用和用途:

  1. kubelet

    • 作用kubelet 是 Kubernetes 集群中的节点代理,它在每个节点上运行,负责维护容器的生命周期,包括启动容器、监控容器运行状态以及向 Kubernetes 控制平面报告节点和容器的状态。
    • 功能kubelet 接收来自 Kubernetes 控制平面的指令,确保容器、镜像和 Kubernetes 卷的正确配置和状态。它还处理节点上的网络配置和容器运行环境。
    • 用户交互:通常,用户不会直接与 kubelet 交互,而是通过 kubectl 命令行工具或其他 Kubernetes API 客户端。
  2. kubeadm

    • 作用kubeadm 是 Kubernetes 的集群生命周期管理工具,用于初始化和升级 Kubernetes 集群。
    • 功能kubeadm 提供了一系列命令来简化 Kubernetes 集群的创建、升级和维护。它负责初始化集群的控制平面节点,包括启动所需的服务(如 API 服务器、调度器、控制器管理器等),并生成必要的证书和配置文件。
    • 用户交互:通常由集群管理员使用 kubeadm 来初始化新集群或升级现有集群。它也可以用来添加新的节点到集群中。
  3. kubectl

    • 作用kubectl 是 Kubernetes 的命令行工具,用于与 Kubernetes 集群交互和管理资源。
    • 功能kubectl 提供了丰富的命令来操作 Kubernetes 资源,如创建、删除、更新和获取资源信息。它支持资源的滚动更新、日志查看、执行容器内命令、资源监控等功能。
    • 用户交互:用户和开发者通常通过 kubectl 命令行工具与 Kubernetes 集群交互,执行各种管理和操作任务。

 2.安装k8s及填坑说明

        网上的一些教程有一些说的是多集群的安装,也就是涉及多个服务器。这里只做一个服务器的安装,作为主master节点。所以关于host,ip等配置就不多加叙述。

示例服务器:华为云 Ubuntu 22.04.4 LTS (GNU/Linux 5.15.0-113-generic x86_64)

kubernetes官方地址:Kubernetes

2.1 docker安装与镜像源配置

        docker和k8s相关工具的安装都需要拉取镜像,但是国内服务器被限制访问外部,导致很多镜像都拉取不到,一些大厂提供的镜像源也逐渐废弃,所以,如果找到了稳定可靠的镜像源,且行且珍惜。

shell终端登录服务器第一步,先更新软件包,再安装docker:

# 更新软件包
root@ecs-291408:~# apt update

# 安装docker
root@ecs-291408:~# apt-get -y install docker.io

至此,docker就安装好了,后面再配置一下docker的镜像源:

在目录下创建对应文件  /etc/docker/datmon.json 

root@ecs-291408:~# cd /etc/docker
root@ecs-291408:/etc/docker# touch datmon.json
root@ecs-291408:/etc/docker# ls
datmon.json

配置如下内容:

{
        "registry-mirrors": [
                "https://mirrors.tuna.tsinghua.edu.cn"
        ]
}

重启 Docker,使配置生效,docker info 查看是否配置成功

sudo systemctl daemon-reload

sudo systemctl restart docker

2.2 kubelet、kubeadm、kubectl安装

        通过apt 命令安装:

apt-get install -y apt-transport-https curl
apt-get install -y kubelet kubeadm kubectl --allow-unauthenticated

 理所当然提示包不存在,还是老生常谈的问题,apt镜像源没有k8s 的软件包。

 再来配置下apt的镜像源,进入 /etc/apt/sources.list  配置文件,加上下面这行阿里云镜像源地址

deb https://mirrors.aliyun.com/kubernetes/apt kubernetes-xenial main

再进行 apt update 更新,会提示如下:

The following signatures couldn't be verified because the public key is not available

 则执行下面命令,为期添加 key。

curl https://mirrors.aliyun.com/kubernetes/apt/doc/apt-key.gpg | sudo apt-key add 

 后面再apt update 更新,就只会提示:

Key is stored in legacy trusted.gpg keyring (/etc/apt/trusted.gpg), see the DEPRECATION section in apt-key(8) for details.

这里不用管,不影响工具包的正常安装。输入  apt search kubectl   能显示出对应的工具包,说明镜像源生效了。我们接下来还是安装k8s的三个工具。

2.3 kubeadm init 初始化问题

Tips:这里有个注意事项,卡了lz一天。一定要注意!一定要注意!!一定要注意!!!重要的事情说三遍,千万不要走默认直接安装,因为默认安装会是最新的版本,v1.28.2。而最新的版本在进行kubeadm init 初始化集群时,每次都会去k8s.gcr.io拉取镜像。拉不到啊!! 

 kubeadm自版本1.24开始,每次kubeadm init 初始化集群就会通过内置去拉取镜像,而不会通过docker去找已经有的镜像,  而通过内置拉取镜像,是不走镜像源的,服务器在国内,由于某些原因,是无法访问"k8s.gcr.io", "gcr.io", "quay.io"  。所以就会出现一种常见的问题:

  kubeadm config images pull 拉取不到镜像,超时,包不存在等问题

而解决办法就是,这里我们要安装指定版本:kubelet、kubeadm、kubectl :

apt-get -y install kubectl=1.21.3-00 kubelet=1.21.3-00 kubeadm=1.21.3-00

 安装好之后,我们要通过 :kubeadm config images list  

列出对应需要的镜像,然后通过docker访问国内镜像源的方式手动来安装。这样在进行初始化集群的时候就不会去重新拉取了,而会找docker已经拉取的镜像。

root@ecs-291408:~# kubeadm config images list
I0913 10:10:02.881062   14452 version.go:254] remote version is much newer: v1.31.0; falling back to: stable-1.21
k8s.gcr.io/kube-apiserver:v1.21.14
k8s.gcr.io/kube-controller-manager:v1.21.14
k8s.gcr.io/kube-scheduler:v1.21.14
k8s.gcr.io/kube-proxy:v1.21.14
k8s.gcr.io/pause:3.4.1
k8s.gcr.io/etcd:3.4.13-0
k8s.gcr.io/coredns/coredns:v1.8.0

         创建下面的bat脚本,并执行,该脚本的意义就是通过国内镜像源拉取对应版本号所需的镜像,然后再打标签命名为对应仓库版本名称,以此达到狸猫换太子的目的。

#/bin/bash
docker pull registry.cn-hangzhou.aliyuncs.com/google_containers/kube-apiserver:v1.21.14
docker pull registry.cn-hangzhou.aliyuncs.com/google_containers/kube-controller-manager:v1.21.14
docker pull registry.cn-hangzhou.aliyuncs.com/google_containers/kube-scheduler:v1.21.14
docker pull registry.cn-hangzhou.aliyuncs.com/google_containers/kube-proxy:v1.21.14
docker pull registry.cn-hangzhou.aliyuncs.com/google_containers/pause:3.4.1
docker pull registry.cn-hangzhou.aliyuncs.com/google_containers/etcd:3.4.13-0
docker pull registry.cn-hangzhou.aliyuncs.com/google_containers/coredns:v1.8.0
docker pull quay.io/coreos/flannel:v0.15.1-amd64
 
docker tag registry.cn-hangzhou.aliyuncs.com/google_containers/kube-apiserver:v1.21.14 k8s.gcr.io/kube-apiserver:v1.21.14
docker tag registry.cn-hangzhou.aliyuncs.com/google_containers/kube-controller-manager:v1.21.14 k8s.gcr.io/kube-controller-manager:v1.21.14
docker tag registry.cn-hangzhou.aliyuncs.com/google_containers/kube-scheduler:v1.21.14 k8s.gcr.io/kube-scheduler:v1.21.14
docker tag registry.cn-hangzhou.aliyuncs.com/google_containers/kube-proxy:v1.21.14 k8s.gcr.io/kube-proxy:v1.21.14
docker tag registry.cn-hangzhou.aliyuncs.com/google_containers/pause:3.4.1 k8s.gcr.io/pause:3.4.1
docker tag registry.cn-hangzhou.aliyuncs.com/google_containers/etcd:3.4.13-0 k8s.gcr.io/etcd:3.4.13-0
docker tag registry.cn-hangzhou.aliyuncs.com/google_containers/coredns:v1.8.0 k8s.gcr.io/coredns/coredns:v1.8.0
 
docker rmi registry.cn-hangzhou.aliyuncs.com/google_containers/kube-apiserver:v1.21.14
docker rmi registry.cn-hangzhou.aliyuncs.com/google_containers/kube-controller-manager:v1.21.14
docker rmi registry.cn-hangzhou.aliyuncs.com/google_containers/kube-scheduler:v1.21.14
docker rmi registry.cn-hangzhou.aliyuncs.com/google_containers/kube-proxy:v1.21.14
docker rmi registry.cn-hangzhou.aliyuncs.com/google_containers/pause:3.4.1
docker rmi registry.cn-hangzhou.aliyuncs.com/google_containers/etcd:3.4.13-0
docker rmi registry.cn-hangzhou.aliyuncs.com/google_containers/coredns:v1.8.0

 执行脚本之后,输入docker images 显示的列表和  kubeadm config images list  显示的镜像列表一样,说明就成功了。

然后就可以  kubeadm init 奔放啦~

安装完后,别忘了按照要求执行以下两个命令:


  mkdir -p $HOME/.kube
  sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config
  sudo chown $(id -u):$(id -g) $HOME/.kube/config

  export KUBECONFIG=/etc/kubernetes/admin.conf

 为了使主节点生效,还需要安装网络插件:

#kube-flannel.yml文件地址:
wget https://raw.githubusercontent.com/coreos/flannel/master/Documentation/kube-flannel.yml
kubectl apply -f kube-flannel.yml 

kubectl get pods --all-namespaces

3.结束语

        兜兜转转,不忘初心,方得始终。听闻会k8s者,可成架构师。吾也不知真假,毕竟才接触两天。lz本来是想搞个k8s的可视化控制面板的。但是无奈卡在安装这里。窥一豹而见全貌,lz大概能想象的到它的强大了。后面有机会再了解吧。

        我一定会回来的!!

推荐k8可视化面板:

KubeSphere官方地址

kuboard Git地址

这两个面版界面看着还不错,深得我心。奈何能力不济,搭建不出来~

 

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

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

相关文章

26577flask旧衣物捐赠系统—计算机毕业设计源码26577

摘要 科技进步的飞速发展引起人们日常生活的巨大变化,电子信息技术的飞速发展使得电子信息技术的各个领域的应用水平得到普及和应用。信息时代的到来已成为不可阻挡的时尚潮流,人类发展的历史正进入一个新时代。在现实运用中,应用软件的工作规…

【鸿蒙开发从0到1 day10】

ArkUI布局高级 一.线性布局1.间距(space)2.主轴对齐方式3.交叉轴对齐方式4.单个子组件交叉轴的对齐方式5.自适应缩放6.侧轴对齐方式7.案例 二.弹性布局1.淘宝网页面案例分析 三.总结 一.线性布局 线性布局(LinearLayout)是开发中最常用的布局&#xff0…

海鲜市场|基于springboot的网络海鲜市场系设计与实现(附项目源码+论文+数据库)

私信或留言即免费送开题报告和任务书(可指定任意题目) 目录 一、摘要 二、相关技术 三、系统设计 四、数据库设计 五、核心代码 六、论文参考 七、源码获取 一、摘要 计算机网络发展到现在已经好几十年了,在理论上面已…

HyperWorks二维网格划分及拓扑改进

Step 01:载入模型 Exercise_3a.hm。 Step 02:2D 网格划分。 进入 automesh 面板。 图 3-13 设置 automesh 面板网格控制参数 (2) 指定 element size 为 5,根据图 3-13 设置网格控制参数。 (3) 查看网格。 图 3-14 新创建的网格模型 网格…

计算机组成原理(二) —— Cache 高速缓存

这篇主要讲一下高速缓存,涉及到高速缓存的几种形式,缓存友好代码注意事项,多处理器下缓存的同步机制。 文章目录 存储器层次结构高速缓存存储器通用的高速缓存存储器组织结构直接映射高速缓存组选择行匹配字选择不命中时的行替换冲突不命中 组…

半个月赚3000+,用AI做仙侠场景账号,全网分发

那些看过的仙侠剧、修仙小说,玩过的仙侠游戏,你还记得吗? 仙侠类型之所以让人津津乐道,除了不同于普通人的人物形象塑造以及跌宕起伏的剧情之外,美轮美奂的仙境场景也是重中之重。所以,每个人心中都有独属于…

Qt Model/View之Model

在检查如何处理选择之前,您可能会发现检查模型/视图框架中使用的概念很有用。 基本概念 在模型/视图架构中,模型提供了一个标准接口,用于视图和委托访问数据。在Qt中,标准接口由QAbstractItemModel类定义。无论数据项如何存储在…

ListBox显示最新数据、左移和右移操作

1、程序 using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.IO; using System.Linq; using System.Text; using System.Threading.Tasks; using System.Windows.Forms; using static Sys…

《餐饮世界》是什么级别的期刊?是正规期刊吗?能评职称吗?

​问题解答 问:《餐饮世界》是不是核心期刊? 答:不是,是知网收录的正规学术期刊。 问:《餐饮世界》级别? 答:国家级。主管单位: 中国商业联合会 主办单位&am…

b√最大矩阵和

题目描述 给定一个二维整数矩阵&#xff0c;要在这个矩阵中选出一个子矩阵. 使得这个子矩阵内所有的数字和尽量大&#xff0c;我们把这个子矩阵称为和最大子矩阵 子矩阵的选取原则是原矩阵中一块相互连续的矩形区域。 输入描述 输入的第一行包含2个整数n,m(1< n,m< 10…

Mysql连接不上的问题?

Mysql服务器本地能访问&#xff0c;但是外部连接报错如下&#xff1a;显然我也知道这就是一个权限问题&#xff0c;但是在网上百度的方法要么就是不生效&#xff0c;要么就是执行命令报错&#xff0c;很抓狂&#xff5e;这里提供精准的解决方案&#xff1a;SELECT User, Host F…

EV代码签名证书签名指南,签名要求、签名步骤一览

作为软件开发者&#xff0c;在软件分发之前&#xff0c;为软件应用程序进行代码签名&#xff0c;可标识开发者身份&#xff0c;消除“未知发布者”警告&#xff0c;确保代码完整性&#xff0c;有利于应用程序安全分发&#xff0c;也可以让用户放心下载。而为软件应用程序进行代…

【C语言从不挂科到高绩点】17-C语言中的宏定义

Hello&#xff01;彦祖们&#xff0c;俺又回来了&#xff01;&#xff01;&#xff01;&#xff0c;继续给大家分享 《C语言从不挂科到高绩点》课程!! 本节将为大家讲解C语言中的函数&#xff1a; 本套课程将会从0基础讲解C语言核心技术&#xff0c;适合人群&#xff1a; 大学…

取消Cursor的注释斜体字风格

1. 打开settings.json 2. 添加如下代码 "editor.tokenColorCustomizations": {"textMateRules": [{"name": "Comment","scope": ["comment","comment.block","comment.block.documentation"…

Vert.x HttpClient调用后端服务时使用Idle Timeout和KeepAlive Timeout的行为分析

其实网上有大量讨论HTTP长连接的文章&#xff0c;而且Idle Timeout和KeepAlive Timeout都是HTTP协议上的事情&#xff0c;跟Vert.x本身没有太大关系&#xff0c;只不过最近在项目上遇到了一些问题&#xff0c;用到了Vert.x的HttpClient&#xff0c;就干脆总结一下&#xff0c;留…

从Apple Intelligence到IoT Intelligence,端侧生成式AI时代加速到来

9月10日凌晨1点&#xff0c;苹果新品发布会如期举行&#xff0c;全新iPhone16系列成为苹果生态中真正意义上的第一款原生AI手机&#xff0c;在第二代3nm工艺A18和A18 Pro芯片的加持下&#xff0c;iPhone16系列能够容纳并快速运行以Apple Intelligence为中心的生成式AI功能在手机…

铭顺元宇宙时代到来,数字人应用案例分享

近年来&#xff0c;随着技术的不断发展&#xff0c;数字人的功能和表现力也在不断提升&#xff0c;形形色色的虚拟数字人正代替真人&#xff0c;扮演着代言人、主播、客服和智能助理的角色&#xff0c;涉及文旅、电商、金融等多个行业。作为随着AI技术在数字人产业中的发展&…

远程桌面内网穿透是什么?有什么作用?

远程桌面内网穿透指的是通过特定技术手段&#xff0c;将处于内网中的电脑或服务器&#xff0c;通过外部网络&#xff08;互联网&#xff09;进行访问。内网穿透的主要作用是解决在内网环境下&#xff0c;远程设备与外部互联网之间的连接问题&#xff0c;允许用户从外部访问内网…

硬核,这款小而美的国产操作系统开源了!(带私活源码)

今天给大家介绍的是硬核的国产物联网操作系统 RT-Thread&#xff0c;内容很硬核&#xff0c;可以让大家捡起一些大学期间学到的知识&#xff0c;也能让自己对于操作系统有更多的理解。 项目介绍 RT-Thread 诞生于 2006 年&#xff0c;是一款以开源的物联网操作系统。主要采用…

07 vue3之组件及生命周期

组件基础 每一个.vue 文件呢都可以充当组件来使用 每一个组件都可以复用 组件的生命周期 简单来说就是一个组件从创建 到 销毁的 过程 成为生命周期 在我们使用Vue3 组合式API 是没有 beforeCreate 和 created 这两个生命周期的 onBeforeMount() 在组件DOM实际渲染安装之前…