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

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-reloadsudo 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-amd64docker 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.0docker 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/.kubesudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/configsudo chown $(id -u):$(id -g) $HOME/.kube/configexport 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.mzph.cn/diannao/53827.shtml

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

相关文章

写的一致性问题之双删模式

文章目录 1、双删模式1.1、同步双删1.2、异步双删1.3、延时双删1.4、定时双删 在事务提交前后删除两次redis,会有性能问题 企业开发常用:延时双删、异步双删 1、双删模式 1.1、同步双删 实现思路:AOP 1.2、异步双删 在事务提交之后异步删除r…

redis群集的三种模式

目录 一、redis群集有三种模式 二、redis主从复制 2.1 概念 2.2 主从复制的作用 2.3 主从复制流程 三、搭建redis主从复制 四、redis哨兵模式 4.1 概念 4.2 哨兵模式原理: 4.3 哨兵模式的作用: 4.4 故障转移机制: 4.5 主节点的选举&#xff…

【计算机网络】电路交换、报文交换和分组交换——三种交换方式性能分析以及计算机网络的分类

【计算机网络】电路交换、电报交换、分组交换 目录 【计算机网络】电路交换、电报交换、分组交换1. 电路交换2. 电报交换3. 分组交换4. 基于分组交换~“虚电路交换”技术 【计算机网络】电路交换、报文交换和分组交换——三种交换方式性能分析电路交换性能分析报文交换性能分析…

C/C++:优选算法

一、双指针 1.1移动零 链接:283. 移动零 - 力扣(LeetCode) 给定一个数组 nums,编写一个函数将所有 0 移动到数组的末尾,同时保持非零元素的相对顺序。请注意 ,必须在不复制数组的情况下原地对数组进行操…

[001-03-007].第07节:Redis中的事务

我的后端学习大纲 我的Redis学习大纲 1、Redis事务是什么: 1.可以一次执行多个命令,本质是一组命令的集合。一个事务中的所有命令都会序列化, 按顺序地串行化执行而不会被其他命令插入,不许加塞2.一个队列中,一次性、…

PLSQL-将一份excel数据导入到一张物理表(Oracle)

–>> 很简单~ 平时用惯了DBeaver,突然要用PLSQL Developer,确实很生疏。 –>> 我的场景,将一份.csv文件数据手动导入到Oracle下的一张物理表中去。 研究了半天,看网上说的可以用:Tools → ODBC Importer &…

WPF 手撸插件 八 依赖注入

本文内容大量参考了:https://www.cnblogs.com/Chary/p/11351457.html 而且这篇文章总结的非常好。 1、注意想使用Autofac,Autofac是一个轻量级、‌高性能的依赖注入(‌DI)‌框架,‌主要用于.NET应用程序的组件解耦和…

被低估的SQL

SQL是现代数据库管理系统中不可或缺的一部分。尽管它的使用已十分普遍,但在数据处理领域,SQL的某些功能和潜力仍然被许多人低估。接下来,小编将与您一起,探讨SQL的一些被忽视的特性,揭示它在数据管理中的真正实力。 1.…

红海云 × 滨湖国控集团 | 数智引领集团型国企人力资源数字化变革

合肥滨湖国有资本运营控股集团有限公司(以下简称“滨湖国控集团”)为合肥市包河区区属一级国企。滨湖国控集团作为安徽省市辖行政区中首个获得AA主体信用评级的区属国企,紧扣“三区”定位,聚焦“三位”追求 ,积极构筑金…

Python OpenCV精讲系列 - 高级图像处理技术(五)

💖💖⚡️⚡️专栏:Python OpenCV精讲⚡️⚡️💖💖 本专栏聚焦于Python结合OpenCV库进行计算机视觉开发的专业教程。通过系统化的课程设计,从基础概念入手,逐步深入到图像处理、特征检测、物体识…

使用 Elastic 和 LM Studio 的 Herding Llama 3.1

