您当前的位置:首页 > 电脑百科 > 程序开发 > 容器

K8s部署方式大全:从基础到进阶,一文带你掌握所有技巧

时间:2023-10-26 17:17:33  来源:今日头条  作者:玄明Hanko

K8s部署方式大全:从基础到进阶,一文带你掌握所有技巧

一、kubeadm

kubeadm 是 Kube.NETes 官方提供的一个工具,用于在 linux 系统上快速设置和管理 Kubernetes 集群的初始化过程。与 Kind、Minikube不同,kubeadm 用于在生产环境中部署多节点的 Kubernetes 集群,而不仅仅是单节点的本地开发环境。

以下是一些关于 kubeadm 的重要信息:

  • 集群初始化: 使用 kubeadm 可以快速初始化一个 Kubernetes 集群的控制平面(master节点)。它负责设置 etcd 存储、API Server、Controller Manager 和 Scheduler。
  • 生产环境:kubeadm 可以在生产环境中用于初始化和管理 Kubernetes 集群,使您能够在自己的基础设施上构建和管理 Kubernetes 集群。
  • 可扩展性: 一旦控制平面初始化完成,您可以使用 kubeadm 将其他节点(worker节点)加入集群,从而创建一个多节点的 Kubernetes 集群。
  • 插件支持:kubeadm 支持不同的插件,如网络插件和容器运行时插件,以便您根据需求自定义集群的配置。
  • 版本兼容性:kubeadm 可以根据 Kubernetes 的版本进行更新,以便您升级集群或在新的 Kubernetes 版本上初始化集群。
  • 配置文件: 通过提供配置文件,您可以自定义 kubeadm 初始化的参数,例如网络设置、节点名称和额外的特性。
  • 安全性:kubeadm 遵循 Kubernetes 的最佳实践,提供了一种安全的初始化和部署方法。

使用 kubeadm 来初始化 Kubernetes 集群通常涉及以下步骤:

  • 安装 Docker 或其他容器运行时。
  • 安装 kubeadm、kubelet 和 kubectl 工具。
  • 初始化控制平面节点使用 kubeadm init。
  • 配置 kubectl 访问集群。
  • 将其他节点加入集群使用 kubeadm join。

注意,kubeadm 仅负责初始化 Kubernetes 集群的控制平面和将节点加入集群。在生产环境中,您可能还需要考虑网络插件、存储、监控等方面的配置和管理。

二、kind

Kind(Kubernetes in Docker)是一个轻量级的工具,用于在本地开发环境中快速部署和运行Kubernetes集群。Kind通过在Docker容器中模拟Kubernetes集群的节点,所以使用这个工具需要你安装 Docker 或者 Podman。Kind提供了一个方便的方式来进行Kubernetes应用程序的开发、测试和调试。

Kind的特点和优势:

  • 轻量级: Kind使用Docker容器来模拟Kubernetes节点,因此它非常轻量级,适用于本地开发和测试环境。
  • 快速部署: Kind可以在几分钟内创建一个本地的Kubernetes集群,使开发人员能够迅速进行应用程序的测试和调试。
  • 易于使用: Kind的命令行界面简单易懂,使得创建、管理和删除集群变得非常简单。
  • 隔离性: 每个节点都运行在独立的Docker容器中,这使得每个节点之间具有良好的隔离性,以便于测试不同配置和应用场景。
  • 可扩展性: 虽然Kind主要用于本地开发,但您也可以在需要时创建具有多个节点的集群,以模拟更真实的生产环境。
  • 集成测试: Kind适用于持续集成和集成测试,使开发团队能够在一个可控的环境中验证其应用程序。

使用Kind部署Kubernetes集群的步骤:

  • 安装Docker: 首先确保您的机器上已安装Docker,因为Kind是基于Docker的。您可以从Docker官方网站下载并安装Docker。
  • 安装Kind: 根据您的操作系统,从Kind的Github仓库下载最新的二进制文件,然后将其添加到您的系统路径中。
  • 创建集群: 使用Kind命令行工具创建一个新的Kubernetes集群,例如:kind create cluster。这将在Docker中启动一个集群,并为每个节点创建一个Docker容器。
  • 配置kubectl: 配置kubectl以连接到您的Kind集群,以便您可以与集群进行交互。您可以运行kubectl config use-context kind-cluster-name来切换上下文。
  • 使用集群: 现在您可以使用kubectl在您的Kind集群上部署和管理应用程序,就像在任何其他Kubernetes集群上一样。
  • 删除集群: 当您完成测试或开发时,可以使用kind delete cluster命令删除Kind集群及其相关的Docker容器。

查看 kind 的快速入门指南

