乌班图22.04 kubeadm简单搭建k8s集群

news2024/11/19 3:34:35

1. 我遇到的问题

任何部署类问题实际上对于萌新来说都不算简单,因为没有经验,这里我简单将部署的步骤和想法给大家讲述一下

在这里插入图片描述

2. 简单安装步骤

准备

  1. 3台标准安装的乌班图server22.04(采用vm虚拟机安装,ip为192.168.50.3(server0),192.168.50.3(server1),192.168.50.5(server2)
  2. 耐心,其中可能会遇见莫名奇妙的bug。

2.1. 部署基本环境(3台都要执行)

  1. 添加host(方便访问)
sudo vim /etc/hosts

在这里插入图片描述

192.168.50.3 k8s-master-01
192.168.50.4 k8s-node-01
192.168.50.5 k8s-node-02
2. 关闭swap分区(乌班图server的最小化安装是没有swap分区的)

swapoff -a    # 临时关闭
vim /etc/fstab # 注释到swap那一行  永久关闭

3 安装docker

sudo apt update
sudo apt install docker.io -y
sudo systemctl enable docker
sudo systemctl start docker

在这里插入图片描述
建议配置下镜像加速器
在这里插入图片描述

  1. 配置Kubernetes APT仓库

说明:
在低于 Debian 12 和 Ubuntu 22.04 的发行版本中,/etc/apt/keyrings 默认不存在。 如有需要,你可以创建此目录,并将其设置为对所有人可读,但仅对管理员可写。

sudo mkdir -p /etc/apt/keyrings
sudo chmod 755 /etc/apt/keyrings

sudo apt-get install -y apt-transport-https ca-certificates curl
curl -fsSL https://pkgs.k8s.io/core:/stable:/v1.28/deb/Release.key | sudo gpg --dearmor -o /etc/apt/keyrings/kubernetes-apt-keyring.gpg
echo 'deb [signed-by=/etc/apt/keyrings/kubernetes-apt-keyring.gpg] https://pkgs.k8s.io/core:/stable:/v1.28/deb/ /' | sudo tee /etc/apt/sources.list.d/kubernetes.list

在这里插入图片描述

  1. 安装kubelet kubeadm kubectl,并锁定版本
sudo apt-get update
sudo apt-get install -y kubelet kubeadm kubectl
sudo apt-mark hold kubelet kubeadm kubectl

在这里插入图片描述

  • kubelet 是运行在每个 Kubernetes 节点上的主要组件之一。它的主要作用是与 Kubernetes
    控制平面通信,确保在节点上启动和管理容器化的应用程序容器。具体功能包括:
    监控分配给节点的 Pod,并根据控制平面的指令启动、停止、重启容器。 执行容器健康检查。 收集节点级别的性能统计信息并将其报告给监控系统。
    处理容器日志。 kubeadm:

  • kubeadm 是 Kubernetes 的官方工具,用于快速部署和初始化 Kubernetes 集群。它的主要作用包括:管理集群的初始化和升级过程,使得部署 Kubernetes 集群变得更加简单和一致。 创建和配置必要的集群组件,如 etcd、API
    Server、Controller Manager 和 Scheduler。
    提供基本的集群管理命令和配置文件生成,以便用户可以轻松地设置和管理 Kubernetes 集群。 kubectl:

  • kubectl 是 Kubernetes 的命令行工具,用于与 Kubernetes 集群进行交互。它的主要作用包括:
    发布和管理容器化的应用程序,例如创建、删除和更新 Pods、Deployments、Services 等。
    查看集群状态、检查日志、执行命令等与集群交互的操作。 与集群进行故障排除和调试。 与 Kubernetes API 服务器通信以执行操作。

2.2. 配置主节点

  1. 拉取镜像配置
# 可以做也可以不做,不做的话下一步会自动做,久一点而已
kubeadm config images pull

在这里插入图片描述

  1. 初始化master节点
sudo kubeadm init --apiserver-advertise-address=192.168.50.1 --pod-network-cidr=10.244.0.0/16
# 配置和设置 Kubernetes 命令行工具 kubectl

#非root用户环境变量
sudo mkdir -p $HOME/.kube
sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config
sudo chown $(id -u):$(id -g) $HOME/.kube/config
#或者root用户环境变量
export KUBECONFIG=/etc/kubernetes/admin.conf

在这里插入图片描述

在这里插入图片描述

  1. 安装网络插件(这一步可以在从节点加入集群完做)
kubectl apply -f https://raw.githubusercontent.com/coreos/flannel/master/Documentation/kube-flannel.yml
# 查看所有namespace pods
kubectl get pod --all-namespaces -o wide

在这里插入图片描述

看到三台运行成功运行就算成功了

2.3. 配置从节点

kubeadm join 192.168.50.3:6443 --token 3niox6.90gzbbl1xcx2yrlx \
	--discovery-token-ca-cert-hash sha256:0b455aa664317c50822b8581dd4fdbe281028fe45350db67b4b8c311f926ef9d 

格式含义为sudo kubeadm join <主节点的IP>:6443 --token <你的令牌> --discovery-token-ca-cert-hash sha256:<你的证书哈希值>
在这里插入图片描述

2.3.备用命令:

  1. 重新初始化集群
    重置
sudo kubeadm reset

如果不知道哪里g的话,就重置一下节点吧,我相信大多数新人用的到(dog)

  1. api服务器无法连接

如果连接不上可以稍微等会,k8s遇见错误会使用独有的重启大法(循环重启)
在这里插入图片描述

2.3. 配置基本完成

查看节点状态。

kubectl get nodes

在这里插入图片描述
看到三个ready说明配置基本完成

3. 配置ui(可选)

  1. 编辑配置文件

把配置文件的类型改为NodePort,对外允许流量访问,端口为34003

wget raw.githubusercontent.com/kubernetes/dashboard/v2.3.1/aio/deploy/recommended.yaml -O dashboard.yaml
vim dashboard.yaml
# 然后保存

在这里插入图片描述
76af17d8ae4ab46704.png)

  1. 应用配置
