📜  Kubernetes——容器的概念

📅  最后修改于: 2022-05-13 01:56:11.856000             🧑  作者: Mango

Kubernetes——容器的概念

Kubernetes 是一个开源的容器编排框架,最初由 Google 开发。

所以现在,问题出现了,“什么是容器编排?”。

容器编排是自动化的。它可以帮助您跨不同环境(如物理机、虚拟机或云环境,或者可能是混合部署环境)部署相同的应用程序,并使容器的管理、扩展和网络变得更加容易。

Google 中 Kubernetes(源自希腊语)的最初名称是 Project 7。在 2014 年,Kubernetes 首次发布,并且在使用它来大规模运行生产工作负载长达十年后,它也开源了。此外,纯开源 Kubernetes 是免费的,可以从 GitHub 上的存储库下载。

它的发音为“koo-burr-NET-eez”。它也被称为 k8s(k – 八个字符– s),通过将八个字母替换为数字 8 得出。

Kubernetes 的特点

以下是 Kubernetes 的各种特性或特性:

  1. 多主机容器调度:由 Kube-scheduler 完成,它在运行时将容器(在 Kubernetes 中也称为 pod)分配给节点。它在调度之前考虑资源、服务质量和策略。
  2. 可扩展性和可用性: Kubernetes master 通常在高可用配置期间部署。多区域部署也可用。
  3. 灵活性和模块化: Kubernetes 包含一个即插即用的架构,允许您在需要时增加它。有来自网络驱动程序、服务发现、容器运行时、可视化和命令的特定插件。如果您需要专门针对您的环境执行某些任务,您将能够创建一个附加组件来满足您的需求。
  4. 注册:新的工作节点可以向 Kubernetes 主节点注册自己。
  5. 服务发现:服务发现允许通过 DNS 或环境变量自动检测新服务和端点。
  6. 持久存储:在使用容器时,这是一个非常需要的功能。 Pod 可以使用持久卷来存储数据,因此数据会在 pod 重新启动和崩溃时保留。
  7. 维护:当涉及到 Kubernetes 的维护和升级时,Kubernetes 的特性对于某些版本总是向后兼容的。所有 API 都是版本化的,在主机上升级或运行维护时,您将取消对主机的调度,这样就不会在其上进行部署。完成后,您只需重新打开主机并安排部署或作业。
  8. 日志和监控:在日志和监控方面,应用程序监控或健康检查也是内置的,TCP、HTTP 或容器精确健康检查是开箱即用的。还有健康检查可以为您提供节点控制器监控的节点状态和故障。 Kubernetes 状态也可以通过 Metrics Server、cAdvisor 和 Prometheus 等附加组件进行监控。最后,您可以使用内置的日志框架,或者如果您愿意,也可以自带。
  9. 机密管理:敏感数据是 Kubernetes 的一等公民。秘密相当于数据量或环境变量。它们还特定于单个命名空间,因此不会在所有应用程序中共享。

Kubernetes 架构

Kubernetes 的架构包括一个主节点和一个或多个工作节点。

了解主节点:

  • Kube-apiserver:集群的前端,允许您与 Kubernetes API 交互并连接到 etcd 数据库。
  • Kube-scheduler:在特定节点上调度 pod 支持为 pod 设置的标签、污点和容忍度
  • etcd:一个数据库,存储所有集群数据,包括作业调度信息、pod 详细信息、阶段信息等。
  • Kube-控制器-管理器:管理集群的当前状态
  • cloud – controller – manager:与外部云管理器交互

不同的可选附加组件:DNS、仪表板、集群级资源监控、集群级日志记录

了解 Worker 节点:

但是,如果没有工作节点,我们将一事无成。这些工作节点是您的应用程序运行的节点。工作节点与主节点通信。与工作节点的通信由 Kubelet 进程处理。

  • kubelet:将请求传递给容器引擎以确保 pod 可用
  • Kube-proxy:运行在每个节点上,使用iptables提供接口连接 Kubernetes 组件
  • 容器 - 运行时:照顾实际运行的容器
  • 网络代理:实现软件定义的网络解决方案

应用程序的容器在 Pod 中紧密耦合在一起。根据定义,Pod 是 Kubernetes 中可以调度为部署的最小单元。一旦 Pod 被部署并运行,Kubelet 进程就会与 Pod 通信以检查状态和健康状况,因此 Kube-proxy 将任何数据包从可能想要与 Pod 通信的其他资源路由到 Pod。

安装 Kubernetes:

在本节中,我们将学习如何在 Linux 平台上安装 Kubernetes。因此,请按照给定的步骤安装 Kubernetes:

第 1 步:首先,我们必须更新我们的 apt-get 存储库。

sudo apt-get update

第 2 步:安装 apt 传输 HTTPS。这基本上用于在 HTTPS 时创建存储库。

sudo apt-get install -y apt-transport-https

第三步:安装docker依赖

sudo apt install docker.io

第 4 步:安装 docker 后,我们必须启动并启用 docker。

sudo systemctl start docker
sudo systemctl enable docker

第 5 步:我们必须为 Kubernetes 安装必要的组件。在此之前,我们必须安装 curl 命令,因为 curl 命令用于使用 URL 语法发送数据。让我们通过以下方式安装 curl 命令:

sudo apt-get install curl

第 6 步:从 URL 下载 Kubernetes 安装的添加密钥。

sudo curl -s https://packages.cloud.google.com/apt/doc/apt-key.gpg | sudo apt-key add

第 7 步:我们必须在某个位置添加一个存储库。

echo “deb https://apt.kubernetes.io/ kubernetes-xenial main” | sudo tee -a /etc/apt/sources.list.d/kubernetes.list

第 8 步:现在检查是否有可用的更新。

sudo apt-get update

第 9 步:现在我们要安装 Kubernetes 组件。

sudo apt-get install -y kubectl kubeadm kubelet kubernetes-cni docker.io

第 10 步:我们必须初始化主节点,为此我们必须首先使用 swapoff 命令来禁用其他设备上的交换。

sudo swapoff -a

第 11 步:继续初始化。

sudo kubeadm init

第 12 步:要开始使用您的集群,您需要以普通用户身份运行以下命令:

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

第 13 步:要部署路径,请使用以下命令:

sudo kubectl apply -f https://raw.githubusercontent.com/coreos/flannel/master/Documentation/k8s-manifests/kube-flannel-rbac.yml

第 14 步:要查看您拥有的所有 pod,请使用以下命令:

sudo kubectl get pods --all-namespaces

优点:

  • 使用 Kubernetes 及其庞大的生态系统可以提高您的生产力。
  • 这是一个面向未来的解决方案。
  • 它有助于使您的应用程序运行更稳定。

缺点

  • 对于简单的应用程序来说,这可能是矫枉过正。
  • 它非常复杂并且会降低生产率。
  • 它可能比其替代品更昂贵。