0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

如何使用Kubeadm命令在PetaExpress Ubuntu系统上安装Kubernetes集群

jf_57681485 来源:jf_57681485 作者:jf_57681485 2024-07-15 13:31 次阅读

Kubernetes,通常缩写为K8s,是一个开源的容器编排平台,旨在自动化容器化应用的部署、扩展和管理。有了Kubernetes,您可以轻松地部署、更新和扩展应用,而无需担心底层基础设施。

一个Kubernetes集群由控制平面节点(master节点)和工作节点(worker节点)组成。确保集群的高效运行和管理的顺畅进行。我们通常在工作节点上运行应用工作负载,而控制平面节点作为控制平面,用于管理集群中的工作节点和Pod。

前提条件

首先我们需要准备一台云服务器,我是在PetaExpress领了一台免费的云服务器,https://cn.petaexpress.com,文章结尾告诉你申请步骤。

在本指南中,我们使用一台控制平面节点和两台工作节点。以下是每个节点的系统要求:

· 安装了最小化的Ubuntu 22.04

· 最少2GB内存或更多

· 至少2个CPU核心或2个vCPU

· /var上至少有20GB的可用磁盘空间

· 具有管理员权限的Sudo用户

· 每个节点都有可以互通

·

wKgaomaUsqyADbxmAAETUApXpYI091.pngwKgZomaUtB2ARGMAAAGLA5565QQ577.jpg

实验设置

· 控制平面节点:172.20.0.2– k8smaster.example.net

· 第一工作节点:172.20.0.3 – k8sworker1.example.net

· 第二工作节点:172.20.0.4 – k8sworker2.example.net

1)设置每个节点的主机名

登录到PetaExpress控制平面节点并通过hostnamectl命令设置主机名:

$ sudo hostnamectl set-hostname "k8smaster.example.net"

$ exec bash

在工作节点上,运行:

$ sudo hostnamectl set-hostname "k8sworker1.example.net" // 第一工作节点

$ sudo hostnamectl set-hostname "k8sworker2.example.net" // 第二工作节点

$ exec bash

在每个节点的 /etc/hosts 文件中添加以下行:

172.20.0.2 k8smaster.example.net k8smaster

172.20.0.3 k8sworker1.example.net k8sworker1

172.20.0.4 k8sworker2.example.net k8sworker2

2)禁用交换分区并添加内核参数

执行以下swapoff和sed命令以禁用交换分区。确保在所有节点上运行以下命令:

$ sudo swapoff -a

$ sudo sed -i '/ swap / s/^.∗.∗$/#1/g' /etc/fstab

在所有节点上加载以下内核模块:

$ sudo tee /etc/modules-load.d/containerd.conf <

overlay

br_netfilter

EOF

$ sudo modprobe overlay

$ sudo modprobe br_netfilter

为Kubernetes设置以下内核参数,运行以下tee命令:

$ sudo tee /etc/sysctl.d/kubernetes.conf <

net.bridge.bridge-nf-call-ip6tables = 1

net.bridge.bridge-nf-call-iptables = 1

net.ipv4.ip_forward = 1

EOT

重新加载上述更改,运行:

$ sudo sysctl --system

3)安装Containerd run time

在本指南中,我们使用Containerd作为Kubernetes集群的run time。因此,要安装Containerd,首先安装其依赖项:

$ sudo apt install -y curl gnupg2 software-properties-common apt-transport-https ca-certificates

启用Docker仓库:

$ sudo curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmour -o /etc/apt/trusted.gpg.d/docker.gpg

$ sudo add-apt-repository "deb [arch=amd64] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable"

现在,运行以下apt命令以安装Containerd:

$ sudo apt update

$ sudo apt install -y containerd.io

配置Containerd以便其使用systemd作为cgroup:

$ containerd config default | sudo tee /etc/containerd/config.toml >/dev/null 2>&1

$ sudo sed -i 's/SystemdCgroup = false/SystemdCgroup = true/g' /etc/containerd/config.toml

重启并启用Containerd服务:

$ sudo systemctl restart containerd

$ sudo systemctl enable containerd

4)添加Kubernetes的Apt仓库

Kubernetes包在默认的Ubuntu 20.04包仓库中不可用。因此,我们需要添加Kubernetes仓库。运行以下命令以下载公共签名密钥:

