ubuntu使用kubeadm搭建k8s集群

简介: 通过以上步骤,您可以在 Ubuntu 系统上使用 kubeadm 成功搭建一个 Kubernetes 集群。本文详细介绍了从环境准备、安装 Kubernetes 组件、初始化集群到管理和使用集群的完整过程,希望对您有所帮助。在实际应用中,您可以根据具体需求调整配置,进一步优化集群性能和安全性。

Ubuntu 使用 kubeadm 搭建 Kubernetes 集群

Kubernetes 是一个开源的容器编排平台,kubeadm 是 Kubernetes 官方提供的一个工具,用于快速搭建 Kubernetes 集群。本文将详细介绍如何在 Ubuntu 系统上使用 kubeadm 搭建一个 Kubernetes 集群,包括准备工作、安装 Kubernetes 组件、初始化集群、加入节点等步骤。

一、环境准备

1. 系统要求

  • Ubuntu 20.04 或 18.04
  • 至少 2 GB 的 RAM
  • 至少 2 个 CPU 核心
  • 每台机器一个唯一的主机名、MAC 地址和产品 UUID
  • 关闭交换分区(Swap)

2. 更新系统和关闭交换分区

sudo apt-get update
sudo apt-get upgrade -y
sudo swapoff -a
sudo sed -i '/ swap / s/^(.*)$/#\1/g' /etc/fstab
​

3. 设置主机名和 IP 地址

确保每台机器的主机名唯一并设置静态 IP 地址。

sudo hostnamectl set-hostname <hostname>
​

4. 修改 hosts 文件

在每台机器的 /etc/hosts 文件中添加所有节点的 IP 和主机名映射。

sudo nano /etc/hosts
​

添加如下内容:

<master-ip> master
<worker1-ip> worker1
<worker2-ip> worker2
​

5. 安装必要的工具

sudo apt-get install -y apt-transport-https ca-certificates curl
​

二、安装 Docker

Kubernetes 使用 Docker 作为容器运行时,安装 Docker 具体步骤如下:

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

三、安装 kubeadm、kubelet 和 kubectl

1. 添加 Kubernetes 仓库

curl -s https://packages.cloud.google.com/apt/doc/apt-key.gpg | sudo apt-key add -
sudo apt-add-repository "deb http://apt.kubernetes.io/ kubernetes-xenial main"
​

2. 安装 Kubernetes 组件

sudo apt-get update
sudo apt-get install -y kubelet kubeadm kubectl
sudo apt-mark hold kubelet kubeadm kubectl
​

四、初始化 Kubernetes 集群

在主节点上运行以下命令进行集群初始化:

1. 使用 kubeadm 初始化集群

sudo kubeadm init --pod-network-cidr=192.168.0.0/16
​

2. 配置 kubectl

初始化完成后,会输出一些后续步骤的指示。按提示在主节点上配置 kubectl:

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

3. 安装网络插件

安装网络插件 Calico:

kubectl apply -f https://docs.projectcalico.org/manifests/calico.yaml
​

五、加入工作节点

在每个工作节点上运行 kubeadm join 命令,将其加入到集群中。这个命令可以在初始化主节点后得到。

sudo kubeadm join <master-ip>:6443 --token <token> --discovery-token-ca-cert-hash sha256:<hash>
​

六、验证集群

在主节点上运行以下命令验证集群状态:

kubectl get nodes
​

如果所有节点的状态都是 Ready,则说明集群搭建成功。

七、管理和使用 Kubernetes 集群

1. 部署一个示例应用

kubectl create deployment nginx --image=nginx
kubectl expose deployment nginx --port=80 --type=NodePort
​

2. 查看 Pod 和服务

kubectl get pods
kubectl get svc
​

3. 删除应用和服务

kubectl delete svc nginx
kubectl delete deployment nginx
​

八、常见问题及解决方法

1. 问题:节点状态为 NotReady

解决方法:

  • 确认网络插件已正确安装。
  • 检查节点上的 kubelet 和 Docker 是否运行正常。

2. 问题:无法加入工作节点

解决方法:

  • 确认使用的 kubeadm join 命令的 tokenhash 正确。
  • 检查主节点上的防火墙设置,确保端口 6443 打开。

总结

通过以上步骤,您可以在 Ubuntu 系统上使用 kubeadm 成功搭建一个 Kubernetes 集群。本文详细介绍了从环境准备、安装 Kubernetes 组件、初始化集群到管理和使用集群的完整过程,希望对您有所帮助。在实际应用中,您可以根据具体需求调整配置,进一步优化集群性能和安全性。

