• 乌班图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
    
    • 1

    在这里插入图片描述

    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那一行  永久关闭
    
    • 1
    • 2

    3 安装docker

    sudo apt update
    sudo apt install docker.io -y
    sudo systemctl enable docker
    sudo systemctl start docker
    
    • 1
    • 2
    • 3
    • 4

    在这里插入图片描述
    建议配置下镜像加速器
    在这里插入图片描述
    4. 安装 containerd

    都添加,这是k8s和容器联系的桥梁,不安装会导致k8s根本无法运行!

    说明:
    Docker Engine 没有实现 CRI, 而这是容器运行时在 Kubernetes 中工作所需要的。 为此,必须安装一个额外的服务 cri-dockerd。 cri-dockerd 是一个基于传统的内置 Docker 引擎支持的项目, 它在 1.24 版本从 kubelet 中移除。
    Kubernetes 支持许多容器运行环境,例如 containerd、 CRI-O 以及 Kubernetes CRI (容器运行环境接口) 的其他任何实现。

    1. 安装
    sudo apt-get install -y containerd
    
    • 1
    1. 创建 containerd 的配置文件目录:
    sudo mkdir -p /etc/containerd
    
    • 1
    1. 生成默认的 containerd 配置文件:
    sudo containerd config default | sudo tee /etc/containerd/config.toml
    
    • 1
    1. 设置cgroup为systemd
    sudo vim /etc/containerd/config.toml
    
    #修改或者添加这个选项
      [plugins."io.containerd.grpc.v1.cri".containerd.runtimes.runc.options]
      SystemdCgroup = true
    
    • 1
    • 2
    • 3
    • 4
    • 5

    由于k8s默认的cgroup是system所以容器相关尽量设置为systemd

    1. 重启 containerd
    sudo systemctl restart containerd
    
    • 1

    启用 containerd 服务,以便在系统启动时自动运行:

    sudo systemctl enable containerd
    
    • 1
    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
    • 2
    • 3
    • 4
    • 5
    • 6

    在这里插入图片描述

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

    在这里插入图片描述

    • 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
    • 2

    在这里插入图片描述

    1. 初始化master节点
    kubeadm init --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
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10

    在这里插入图片描述

    在这里插入图片描述

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

    在这里插入图片描述

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

    2.3. 配置从节点

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

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

    2.3.备用命令:

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

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

    1. api服务器无法连接

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

    2.3. 配置基本完成

    查看节点状态。

    kubectl get nodes
    
    • 1

    在这里插入图片描述
    看到三个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
    # 然后保存
    
    
    • 1
    • 2
    • 3
    • 4

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

    1. 应用配置
    kubectl apply -f dashboard.yaml
    
    • 1
    1. 启动代理
    kubectl proxy --address='0.0.0.0' --accept-hosts='.*'
    
    • 1
    1. 获取令牌
    kubectl -n kubernetes-dashboard describe secret $(kubectl -n kubernetes-dashboard get secret | grep admin-user | awk '{print $1}')
    
    • 1
  • 相关阅读:
    百度将在世界大会上发布AI大模型文心4.0;OpenAI考虑自主开发AI芯片
    二阶常微分方程的显隐求解格式
    Aop踩坑!记一次模板类调用注入属性为空的问题
    独立产品灵感周刊 DecoHack #027 - 今天的天气适合穿短裤
    2023软件测试面试题(亲身经历)
    webgl(three.js)3D光伏,3D太阳能能源,3D智慧光伏、光伏发电、清洁能源三维可视化解决方案——第十六课
    SparkStreaming【实例演示】
    在Linux操作系统中,修改文件目录权限常用的命令操作
    Unity 脚本中创建的游戏对象
    中天钢铁在 GPS、 AIS 调度中使用 TDengine
  • 原文地址:https://blog.csdn.net/faker1234546/article/details/133555184