最新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.rhkb.cn/news/422679.html

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

相关文章

安卓学习笔记-unity调用原生opencv的sdk

unity调用原生opencv的sdk 问题描述解决思路解决过程准备工作opencv安卓原生sdk找到人脸检测的代码,检测成功后发送消息给unityunity接收消息 遇到的问题问题一问题二问题三 如何解决遇到的问题问题一:opencvactivity遮挡unity的界面问题问题二&#xff…

《OpenCV计算机视觉》—— 对图片进行旋转的两种方法

文章目录 一、用numpy库中的方法对图片进行旋转二、用OpenCV库中的方法对图片进行旋转 一、用numpy库中的方法对图片进行旋转 numpy库中的 np.rot90 函数方法可以对图片进行旋转 代码实现如下: import cv2 import numpy as np# 读取图片 img cv2.imread(wechat.jp…

Golang | Leetcode Golang题解之第400题第N位数字

题目: 题解: func findNthDigit(n int) int {d : 1for count : 9; n > d*count; count * 10 {n - d * countd}index : n - 1start : int(math.Pow10(d - 1))num : start index/ddigitIndex : index % dreturn num / int(math.Pow10(d-digitIndex-1)…

【三刷C语言】各种注意事项

这里是阿川的博客,祝您变得更强 ✨ 个人主页:在线OJ的阿川 💖文章专栏:C语言入门到进阶 🌏代码仓库: 写在开头 现在您看到的是我的结论或想法,但在这背后凝结了大量的思考、经验和讨论 目录 1.…

无线领夹麦克风怎么挑选?选购麦克风必看的避坑指南

在这个视频自媒体行业的蓬勃发展的时代,麦克风对于自媒体行业可以说是必不可少的装备了,在各大视频博主、Up主、主播通过互联网输出自己想法的同时,一个好的麦克风可以让事情事半功倍,通过麦克风提高收音音质,减少后期…

数据结构算法——排序算法

1.排序 1.选择排序 不稳定&#xff0c;一般不用&#xff0c;基本排序 思路&#xff1a;过滤数组&#xff0c;找到最小数&#xff0c;放在前面。 不稳&#xff1a;导致原本在前的数据移动到后面。 int arr[];for(i0;i<arr.length-1;i){int smallesti; for(ji1;j<leng…

【OpenCV】灰度化和二值化处理图像

文章目录 1. 图像灰度化处理对比2. 代码示例3. 二值化处理 1. 图像灰度化处理对比 2. 代码示例 #include <opencv2/opencv.hpp> using namespace cv;int main() {Mat currentImage imread("path_to_image.jpg"); // 读取彩色图像Mat grayImage;// 将彩色图像…

SOMEIP_ETS_106: SD_ClientServiceSubscribeEventgroup

测试目的&#xff1a; 验证DUT在客户端模式下能够订阅测试器提供的ETS&#xff08;Enhanced Testability Service&#xff09;服务。 描述 本测试用例旨在确保DUT在客户端模式下能够通过发送FindService消息发现服务&#xff0c;并在接收到测试器提供的OfferService消息后&a…

大模型如何生成下一个token--解码策略

Background 生成模型目前主要使用自回归&#xff08;Autoregressive&#xff09;模型&#xff0c;通过上文信息预测下文信息&#xff0c;如GPT系列&#xff1b; BERT系列使用自编码&#xff08;AutoEncode&#xff09;模型&#xff0c;在输入中随机mask一部分token&#xff0c…

关于ansible自动化运维工具

成长路上不孤单&#x1f60a;【14后&#xff0c;C爱好者&#xff0c;持续分享所学&#xff0c;如有需要欢迎收藏转发&#x1f60a;&#x1f60a;&#x1f60a;&#x1f60a;&#x1f60a;&#x1f60a;&#x1f60a;&#xff01;&#xff01;&#xff01;&#xff01;&#xff…

HCIE和CCIE,哪个含金量更高点?

在现在内卷的大环境下&#xff0c;技术岗可谓人人自危&#xff0c;也因此各种认证的重视程度直线升高。 特别是华为认证的HCIE和思科认证的CCIE&#xff0c;它们都代表着网络技术领域的顶尖水平。 但面对这两个高含金量的认证&#xff0c;不得不让人问出这个问题&#xff1a;同…

关于Hadoop重新格式化之后集群的崩溃问题

关于Hadoop重新格式化之后集群的崩溃问题 文章目录 关于Hadoop重新格式化之后集群的崩溃问题写在前面版本信息实验场景 HiveHive交互段查询报错原因分析解决方法手动启动元数据服务重新初始化元数据库 HBase清理虚拟机磁盘参考资料 写在前面 版本信息 Linux版本&#xff1a;C…

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…

基于SSM的二手交易管理系统的设计与实现 (含源码+sql+视频导入教程+文档)

&#x1f449;文末查看项目功能视频演示获取源码sql脚本视频导入教程视频 1 、功能描述 基于SSM的二手交易管理系统1拥有两种角色 管理员&#xff1a;商品管理、订单管理、充值管理、用户管理等用户&#xff1a;发布商品、查看闲置、充值账户、查看所有订单、发布求购信息、修…

Redis Sentinel(哨兵)详解

目录 一&#xff1a;什么是Sentinel&#xff08;哨兵&#xff09; 二&#xff1a;Sentinel有什么用 1.监控 2.故障转移 3通知 4.配置提供 三&#xff1a;Sentinel如何检测master节点宕机 1.主观下线 2.客观下线 四&#xff1a;Sentinel是如何选举出新的master 1.s…

SpringBoot3整合ELK实现日志可视化

SpringBoot整合ELK实现日志可视化 一、环境准备 Elasticsearch、Logstash、Kibana,组合起来可以搭建线上日志系统 ELK中各个服务的作用 Elasticsearch:用于存储收集到的日志信息&#xff1b; Logstash:用于收集日志&#xff0c;SpringBoot应用整合了Logstash以后会把日志发…

golang面试

算法&#xff1a; 1.提取二进制位最右边的 r i & (~i 1) 2.树上两个节点最远距离&#xff0c;先考虑头结点参与不参与。 3.暴力递归改dp。 1.确定暴力递归方式。 2.改记忆化搜索 3.严格表方式&#xff1a; 分析可变参数变化范围&#xff0c;参数数量决定表维度、 …

【文心智能体】通过工作流使用知识库来实现信息查询输出,一键查看旅游相关信息,让出行多一份信心

欢迎来到《小5讲堂》 这是《文心智能体平台》系列文章&#xff0c;每篇文章将以博主理解的角度展开讲解。 温馨提示&#xff1a;博主能力有限&#xff0c;理解水平有限&#xff0c;若有不对之处望指正&#xff01; 目录 创建灵感基本配置头像名称和简介人物设定角色与目标思考路…

Android10源码刷入Pixel2以及整合GMS

一、ASOP源码下载 具体可以参考我之前发布的文章 二、下载相关驱动包 这一步很关键,关系到编译后的镜像能否刷入后运行 下载链接:Nexus 和 Pixel 设备的驱动程序二进制文件 如下图所示,将两个驱动程序上传到Ubuntu服务器,并进行解压,得到两个脚本: 下载解压后会有两…

MySQL数据的增删改查(一)

目录 新增&#xff08;create&#xff09; 插入单条记录 插入多条记录 查询&#xff08;retrieve&#xff09; 查询所有列 查询特定列 查询字段为表达式 别名 去重 排序 按单列排序 按多列排序 使用表达式或别名排序 排序NULL值 条件查询 比较运算符 逻辑运算…