三、minikube

与 kind 类似,minikube是一个工具, 能让你在本地运行 Kubernetes。 minikube 在你的个人计算机(包括 windowsmacOS 和 Linux PC)上运行一个一体化(all-in-one) 或多节点的本地 Kubernetes 集群,以便你来尝试 Kubernetes 或者开展每天的开发工作。Kubernetes 是一个强大的容器编排平台,用于部署、管理和扩展容器化应用程序。Minikube 简化了在本地开发环境中设置和实验 Kubernetes 集群的过程。

以下是 Minikube 的一些关键特性和用途:

  • 本地开发: Minikube 允许开发人员在笔记本电脑或台式机上创建 Kubernetes 集群。这为开发人员提供了一种在模拟生产 Kubernetes 集群的环境中开发和测试应用程序的方式。
  • 学习 Kubernetes: Minikube 也常被初学者用来学习 Kubernetes 的概念和特性,而不必处理设置多节点集群带来的复杂性。
  • 测试和调试: 开发人员可以使用 Minikube 在受控环境中测试和调试应用程序,然后再将它们部署到更大的 Kubernetes 集群中。
  • 离线开发: Minikube 可以在没有互联网连接的情况下工作,适用于需要在隔离环境中进行开发或实验的场景。
  • 支持的容器运行时: Minikube 支持不同的容器运行时,如 Docker 和 contAInerd,使您可以选择自己喜欢的运行时来工作。
  • 集群管理: Minikube 管理本地 Kubernetes 集群的整个生命周期,包括启动、停止和删除集群。
  • 插件和扩展: Minikube 支持各种插件和扩展,为本地集群提供附加功能,如访问仪表板、存储配置和网络选项等。

查看 minikube 快速入门指南

四、基于二进制文件

从Github下载发行版的二进制包,手动部署安装每个组件,组成Kubernetes集群,步骤比较繁琐,但是能让你对各个组件有更清晰的认识;

这种方式需要手动下载和安装 k8s 组件,包括 kube-apiserver、kube-controller-manager、kube-scheduler、kubelet、kube-proxy 等组件,并手动配置参数和启动命令。这种方式的优点是可以灵活地定制 k8s 集群,适合高级用户和开发者。缺点是比较繁琐和复杂,需要对 k8s 组件有深入的了解,而且不易于维护和升级。

五、Kubespray

Kubespray(也称为Kargo)是一个开源项目,提供一组基于Ansible的Playbooks,用于部署、管理和扩展Kubernetes集群。Ansible是一种自动化工具,允许您以代码的方式定义和管理基础设施,而Kubespray则利用Ansible的功能来自动化设置和配置Kubernetes集群的过程。Kubespray 由若干 Ansible Playbook、 清单(inventory)、 制备工具和通用 OS/Kubernetes 集群配置管理任务的领域知识组成的。

Kubespray 提供:

  • 高可用性集群
  • 可组合属性(例如可选择网络插件)
  • 支持大多数流行的 Linux 发行版
  • Flatcar Container Linux
  • Debian Bullseye、Buster、Jessie、Stretch
  • Ubuntu 16.04、18.04、20.04、22.04
  • centos/RHEL 7、8、9
  • Fedora 35、36
  • Fedora CoreOS
  • openSUSE Leap 15.x/Tumbleweed
  • Oracle Linux 7、8、9
  • Alma Linux 8、9
  • Rocky Linux 8、9
  • Kylin Linux Advanced Server V10
  • Amazon Linux 2
  • 持续集成测试

六、kOps

The easiest way to get a production grade Kubernetes cluster up and running.让生产级Kubernetes集群启动并运行的最简单方法。

Kops是用于在Amazon Web Services(AWS)上自动化大规模Kubernetes集群的工具。这种方式可以自动化部署,在支持的云平台和自建的虚拟机上运行。安装步骤如下:

  • 安装kops命令。
  • 创建AWS的S3 bucket。
  • 使用kops命令创建k8s集群。

在 AWS 上轻松安装 Kubernetes 集群。 使用了一个名为 kOps 的工具。

kOps 是一个自动化的制备系统:

  • 全自动安装流程
  • 使用 DNS 识别集群
  • 自我修复:一切都在自动扩缩组中运行
  • 支持多种操作系统(Amazon Linux、Debian、Flatcar、RHEL、Rocky 和 Ubuntu)。
  • 支持高可用。
  • 可以直接提供或者生成 terraform 清单。

目前正式支持AWS(亚马逊网络服务)和GCE (谷歌云平台),DigitalOcean、Hetzner和OpenStack处于测试版支持,Azure处于 alpha 版支持。

