K8S第二讲 Kubernetes集群简易版搭建步骤

news2024/10/7 15:31:09

Kubernetes集群搭建步骤

1:准备物理或虚拟机器

为Kubernetes集群准备物理或虚拟机器。至少需要一个控制节点(Master Node)和一个工作节点(Worker Node),建议使用Linux操作系统。

2: 安装Docker

Kubernetes需要依赖Docker容器,因此需要在每台机器上安装Docker。可以使用以下命令在centos7.x上安装Docker:

# 安装 Docker
$ sudo yum install -y docker

# 启动 Docker 服务
$ sudo systemctl enable docker && sudo systemctl start docker

添加Kubernetes存储库
您需要添加Kubernetes存储库以获取特定版本的Kubernetes软件包。您可以使用以下命令添加存储库:
sudo tee /etc/yum.repos.d/kubernetes.repo <<EOF
[kubernetes]
name=Kubernetes
baseurl=https://packages.cloud.google.com/yum/repos/kubernetes-el7-\$basearch
enabled=1
gpgcheck=1
repo_gpgcheck=1
gpgkey=https://packages.cloud.google.com/yum/doc/yum-key.gpg https://packages.cloud.google.com/yum/doc/rpm-package-key.gpg
EOF

国内镜像替换:
cat > /etc/yum.repos.d/kubernetes.repo << EOF
[kubernetes]
name=Kubernetes
baseurl=https://mirrors.aliyun.com/kubernetes/yum/repos/kubernetes-el7-x86_64
enabled=1
gpgcheck=0
repo_gpgcheck=0
gpgkey=https://mirrors.aliyun.com/kubernetes/yum/doc/yum-key.gpg
https://mirrors.aliyun.com/kubernetes/yum/doc/rpm-package-key.gpg
EOF

# 安装 kubeadm、kubelet、kubectl 指定版本,否则是最新版本,不支持docker容器
使用以下命令安装Kubernetes:
sudo yum install -y kubelet-1.20.0 kubeadm-1.20.0 kubectl-1.20.0 --disableexcludes=kubernetes
请注意,此处的版本号应替换为您想要安装的特定版本。还要注意,在使用kubelet和kubeadm时,版本必须匹配。

开机启动kubelet
systemctl enable kubelet
systemctl start kubelet
systemctl daemon-reload
systemctl restart kubelet


初始化Kubernetes主节点,使用以下命令初始化Kubernetes主节点:
sudo kubeadm init --kubernetes-version=1.20.0
替换使用:
kubeadm init --apiserver-advertise-address=192.168.36.138 --image-repository registry.aliyuncs.com/google_containers --kubernetes-version v1.18.0 --service-cidr=10.96.0.0/12 --pod-network-cidr=10.244.0.0/16

请注意,此处的版本号应替换为您想要安装的特定版本。


加入节点
按照初始化完成后的输出,使用相应的命令将节点加入集群。

安装网络插件
使用以下命令安装网络插件:
kubectl apply -f https://docs.projectcalico.org/v3.14/manifests/calico.yaml

插件配置可以参考官网: https://kubernetes.io/docs/concepts/cluster-administration/addons/
kubectl apply -f https://raw.githubusercontent.com/projectcalico/calico/v3.25.1/manifests/calicoctl.yaml

验证集群
使用以下命令验证Kubernetes集群是否正常运行
kubectl get nodes

如果所有节点都处于Ready状态,则表示Kubernetes集群已经安装成功。

这些是安装特定版本的Kubernetes集群的基本步骤。请注意,在使用Kubernetes时,您需要了解它的基本概念和操作。

集群初始化
在这里插入图片描述
在k8s-master机器上执行如下命令:
#配置使用 kubectl 命令工具(类似docker这个命令),执行上图里的命令

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

其他节点加入集群,执行:
kubeadm join 192.168.36.130:6443 --token p7h3it.1yrrjwffgnu1hme5 \
    --discovery-token-ca-cert-hash sha256:80cf5b31503d76bab01a9fd20f14d2f31ea6325695c7313613e078a999991e1b


#查看kubectl是否能正常使用
kubectl get nodes
kubectl get pods -n kube-system -owide 

在这里插入图片描述

卸载k8s集群

通过yum安装的Kubernetes集群,您可以按照以下步骤操作:

删除安装包
sudo systemctl stop kubelet
sudo yum remove kubeadm-1.20.0 kubelet-1.20.0 kubectl-1.20.0

删除Kubernetes相关的配置文件和目录:
sudo rm -rf /etc/kubernetes/
sudo rm -rf /var/lib/kubernetes/

