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

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/keyringssudo 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.hqwc.cn/news/130939.html

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

相关文章

【已解决】socket.gaierror: [Errno -3] Temporary failure in name resolution

问题描述 今天在环境迁移的过程中遇到多个问题&#xff0c;包括ModuleNotFoundError: No module named flask&#xff0c;socket.gaierror: [Errno -3] Temporary failure in name resolution以及Downloading: "https://huggingface.co/gyrojeff/YuzuMarker.FontDetection…

聊聊身边的嵌入式:用了七八年的电动牙刷,突然罢工了!!!

家里用了七八年的电动牙刷&#xff0c;前两天突然罢工。先尝试一下野蛮的修复方法(摔摔打打)&#xff0c;这种独家绝技屡试不爽&#xff0c;曾经修好过收音机&#xff0c;电视机&#xff0c;电子手表… 等等。不过这次&#xff0c;没有成功&#xff01;这周末终于有点儿时间&am…

ASUS华硕ZenBook灵耀X逍遥UXF3000E_UX363EA原装出厂预装Win11系统工厂模式安装包

下载链接&#xff1a;https://pan.baidu.com/s/1WLPp0e5AZErtX3bJIhTZMg?pwd2j7i 带有ASUS Recovery恢复功能、自带所有驱动、出厂主题壁纸、Office办公软件、MyASUS华硕电脑管家等预装程序 所需要工具&#xff1a;16G或以上的U盘(非必需) 文件格式&#xff1a;HDI,SWP,OFS,E…

您这边是个人公众号还是企业公众号哈

公众号迁移有什么作用&#xff1f;只能变更主体吗&#xff1f;公众号迁移不只是可以实现公众号变更公司主体&#xff0c;还可以实现个人公众号变成企业公众号、服务号改成订阅号&#xff08;不过订阅号暂时不能改成服务号了&#xff0c;最新的规定&#xff09;&#xff0c;开通…

华为云云耀云服务器L实例评测使用 | 云耀云服务器L实例Docker可视化Portainer容器管理

一、使用背景 之前一直在用阿里云或者腾讯云的服务器&#xff0c;现在接触了一下华为云的服务器实例&#xff0c;点开产品列表发现有弹性云服务器ECS、云耀云服务器HECS等&#xff0c;本文主要使用云耀云服务器&#xff0c;看到官方简介&#xff1a; 华为云耀云服务器&#x…

京东商品数据:8月京东环境电器行业数据分析

8月份&#xff0c;环境电器大盘市场整体下滑。鲸参谋数据显示&#xff0c;8月京东平台环境电器的大盘将近570万&#xff0c;环比下滑约29%&#xff0c;同比下滑约10%&#xff1b;销售额为25亿&#xff0c;环比下滑约23%&#xff0c;同比下滑约8%。 *数据源于鲸参谋-行业趋势分析…

ansible 调研

参考&#xff1a;自动化运维工具——ansible详解&#xff08;一&#xff09; - 珂儿吖 - 博客园 (cnblogs.com) ansible是新出现的自动化运维工具&#xff0c;基于Python开发&#xff0c;集合了众多运维工具&#xff08;puppet、chef、func、fabric&#xff09;的优点&#xf…

自动化模式下,企业全面预算管理的提升

近年来&#xff0c;经济世界不确定事件的频频发生&#xff0c;让企业开始关注自身的关键财务弱点。企业在财务能力敏捷性提升的方面仍存在一定的差距&#xff0c;而在数字化转型过程中进行的投资不够&#xff0c;将难以推动企业冲出重围&#xff0c;提高前瞻性和自身预测能力。…

HTML5使用html2canvas转化为图片,然后再转为base64.

介绍 场景&#xff1a;今天同事提了个协助&#xff0c;将HTML5文件中的元素转为图片&#xff0c;并且最终转为base64格式传给后端。感觉还挺有意思就记录下。&#xff08;试例如下&#xff09; 步骤一&#xff1a;引入html2canvas 的js源码 html2canvas.min.js 下载地址 htt…

【FreeRTOS】【STM32】02 FreeRTOS 移植

基于 [野火]《FreeRTOS%20内核实现与应用开发实战—基于STM32》 正点原子《STM32F429FreeRTOS开发手册_V1.2》 准备 基础工程&#xff0c;例如点灯 FreeRTOS 系统源码 FreeRTOS 移植 上一章节已经说明了Free RTOS的源码文件在移植时所需要的&#xff0c;FreeRTOS 为我们提供…

win11右键菜单显示更多的设置方法

用了一年多win11系统了&#xff0c;Win11最大的变化之一莫过于右键菜单发生了变化。右键菜单很多时候需要点两次&#xff0c;实在是反人类&#xff0c;太麻烦了。 必须使用“显示更多选项”的右键菜单。 今天分享一个使用命令行更改右键菜单显示更多的设置方法&#xff1a; …

【Mybatis】动态 SQL

动态 SQL \<if>标签\<trim>标签\<where>标签\<set>标签\<foreach>标签 动态 sql 是 Mybatis 的强⼤特性之⼀&#xff0c;能够完成不同条件下不同的 sql 拼接。 <if>标签 前端用户输入时有些选项是非必填的, 那么此时传到后端的参数是不确…