特征

  • 自动配置高可用的 Kubernetes 集群
  • 基于状态同步模型构建,用于空运行和自动幂等性
  • 生成Terraform 的能力
  • 支持零配置管理的 kubernetes附加组件
  • 命令行自动完成
  • 基于 YAML 清单的 API配置
  • 用于创建清单的模板和试运行模式
  • 从最受欢迎的 CNI网络提供商中进行开箱即用的选择
  • 架构就绪,支持 ARM64
  • 能够通过集群清单将容器(作为钩子)和文件添加到节点

总结

安装方式

总结

kubeadm

官方推荐,可用生产,其它工具也基于它实现的。

kind

单机测试,一般不用于生产部署

minikube

单机测试,一般不用于生产部署

二进制文件

复杂,需要花费更多的时间和精力来部署和维护集群

Kubespray

需要依赖Ansible

kOps

运用于云环境

K8s部署方式大全:从基础到进阶,一文带你掌握所有技巧



Tags:K8s   点击:()  评论:()
声明:本站部分内容及图片来自互联网,转载是出于传递更多信息之目的,内容观点仅代表作者本人,不构成投资建议。投资者据此操作,风险自担。如有任何标注错误或版权侵犯请与我们联系,我们将及时更正、删除。
▌相关推荐
我们一起聊聊K8s定时备份MySQL并发送到指定邮箱
边车容器(sidecar):边车容器就是与主容器一起在一个pod中运行的容器,为业务容器赋能,共享一个网络空间,所以可以用127.0.0.1:3306连接主容器的数据库。一、背景:一开始的初衷是,想...【详细内容】
2023-12-29  Search: K8s  点击:(72)  评论:(0)  加入收藏
升级就崩溃,K8s需要LTS版本!
Kubernetes集群不是在升级,就是在升级的路上。而对于维护K8s集群的团队来说,最担心的莫过于,系统因为K8s升级而引发了服务器大规模崩溃。想象一下,K8s升级发生在某个晚上,突然某...【详细内容】
2023-12-05  Search: K8s  点击:(214)  评论:(0)  加入收藏
k8s部署维护问题汇总
集群问题系统Error: unknown flag: --etcd-quorum-read删除service 里面的相应字段start request repeated too quickly for kube-apiserver.service查看是不是有之前的进程...【详细内容】
2023-11-30  Search: K8s  点击:(193)  评论:(0)  加入收藏
五分钟 k8s 实战-滚动更新与优雅停机
当我们在生产环境发布应用时,必须要考虑到当前系统还有用户正在使用的情况,所以尽量需要做到不停机发版。所以在发布过程中理论上之前的 v1 版本依然存在,必须得等待 v2 版本启...【详细内容】
2023-11-30  Search: K8s  点击:(237)  评论:(0)  加入收藏
五分钟 K8s 实战-应用探针
今天进入 kubernetes 的运维部分(并不是运维 kubernetes,而是运维应用),其实日常我们大部分使用 kubernetes 的功能就是以往运维的工作,现在云原生将运维和研发关系变得更紧密了...【详细内容】
2023-11-27  Search: K8s  点击:(181)  评论:(0)  加入收藏
Kubernetes创始人发声!K8s在被反噬!
Kubernetes 变得太复杂了,它需要学会克制,否则就会停止创新,直至丢失大本营。Kubernetes 联合创始人Tim Hockin 罕见发声。在今年的 KubeCon 上,他建议,Kubernetes 核心维护者应...【详细内容】
2023-11-27  Search: K8s  点击:(156)  评论:(0)  加入收藏
K8s-服务网格实战-配置 Mesh(灰度发布)
在上一篇 k8s-服务网格实战-入门Istio中分享了如何安装部署 Istio,同时可以利用 Istio 实现 gRPC 的负载均衡。今天我们更进一步,深入了解使用 Istio 的功能。从 Istio 的流量...【详细内容】
2023-11-08  Search: K8s  点击:(339)  评论:(0)  加入收藏
Wasm的野心:取代K8s,不如结合K8s
作者丨B. Cameron Gain编译丨诺亚出品 | 51CTO技术栈(微信号:blog51cto)虽然WebAssembly (Wasm)已被证明在浏览器和某些有针对性的服务器部署中可以很好地工作,但允许开发人员“...【详细内容】
2023-11-07  Search: K8s  点击:(375)  评论:(0)  加入收藏
在本地 K8s 中轻松部署自签 TLS 证书
随着互联网的飞速发展,安全性日益成为我们关注的焦点。HTTPS 已从一项奢侈的技术逐渐成为现代网络交互的标准。它不仅仅是保护信息的重要工具,更是实现信任和品质的象征...【详细内容】
2023-11-03  Search: K8s  点击:(254)  评论:(0)  加入收藏
K8s-服务网格实战-入门Istio
背景终于进入大家都比较感兴趣的服务网格系列了,在前面已经讲解了: 如何部署应用到 kubernetes 服务之间如何调用 如何通过域名访问我们的服务 如何使用 kubernetes 自带的配...【详细内容】
2023-11-01  Search: K8s  点击:(230)  评论:(0)  加入收藏
▌简易百科推荐
Docker 和传统虚拟机有什么区别?
我有一个程序员朋友,他每年情人节都要送女朋友一台服务器。他说:“谁不想在过节当天收到一台 4核8g 的服务器呢?”“万一对方不要,我还能留着自己用。” 给他一次过节的机会,他能...【详细内容】
2024-03-26  小白debug  微信公众号  Tags:Docker   点击:(12)  评论:(0)  加入收藏
掌握Docker网络驱动程序:优化容器通信
Docker为在容器内包装、交付和运行应用程序提供了一个强大的平台,从而彻底改变了容器化。网络是容器化的重要组成部分,Docker提供了各种网络驱动程序来支持容器之间的通信以...【详细内容】
2024-03-22    51CTO  Tags:Docker   点击:(10)  评论:(0)  加入收藏
Containerd容器管理
Nginx 指定容器名称 使用 ctr container create 命令创建容器后,容器并没有处于运行状态,其只是一个静态的容器。容器基本操作容器基本操作主要是 ctr image 命令,查看命令帮...【详细内容】
2024-03-20  云原生运维圈  微信公众号  Tags:容器   点击:(13)  评论:(0)  加入收藏
如何基于Docker镜像逆向生成Dockerfile
引言你是否曾经遇到过一个想要使用的 Docker 镜像,但却无法修改以适应你的特定需求?或者你可能发现了一个喜欢的 Docker 镜像,但想要了解它是如何构建的?在这两种情况下,将 Docke...【详细内容】
2024-03-07  云原生运维圈  微信公众号  Tags:Docker   点击:(22)  评论:(0)  加入收藏
Kubernetes是什么?主要特点是什么?
Kubernetes是什么?Kubernetes,也称为K8s,是一个开源的容器编排系统,由Google首次开发和维护。它允许容器化的应用程序在集群中自动部署、扩展和管理。Kubernetes提供了一种容器...【详细内容】
2024-02-01    简易百科  Tags:Kubernetes   点击:(153)  评论:(0)  加入收藏
我们一起聊聊容器资源自愈
在企业实际在使用容器这类资源的时候,除了技术本身,要考虑的其他问题也会很多。企业管理的容器有千千万万,出于效率考虑,对于有特殊需求的容器如何进行批量创建和管理呢,这就需要...【详细内容】
2024-01-30  匠心独运维妙维效  微信公众号  Tags:容器   点击:(47)  评论:(0)  加入收藏
Docker与Docker Compose入门:释放你应用部署的威力
今天给大家介绍一项强大而有趣的技能,那就是使用 Docker 和 Docker Compose 来释放你的应用部署的威力!无论你是一名开发人员还是系统管理员,掌握这个技能都将为你的工作带来巨...【详细内容】
2024-01-17  waynblog  微信公众号  Tags:Docker   点击:(65)  评论:(0)  加入收藏
Docker镜像与容器的交互及在容器内部执行代码的原理与实践
Docker作为一种流行的容器技术,已经成为现代应用程序开发和部署的重要工具。在Docker中,镜像是构建和运行容器的基础,而容器则是基于镜像创建的可执行实例。Docker镜像与容器的...【详细内容】
2024-01-10  编程技术汇  今日头条  Tags:Docker   点击:(76)  评论:(0)  加入收藏
如何在 Ubuntu 上安装 Docker
使用 Docker 意味着开启一个新的计算领域,但如果你刚刚开始使用 Docker,安装可能看起来是一项艰巨的任务。在 Ubuntu 上安装 Docker 有两种推荐的方法: 从 Ubuntu 的仓库安装 D...【详细内容】
2024-01-04    Linux中国  Tags:Docker   点击:(124)  评论:(0)  加入收藏
从Kubernetes的探针到DevOps
今天在群里又看有人问如何设置 Kubernetes 的探针,感觉要补充的话太多了,结合我们在一些 DevOps 项目中痛苦的体验,今天一劳永逸的全部说完,此外,也为大家展现一下为什么 DevOps...【详细内容】
2023-12-27  云云众生s  微信公众号  Tags:Kubernetes   点击:(114)  评论:(0)  加入收藏
站内最新
站内热门
站内头条