kubectl apply -f dashboard.yaml
  1. 启动代理
kubectl proxy --address='0.0.0.0' --accept-hosts='.*'
  1. 获取令牌
kubectl -n kubernetes-dashboard describe secret $(kubectl -n kubernetes-dashboard get secret | grep admin-user | awk '{print $1}')

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

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

相关文章

DP1363F与CLRC663的兼容性对比区别

DP1363F收发器DP1363F支持下列操作模式 • 替代兼容CLRC663/RC663 • 读写模式支持 ISO/IEC 14443A/MIFARE • 读写模式支持 SO/IEC 14443IB • JIS X 6319-4 读写模式支持&#xff08;等效于FeliCa1方案&#xff09; • 相应于 ISO/IEC 18092 的被动发起方模式 • 读写模式支持…

告别繁琐,轻松管理SQLite数据库!极简SQLite数据库管理器上线了

如果你是一名Mac用户&#xff0c;并且经常处理SQLite数据库&#xff0c;那么你一定会遇到繁琐的数据库操作&#xff0c;比如安装各种复杂的软件、编写复杂的SQL语句等等。这些操作不仅费时费力&#xff0c;而且还容易出错。那么是否有一种轻松快捷的方法可以管理SQLite数据库呢…

Springboot 音乐网站管理系统idea开发mysql数据库web结构java编程计算机网页源码maven项目

一、源码特点 springboot 音乐网站管理系统是一套完善的信息系统&#xff0c;结合springboot框架和bootstrap完成本系统&#xff0c;对理解JSP java编程开发语言有帮助系统采用springboot框架&#xff08;MVC模式开发&#xff09;&#xff0c;系统 具有完整的源代码和数据库&…

口袋参谋:如何提升宝贝流量?这三种方法超实用!

​你的店铺能不能出爆款&#xff1f;提升单品流量是关键。 对于新手卖家来说&#xff0c;是缺乏运营技巧和运营经验的&#xff0c;运营技巧主要体现在标题写作、各种图片和视频制作等。 由于新手买家没有经验&#xff0c;习惯于直接使用数据包上传&#xff0c;导致宝贝没有展…

使用scipy库将离散点连续化

离散点连续化用于求满足所有离散点的对应法则F(x)且非离散集合中的值。 如有x[0,1,2,3], y[1,3,2,1],求当x1.5时对应的y是多少&#xff1f; 拟合 可以直接求出对应的函数式&#xff0c;但要求知晓经验函数 from numpy import * from scipy.signal import *# 如线性拟合经验函…

【Linux】 rm命令使用

作为一个程序员 我们经常用到rm -rf * 或者rm -rf XXX 。但是rm -rf 是什么意思不是很清楚&#xff0c;咱们一起来学习一下吧。 rm&#xff08;英文全拼&#xff1a;remove&#xff09;命令用于删除一个文件或者目录。 rm 命令 -Linux手册页 著者 由保罗鲁宾、大卫麦肯齐、理…

jira+confluence安装

准备如下所有包&#xff1a; atlassian-agent.jar jdk-8u241-linux-x64.tar.gz atlassian-confluence-8.0.0-x64.bin atlassian-jira-software-9.4.0-x64.bin mysql-8.0.31-1.el8.x86_64.rpm-bundle.tar mysql-connector-java-8.0.28.jar confluence-8.2.1破解 1.安装j…

对于java线程池ThreadPoolExecutor监控以及参数动态调整的思考

https://mp.weixin.qq.com/s/baYuX8aCwQ9PP6k7TDl2Ww Java线程池实现原理及其在美团业务中的实践 - 美团技术团队 上面两个链接都是一篇文章发布在不同地方&#xff0c;看其中一篇即可。 看到了美团技术团队的这篇文章以及加上自己对线程池的了解和看过的源码&#xff0c;有如…