$ 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命令以添加Kubernetes apt仓库:

$ 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

5)安装Kubectl、Kubeadm和Kubelet

添加仓库后,在所有节点上安装Kubernetes组件,如kubectl、kubelet和kubeadm工具。执行以下命令:

$ sudo apt update $ sudo apt install -y kubelet kubeadm kubectl $ sudo apt-mark hold kubelet kubeadm kubectl

6)在Ubuntu 22.04上安装Kubernetes集群

现在,我们已经准备好初始化Kubernetes集群。仅在控制平面节点上运行以下kubeadm命令:

$ sudo apt update

$ sudo apt install -y kubelet kubeadm kubectl

$ sudo apt-mark hold kubelet kubeadm kubectl

上述命令的输出:

wKgaomaUsraATggMAACbUoPIiPE657.pngwKgaomaUtB6AJ4QRAACIk33xXCk520.jpg

初始化完成后,您将看到一条包含如何将工作节点加入集群的指令的信息。请记录下kubeadm join命令以供将来参考。

因此,要开始与集群交互,请在控制平面节点上运行以下命令:

$ mkdir -p $HOME/.kube

$ sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config

$ sudo chown $(id -u):$(id -g) $HOME/.kube/config

接下来,尝试运行以下kubectl命令以查看集群和节点状态:

$ kubectl cluster-info

$ kubectl get nodes

输出:

wKgZomaUsr2AKKWrAAA8bJZq1mE937.png


wKgZomaUtB-AB89LAABeJQZMxfg534.jpg

7)将工作节点加入集群

在每个工作节点上,使用您在第6步中初始化控制平面节点后记下的kubeadm join命令。命令应类似于:

kubeadm join k8smaster.example.net:6443 --token af4qe1.4mn5nt3v5vk0oai5

--discovery-token-ca-cert-hash sha256:c62c1826f8188f0fab5b4de07c76c41b46b5ed51cd369bdd998788ed0ade957d

来自两个工作节点的输出:

wKgaomaUstOAbZm_AADGnY7eiBY034.pngwKgZomaUtCOADPjSAAC0MSqz2as903.jpg

上述工作节点的输出确认了这两个节点已加入集群。使用kubectl命令从控制平面节点检查节点状态:

$ kubectl get nodes

命令在工作节点加入后的输出:

wKgaomaUstiAIbxjAAAqD83k9pE112.pngwKgaomaUtCSANcvOAAAi2GAU0X4202.jpg

正如我们所见,节点状态是'NotReady',因此为了使其激活,我们必须安装CNI(容器网络接口)或网络插件,如Calico、Flannel和Weave-net。

8)安装Calico网络插件

需要一个网络插件来启用集群中Pod之间的通信。在控制平面节点上运行以下kubectl命令以安装Calico网络插件:

$ kubectl apply -f https://raw.githubusercontent.com/projectcalico/calico/v3.26.0/manifests/calico.yaml

上述命令的输出如下所示:

wKgZomaUsuKACFKxAADCMO1eZ4I403.pngwKgZomaUtCWAedP4AACpfr_622E230.jpg

验证kube-system命名空间中Pod的状态:

$ kubectl get pods -n kube-system

输出:

wKgaomaUsuqAZr8-AABfmr-veSE086.png

wKgaomaUtCaADWF1AABOTgUpGBw778.jpg

完美,检查节点状态:

$ kubectl get nodes

Calico安装后节点的状态:

wKgaomaUs2uAWSg2AAANZIP1cuE055.pngwKgaomaUtCeAXb3sAAANXMiMZjg297.jpg

现在,我们可以说我们的Kubernetes集群是功能正常的。

凭此文章可以去PetaExpress发工单可以搞一台2核2G的免费云服务器/月

PetaExpress 奖品的申领步骤:注册→登录→发工单 回复“文章网址+文章标题+申请奖励”

审核编辑 黄宇

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • Ubuntu
    +关注

    关注

    5

    文章

    545

    浏览量

    29217
  • 云服务器
    +关注

    关注

    0

    文章

    448

    浏览量

    13129
  • kubernetes
    +关注

    关注

    0

    文章

    222

    浏览量

    8628