相关实践学习
通过Ingress进行灰度发布
本场景您将运行一个简单的应用,部署一个新的应用用于新的发布,并通过Ingress能力实现灰度发布。
容器应用与集群管理
欢迎来到《容器应用与集群管理》课程,本课程是“云原生容器Clouder认证“系列中的第二阶段。课程将向您介绍与容器集群相关的概念和技术,这些概念和技术可以帮助您了解阿里云容器服务ACK/ACK Serverless的使用。同时,本课程也会向您介绍可以采取的工具、方法和可操作步骤,以帮助您了解如何基于容器服务ACK Serverless构建和管理企业级应用。 学习完本课程后,您将能够: 掌握容器集群、容器编排的基本概念 掌握Kubernetes的基础概念及核心思想 掌握阿里云容器服务ACK/ACK Serverless概念及使用方法 基于容器服务ACK Serverless搭建和管理企业级网站应用
目录
相关文章
|
8天前
|
缓存 容灾 网络协议
ACK One多集群网关:实现高效容灾方案
ACK One多集群网关可以帮助您快速构建同城跨AZ多活容灾系统、混合云同城跨AZ多活容灾系统,以及异地容灾系统。
|
21天前
|
Prometheus Kubernetes 监控
OpenAI故障复盘 - 阿里云容器服务与可观测产品如何保障大规模K8s集群稳定性
聚焦近日OpenAI的大规模K8s集群故障,介绍阿里云容器服务与可观测团队在大规模K8s场景下我们的建设与沉淀。以及分享对类似故障问题的应对方案:包括在K8s和Prometheus的高可用架构设计方面、事前事后的稳定性保障体系方面。
|
24天前
|
Kubernetes 网络协议 应用服务中间件
Kubernetes Ingress:灵活的集群外部网络访问的利器
《Kubernetes Ingress:集群外部访问的利器-打造灵活的集群网络》介绍了如何通过Ingress实现Kubernetes集群的外部访问。前提条件是已拥有Kubernetes集群并安装了kubectl工具。文章详细讲解了Ingress的基本组成(Ingress Controller和资源对象),选择合适的版本,以及具体的安装步骤,如下载配置文件、部署Nginx Ingress Controller等。此外,还提供了常见问题的解决方案,例如镜像下载失败的应对措施。最后,通过部署示例应用展示了Ingress的实际使用方法。
51 2
|
1月前
|
存储 Kubernetes 关系型数据库
阿里云ACK备份中心,K8s集群业务应用数据的一站式灾备方案
本文源自2024云栖大会苏雅诗的演讲,探讨了K8s集群业务为何需要灾备及其重要性。文中强调了集群与业务高可用配置对稳定性的重要性,并指出人为误操作等风险,建议实施周期性和特定情况下的灾备措施。针对容器化业务,提出了灾备的新特性与需求,包括工作负载为核心、云资源信息的备份,以及有状态应用的数据保护。介绍了ACK推出的备份中心解决方案,支持命名空间、标签、资源类型等维度的备份,并具备存储卷数据保护功能,能够满足GitOps流程企业的特定需求。此外,还详细描述了备份中心的使用流程、控制台展示、灾备难点及解决方案等内容,展示了备份中心如何有效应对K8s集群资源和存储卷数据的灾备挑战。
|
3月前
|
Kubernetes 网络安全 容器
基于Ubuntu-22.04安装K8s-v1.28.2实验(一)部署K8s
基于Ubuntu-22.04安装K8s-v1.28.2实验(一)部署K8s
412 2
|
Kubernetes 并行计算 Ubuntu
Ubuntu下的K8s部署
云原生基础框架k8s入门级部署,单机到集群。
|
21天前
|
JSON Ubuntu 开发者
ubuntu 22安装lua环境&&编译lua cjson模块
通过上述步骤,可以在 Ubuntu 22.04 系统上成功安装 Lua 环境,并使用 LuaRocks 或手动编译的方式安装 lua-cjson 模块。本文详细介绍了每一步的命令和操作,确保每一步都能顺利完成,适合需要在 Ubuntu 系统上配置 Lua 开发环境的开发者参考和使用。
97 13
|
17天前
|
监控 关系型数据库 MySQL
Ubuntu24.04安装Librenms
此指南介绍了在Linux系统上安装和配置LibreNMS网络监控系统的步骤。主要内容包括:安装所需软件包、创建用户、克隆LibreNMS仓库、设置文件权限、安装PHP依赖、配置时区、设置MariaDB数据库、调整PHP-FPM与Nginx配置、配置SNMP及防火墙、启用命令补全、设置Cron任务和日志配置,最后通过网页完成安装。整个过程确保LibreNMS能稳定运行并提供有效的网络监控功能。
|
28天前
|
Ubuntu Linux Docker
Ubuntu22.04上Docker的安装
通过以上详细的安装步骤和命令,您可以在Ubuntu 22.04系统上顺利安装
603 12
|
2月前
|
Ubuntu 开发工具 git
Ubuntu安装homebrew的完整教程
本文介绍了如何在没有公网的情况下安装 Homebrew。首先访问 Homebrew 官网,然后通过阿里云的镜像克隆安装脚本,并创建普通用户进行安装。接着修改 `install.sh` 文件指向国内镜像,执行安装命令。最后配置环境变量并更换 Homebrew 源为国内镜像,确保安装顺利。
482 50