app对接广告变现平台:影响app广告单价的4大因素

在移动应用开发者和媒体公司竞相寻求提高广告变现效率的今天&#xff0c;理解影响APP广告单价的关键因素至关重要。广告单价是广告收入的核心组成部分&#xff0c;它受多种因素的影响&#xff0c;直接关系到媒体的盈利能力。主要因素大概有以下几点&#xff1a;#APP广告变现# …

vue3+vite+uniapp 封装一个省市区组件

一、预览图 二、使用前的一些注意事项 只支持在 uniapp vue3 项目中使用支持微信小程序和h5 (app端没有测试过)ui库用的 uview-plus省市区数据用的是 vant-ui 提供的一个赖库 vant/area-data 三、组件代码 <template><u-popup :show"show" type"botto…

深圳市重点实验室如何办理-华夏泰科

深圳市重点实验室是为了提升科技创新的能力和水平&#xff0c;推动科技成果的转化和应用而设立的一项重要机构。同时深圳市重点实验室是开展高水平基础研究和应用基础研究、聚焦和培养优秀科技人才、开展学术交流的重要基地。认定该资质对于提升品牌影响力和科技创新能力有着重…

Elasticsearch实战(十八)--ES搜索Doc Values/Fielddata 正排索引 深入解析

1.正排索引与倒排索引 先说结论&#xff0c;再讲原理 !!!尽量不要再生产环境使用fielddatatrue&#xff0c;即使要用也要控制好占用内存比例的大小&#xff0c;否则容易出现OOM !!!尽量不要再生产环境使用fielddatatrue&#xff0c;即使要用也要控制好占用内存比例的大小&#…

剑指offer——JZ32 从上往下打印二叉树 解题思路与具体代码【C++】

一、题目描述与要求 从上往下打印二叉树_牛客题霸_牛客网 (nowcoder.com) 题目描述 不分行从上往下打印出二叉树的每个节点&#xff0c;同层节点从左至右打印。例如输入{8,6,10,#,#,2,1}&#xff0c;如以下图中的示例二叉树&#xff0c;则依次打印8,6,10,2,1(空节点不打印&a…

docker运维之自定义网络配置

自定义网络配置讲解与实操 docker中的容器有独立的隔离空间&#xff0c;那么&#xff0c;它们能不能通过网络相互访问呢&#xff1f; 答案是可以的&#xff01;作者在之前Redis篇中使用docker配置了主从、cluster集群&#xff0c;当时的做法是利用每个容器的ip地址和端口创建相…

一对一直播实时美颜SDK算法背后的技术原理与实现

美颜技术已经成为了现代社交媒体和视频通信的不可或缺的一部分。用户希望看起来最好&#xff0c;而实时美颜技术通过在实时视频中平滑皮肤、修复瑕疵以及增强特征来满足这一需求。这种技术的核心是实时美颜SDK&#xff0c;它蕴含着精密的算法和工程实现&#xff0c;本文将深入探…

成功解决@Async注解不生效的问题,异步任务处理问题

首先&#xff0c;有这样一个异步监听方法 然后配置好了异步线程池 package com.fdw.study.config;import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.ComponentScan; import org.springframework.context.annotation.Conf…

维修派单系统好用吗?如何实现数字化后勤管理?

在当今社会&#xff0c;各种设备和设施的正常运转对于单位和组织来说至关重要。然而&#xff0c;由于各种因素的影响&#xff0c;设备和设施在日常运行过程中难免会出现故障。这时&#xff0c;高效的维修服务就显得尤为重要。而“的修”维修派单系统&#xff0c;就是一种专为维…

Java卷上天,可以转行干什么?

小刚是某名企里的一位有5年经验的高级Java开发工程师&#xff0c;每天沉重的的工作让他疲惫不堪&#xff0c;让他萌生出想换工作的心理&#xff0c;但是转行其他工作他又不清楚该找什么样的工作 因为JAVA 这几年的更新实在是太太太……快了&#xff0c;JAVA 8 都还没用多久&am…

怎么压缩pdf文件?分享缩小pdf文件的简单方法

在我们的日常生活和工作中&#xff0c;往往需要处理大量的PDF文件&#xff0c;而很多时候这些文件的大小会成为传输和存储的难题。为了解决这个问题&#xff0c;下面我们将介绍三种方法来压缩PDF文件&#xff0c;一起来看看吧~ 一、嗨格式压缩大师 首先&#xff0c;最简单也是…

Spring: @ComponentScan注解,不设置basePackages时,为什么会扫描该注解所在的包?

ComponentScanAnnotationParser类的parse方法&#xff1a; 可以看到如果没配置basePackages&#xff0c;会调用ClassUtils的静态方法getPackageName将声明ComponentScan的类所在的包添加到basePackages中去