删除kubelet,kubectl和kubeadm命令行工具:
sudo rm -rf /usr/bin/kube*

如果您使用了Docker作为容器运行时,请确保删除Docker中相关的Kubernetes容器:
sudo docker ps -a | grep k8s | awk '{print $1}' | xargs sudo docker rm -f
这将列出所有包含"k8s"的Docker容器并强制删除它们。

如果你使用Kubeadm安装的Kubernetes集群,则可以按照以下步骤卸载:

删除Kubernetes节点
在每个节点上执行以下命令:
kubeadm reset
这个命令将清理节点上安装的所有Kubernetes组件和配置文件。

删除Kubernetes Master
在Kubernetes Master节点上执行以下命令:
kubeadm reset

这个命令将清理Master节点上安装的所有Kubernetes组件和配置文件。

删除etcd数据
如果你使用了etcd作为Kubernetes集群的数据存储,可以在etcd节点上执行以下命令删除数据:
etcdctl del "" --prefix

删除Kubernetes二进制文件和配置文件
删除在安装Kubernetes时创建的所有文件和目录,例如:
rm -rf /etc/kubernetes/
rm -rf /var/lib/etcd/
rm -rf /var/lib/kubelet/
rm -rf /var/lib/kube-proxy/
rm -rf /var/lib/kubernetes/
rm -rf /usr/local/bin/kubectl
rm -rf /usr/local/bin/kubelet
rm -rf /usr/local/bin/kubeadm

这些步骤应该足以卸载你的Kubernetes集群。

安装遇到的问题

centos安装k8s提示 error execution phase preflight: [preflight] Some fatal errors occurred:
[ERROR CRI]: container runtime is not running: output: time=“2023-05-02T13:55:19+08:00” level=fatal msg=“getting status of runtime: rpc error: code = Unimplemented desc = unknown service runtime.v1alpha2.RuntimeService”

这个错误提示表明 Kubernetes 安装器在执行预检查时无法检测到运行时(container runtime),通常是因为 Docker 服务未启动导致的。您可以按照以下步骤检查和解决这个问题:

确认 Docker 服务已经启动:
$ sudo systemctl status docker
如果 Docker 服务未启动,可以通过以下命令启动 Docker:
$ sudo systemctl start docker

确认 Docker 服务已经设置为开机自启:
$ sudo systemctl is-enabled docker
如果输出为 disabled,可以通过以下命令设置 Docker 开机自启:
$ sudo systemctl enable docker

重新运行 Kubernetes 安装器:
确认 Docker 服务已经启动之后,重新运行 Kubernetes 安装器。如果仍然遇到问题,可以考虑检查 Docker 的日志以获取更多信息:
$ sudo journalctl -u docker

检查日志以查看是否存在其他错误或警告信息。

注意:在安装 Kubernetes 之前,请确保您的系统已经正确安装了 Docker,并且 Docker 服务已经启动并设置为开机自启。

请注意 k8s的版本与docker版本,新版本的k8s已经不在使用docker作为容器,

从 Kubernetes 1.22 版本开始,Docker 不再是 Kubernetes 推荐的容器运行时,推荐的容器运行时是containerd。但是,Kubernetes 版本 1.19 到 1.21 仍然支持 Docker。

因此,如果你想使用 Docker 作为 Kubernetes 的容器运行时,你可以安装 Kubernetes 版本 1.19、1.20 或 1.21。

但是,如果要使用推荐的容器运行时 containerd,则可以安装 Kubernetes 版本 1.22 或更高版本。

请注意,随着新版本 Kubernetes 和 Docker 的发布,这些建议将来可能会发生变化,因此检查要使用的特定版本的兼容性矩阵始终是一个好主意。

要在 Kubernetes 中使用 containerd,需要进行以下步骤:

1:安装 containerd。可以从 containerd 的官方网站下载二进制文件并进行安装。在安装过程中,需要配置 containerd 的网络参数和存储参数。例如,可以配置 containerd 使用 Unix 套接字进行通信,并将容器镜像存储在本地文件系统上。

2:在 Kubernetes 中配置 CRI(Container Runtime Interface)插件,以使用 containerd 作为容器运行时。可以在 Kubernetes 的配置文件中指定 CRI 插件的配置参数,包括容器运行时的路径、Socket 文件的路径等。

3:启动 kubelet 进程,并在 kubelet 的启动参数中指定 CRI 插件的配置。例如,可以使用以下命令启动 kubelet:

kubelet --container-runtime=remote \
        --container-runtime-endpoint=unix:///run/containerd/containerd.sock \
        --image-pull-progress-deadline=2m \
        ...
在此命令中,--container-runtime 参数指定容器运行时类型为远程,--container-runtime-endpoint 参数指定容器运行时的 Socket 文件路径。

4: 在 Kubernetes 中创建 Pod,使用 containerd 运行容器。在 Pod 的 YAML 文件中,可以指定容器镜像、容器启动参数等信息。例如:

apiVersion: v1
kind: Pod
metadata:
  name: my-pod
spec:
  containers:
  - name: my-container
    image: my-image
    command: ["sleep", "3600"]

在此 YAML 文件中,指定了一个名为 my-container 的容器,使用 my-image 镜像运行,并在容器内运行 sleep 命令。

这些步骤可以帮助您将 containerd 集成到 Kubernetes 中,并使用 containerd 运行容器。

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

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

相关文章

1987-2021年全国各省进出口总额数据含进口总额和出口总额

1987-2021年全国各省进出口总额数据含进口和出口 1、时间&#xff1a;1987-2021年 2、范围&#xff1a;包括全国30个省不含西藏 3、指标&#xff1a;进出口总额、进口总额、出口总额 4、单位&#xff1a;万美元 5、来源&#xff1a;各省NJ、JIN rong统计NJ 6、缺失情况说…

递归算法及经典例题详解

大部分人在学习编程时接触的第一个算法应该就是递归了&#xff0c;递归的思想其实很好理解&#xff0c;就是将一个问题拆分为若干个与本身相似的子问题&#xff0c;通过不断调用自身来求解。 但很多新手在实际操作中却很难正确使用到递归&#xff0c;有时面对问题还会有种无从…

win7下java环境搭建以及jdk环境变量配置

很多人在搭建页游、手游时候经常遇到JAVA闪退,基本都是环境变量或者路径错误导致的。本章节主要讲解在win7系统环境下,java环境变量配置方法,java环境配置正确,才可以对apk程序进行反编译运行页游手游。其他操作系统环境变量大同小异参考下就会了。 安装教程: 1、直接运…

让语言学习更简单的 WordFlow

作为一个英语并不是那么特别好的计算机专业学生&#xff0c;长期积累英语的学习对个人发展还是有意义的。简单来说&#xff0c;我在语言上最大的两个问题&#xff0c;一个自己「不理解」&#xff0c;另一个是自己「不会表达」。 上述两个问题主要体现在口语层面&#xff0c;而…

1997-2021年全国30省技术市场成交额(亿元)

1997-2021年全国30省技术市场成交额 1、时间&#xff1a;1997-2021年 2、范围&#xff1a;30省不含西藏 3、来源&#xff1a;国家统计J 4、指标&#xff1a;技术市场成交额 5、缺失情况说明&#xff1a;无缺失 6、指标解释及用途&#xff1a; 技术市场成交额是一个客观、…

YOLOv5 训练自己的数据集

&#x1f368; 本文为&#x1f517;365天深度学习训练营 中的学习记录博客 &#x1f356; 原作者&#xff1a;K同学啊|接辅导、项目定制 ● 难度&#xff1a;夯实基础⭐⭐ ● 语言&#xff1a;Python3、Pytorch3 ● 时间&#xff1a;5月1日-5月6日 &#x1f37a;要求&#xff1…

基于C#开发 B/S架构的实验室管理系统 云LIS系统(MVC + SQLserver + Redis)

一、云LIS系统是将各种样本、免疫、临检、放免、及实验用的分析仪器&#xff0c;通过网络管理和传输实验分析过程中全部数据。对每一专业&#xff0c;实现检验申请、样本采集、样本核收、联机检验、质量控制、报告审核到报告发布的全环节的信息化管理平台。 二、基于B/S架构的云…

【SpringMVC】| SpringMVC注解式开发

目录 一&#xff1a;SpringMVC注解式开发 1. RequestMapping定义请求规则 2. 五种数据提交的方式 3. 请求参数中文乱码解决 4. action方法的返回值 5. SpringMVC的四种跳转方式 6. SpringMVC支持的默认参数类型 7. 日期处理 8. 标签的使用 9. 资源在WEB-INF目录下 一…

常见三种编码方式

常见三种编码方式 1. one-hot 编码2. 虚拟编码3. 效果编码 最近复习一些书&#xff0c;记录一下。在特征工程中&#xff0c;数据集经常会出现分类变量&#xff0c;这时候的分类变量可能是字符型&#xff0c;通常不能直接用于训练模型&#xff0c;这时需要对分类变量进行编码&am…