作者:来自 Elastic Charles Davison, Julian Khalifa 最新的 LM Studio 0.3 更新使 Elastic 的安全 AI Assistant 能够更轻松、更快速地与 LM Studio 托管模型一起运行。在这篇博客中,Elastic 和 LM Studio 团队将向你展示如何在几分钟内开始使用。如果你…

【UE5 C++课程系列笔记】02——创建C++类的三种方式

目录 一、从UE编辑器中创建 引用头文件报错的两种解决方式 (1)方式1 (2)方式2 二、在文件夹中直接创建 三、在Visual Studio中创建 一、从UE编辑器中创建 在UE编辑器中选择“Tools-》New C Class” 这里新建的类的父类选择…

解锁阿尔茨海默病(AD)靶点密码,开启靶向治疗新篇章

前 言: 阿尔茨海默病(AD)是一种严重的神经退行性疾病,多发于高龄人群,主要表现为记忆、思维、分析判断、视空间辨认、情绪等障碍。从实验室到临床应用的过程充满挑战。阿尔茨海默症新型疗法的开发主要聚焦于靶向Aβ、…

Vue3.0项目实战(三)——大事件管理系统首页 layout 架子与文章分类的实现

目录 1. 首页 layout 架子 [element-plus 菜单] 1.1 基本架子拆解 2. 登录访问拦截 2.1 需求 2.2 vue3 和 vue2 中的 Vue-Router 区别 3. 用户基本信息获取&渲染 4. 退出功能 [element-plus 确认框] 5. 文章分类页面 - [element-plus 表格] 5.1 基本架子 - PageCo…

专业版PyCharm使用plt.show()显示图像时,如何不显示在右侧工具栏中,而是直接弹出来

解决方案 File -> Settings -> Python Plots -> 取消勾选 Show plots in tool window 示例 默认勾选 Show plots in tool window 的显示效果: 取消勾选 Show plots in tool window 的显示效果:

伙房食堂电气安全新挑战:油烟潮湿环境下,如何筑起电气火灾“防火墙”?

近几年,随着我国经济的飞速发展,食堂餐饮也经历了一场变革,越来越多的电器走进了伙房食堂中,实现了电气化,为人们提供了高效便利的饮食服务,但同时也增加了火灾负荷。目前我国非常严重的电气火灾危害&#…

使用 Parallel 类进行多线程编码(下)

2.Parallel.ForEach() 的使用 从 ForEach() 这个名字可以看出该方法是用来遍历泛型集合的,新建一个 ASP.NET Core Web应用的项目,如下: 在 Index.cshtml.cs 文件中增加一个 UserInfo.cs 的类,代码如下: public class U…

组合逻辑电路的分析

目录 组合逻辑电路的分析 分析思路 基本步骤 例题1 例题2 组合逻辑电路的分析 分析思路 基本步骤 例题1 将每个门的输出命名。 写出逻辑函数式。 列真值表。 ABC全一致输出为1。 例题2 观察发现这三个结构是一样的。 逐级写出逻辑函数式: 发现这其实就是异或…

基于云端的跨平台个人信息管理系统

博主介绍:专注于Java .net php phython 小程序 等诸多技术领域和毕业项目实战、企业信息化系统建设,从业十五余年开发设计教学工作 ☆☆☆ 精彩专栏推荐订阅☆☆☆☆☆不然下次找不到哟 我的博客空间发布了1000毕设题目 方便大家学习使用 感兴趣的可以…

无线麦克风哪款好用,手机领夹麦克风哪个牌子好,麦克风推荐

随着短视频与直播行业的蓬勃发展,无线领夹麦克风市场迎来了前所未有的繁荣。品牌如罗德、大疆、西圣等麦克风品牌凭借卓越的技术实力与品牌影响力占据了市场的主导地位,其中西圣更是凭借其高性价比和用户口碑,稳居行业口碑品牌前列。但在这光…