收藏 人收藏

    评论

    相关推荐

    阿里云Kubernetes集群联邦

    的控制平面。并配置好本地的kubeconfig。通过运行kubefed init命令来初始化主集群。具体步骤如下:安装kubefedhangzhou
    发表于 03-12 17:10

    kubernetes集群配置

    基于v1104版本手动搭建高可用kubernetes 集群
    发表于 08-19 08:07

    Ubuntu安装Hadoop单机版的方法

    Ubuntu安装Hadoop集群
    发表于 03-24 11:09

    如何在Arm利用Istio搭建一个基于Kubernetes的Service Mesh平台

    我们的自己的kubernetes cluster。搭建Kubernetes环境安装配置kubeadm,kubelet,kubectl具体请参考kub
    发表于 03-30 10:59

    请问鸿蒙系统可以部署kubernetes集群吗?

    鸿蒙系统可以部署kubernetes集群
    发表于 06-08 11:16

    基于Ubuntu的Hadoop集群安装与配置

    基于Ubuntu的Hadoop集群安装与配置
    发表于 09-08 14:20 8次下载
    基于<b class='flag-5'>Ubuntu</b>的Hadoop<b class='flag-5'>集群</b><b class='flag-5'>安装</b>与配置

    如何部署基于Mesos的Kubernetes集群

    kubernetes是一个跨多个计算节点的管理容器化应用的系统,它提供了一系列基本的功能,如应用的自动化部署,维护和扩展等。Mesos是Apache下的开源分布式资源管理框架,它被称为是分布式系统
    发表于 10-09 18:04 0次下载
    如何部署基于Mesos的<b class='flag-5'>Kubernetes</b><b class='flag-5'>集群</b>

    ubuntu系统命令大全

    ubuntu下用命令查询系统版本:终端中执行下列指令:cat /etc/issue该命令可查看当前正在运行的
    发表于 11-22 17:24 1w次阅读
    <b class='flag-5'>ubuntu</b><b class='flag-5'>系统</b><b class='flag-5'>命令</b>大全

    Kubernetes集群发生网络异常时如何排查

    本文将引入一个思路:“ Kubernetes 集群发生网络异常时如何排查”。文章将引入 Kubernetes 集群中网络排查的思路,包含网
    的头像 发表于 09-02 09:45 4491次阅读

    Kubernetes集群的关闭与重启

    日常对 Kubernetes 集群运行维护的过程中,您可能需要临时的关闭或者是重启 Kubernetes 集群
    的头像 发表于 11-07 09:50 9375次阅读

    Kubernetes集群部署

    Kubeadm是一种Kubernetes集群部署工具,通过kubeadm init命令创建master节点,通过
    的头像 发表于 02-15 10:35 1389次阅读

    Ubuntu编译安装pcl教程

    编译安装PCL(Point Cloud Library)是Ubuntu使用自定义选项进行安装的一种方式。
    的头像 发表于 10-26 09:36 743次阅读

     K8S学习教程一:使用PetaExpress云服务器安装Minikube 集群

    使得开发人员能够本地机器轻松创建一个单节点的 Kubernetes 集群,从而方便开发、测试和学习 Kubernetes。 我们看下如
    的头像 发表于 07-01 15:41 173次阅读
     K8S学习教程一:使用<b class='flag-5'>PetaExpress</b>云服务器<b class='flag-5'>安装</b>Minikube <b class='flag-5'>集群</b>

    K8S学习教程(二): PetaExpress KubeSphere容器平台部署高可用 Redis 集群

    并且需要手动重启节点,相较之下,使用 PetaExpress 提供的 Kubernetes(k8s) 服务 进行 Redis 集群的部署,则展现出了显著的优势: 1、安装便捷:使用镜像
    的头像 发表于 07-03 15:30 228次阅读
    K8S学习教程(二):<b class='flag-5'>在</b> <b class='flag-5'>PetaExpress</b> KubeSphere容器平台部署高可用 Redis <b class='flag-5'>集群</b>

    使用Velero备份Kubernetes集群

    Velero 是 heptio 团队(被 VMWare 收购)开源的 Kubernetes 集群备份、迁移工具。
    的头像 发表于 08-05 15:43 139次阅读
    使用Velero备份<b class='flag-5'>Kubernetes</b><b class='flag-5'>集群</b>