JavaWeb《CSS》

本笔记学习于Acwing平台 目录 1. 样式定义方式 2.1 行内样式表&#xff08;inline style sheet&#xff09; 2.2 内部样式表&#xff08;internal style sheet&#xff09; 2.3 外部样式表&#xff08;external style sheet&#xff09; 2. 选择器 2.1 标签选择器 2.2 …

ChatGPT服务器配置部署-chatGPT国内入口搭建

chatGPT国内入口 ChatGPT是由OpenAI公司开发的一种自然语言生成模型&#xff0c;国内入口一般是通过API接口或者SDK对接实现的。具体的对接方式可以参考以下步骤&#xff1a; 了解ChatGPT的API接口或者SDK: 首先需要了解ChatGPT提供的API接口或者SDK&#xff0c;包括使用方式、…

文件上传漏洞靶场

目录 第一关 源码 前端 后端 代码审计 前端 后端 绕过原理 抓包后未修改 抓包后修改且文件上传成功 第二关 源码 后端 代码审计 绕过原理 抓包后未修改 抓包后修改且文件上传成功 ​编辑 第三关 源码 后端 代码审计 绕过原理 第四关 源码 后端 代码审…

linux以太网(二)

内核版本&#xff1a;linux-3.14.16 基于imx6 一、文件fec_main.c分析 路径&#xff1a;drivers\net\ethernet\freescale\fec_main.c 1、platform总线 标准的平台总线使用方式 设备树匹配 设备树节点 2、平台总线probe 1&#xff09;分配net_device相关结构 分配 与平…

单源最短路问题

全部代码 全部代码在github acwing 上 正在更新 https://github.com/stolendance/acwing 图论 欢迎大家star与fork 单源最短路问题 先用spfa算法 不行再换其他的 spfa-超级万能 说不定比dijsktra还快 dis[] 代表第k到某一点的最短距离 queue 代表刚被更新的点 它有可能更…

【Java校招面试】基础知识(三)——多线程与并发

目录 前言一、基础概念二、互斥锁三、Java内存模型&#xff08;JMM&#xff09;四、线程池后记 前言 本篇主要介绍Java多线程与并发相关内容。 “基础知识”是本专栏的第一个部分&#xff0c;本篇博文是第三篇博文&#xff0c;如有需要&#xff0c;可&#xff1a; 点击这里&a…

每日一题——反转字符串—II

每日一题 反转字符串——II 题目链接 思路 我们先来举几个例子来理解题目意思 字符串“ abcdefgh ”&#xff0c;k 2&#xff0c;那么依据题目意思&#xff0c;反转后的字符串应该是“ bacdfegh ”&#xff08;即每2k个字符&#xff0c;就反转前k个字符&#xff0c;且无剩余…

基于 Python+Flask+SQLite 的网易云音乐评论情感分析系统

基于 PythonFlaskMySQL 的网易云音乐评论情感分析系统&#xff0c;采用Echart构建图表&#xff0c;支持一键切换颜色主题&#xff0c;通过连接数据库获取评论数据。对失效的爬虫代码进行了更新&#xff0c;可通过歌曲id_半_自动获取评论&#xff0c;具体可以看下方的过程展示。…

展望Flink各版本及新特性

展望Flink各版本及新特性 一 Flink 1.9 版本1.1 细粒度批作业恢复1.2 State Processor API1.3 Stop-with-Savepoint1.4 新 Blink SQL 查询处理器预览1.5 Table API / SQL 的其他改进 二 Flink 1.10 [重要版本 : Blink 整合完成]2.1 内存管理及配置优化2.2 统一的作业提交逻辑2.…

图像去噪简单介绍—并给出示例代码

文章目录 图像去噪简单介绍—并给出示例代码去噪的基本原理常见的噪声类型高斯噪声椒盐噪声马赛克噪声脉冲噪声 添加噪声的代码添加高斯噪声添加椒盐噪声 noise_pic常用的去噪方法均值滤波中值滤波高斯滤波双边滤波基于深度学习的图像去噪 总结图片来源 图像去噪简单介绍—并给…

Win11如何下载安装java?

一、问题描述 我在复现论文代码的时候&#xff0c;遇到了这样的问题&#xff1a; 我没有下载java&#xff0c;那么该如何解决呢&#xff1f; 下载 Java 的作用是为了能够在计算机上运行使用 Java 语言编写的应用程序。Java 是一种广泛使用的编程语言&#xff0c;可用于开发各…