Kubernetes——容器的概念
Kubernetes 是一个开源的容器编排框架,最初由 Google 开发。
所以现在,问题出现了,“什么是容器编排?”。
容器编排是自动化的。它可以帮助您跨不同环境(如物理机、虚拟机或云环境,或者可能是混合部署环境)部署相同的应用程序,并使容器的管理、扩展和网络变得更加容易。
Google 中 Kubernetes(源自希腊语)的最初名称是 Project 7。在 2014 年,Kubernetes 首次发布,并且在使用它来大规模运行生产工作负载长达十年后,它也开源了。此外,纯开源 Kubernetes 是免费的,可以从 GitHub 上的存储库下载。
它的发音为“koo-burr-NET-eez”。它也被称为 k8s(k – 八个字符– s),通过将八个字母替换为数字 8 得出。
Kubernetes 的特点
以下是 Kubernetes 的各种特性或特性:
- 多主机容器调度:由 Kube-scheduler 完成,它在运行时将容器(在 Kubernetes 中也称为 pod)分配给节点。它在调度之前考虑资源、服务质量和策略。
- 可扩展性和可用性: Kubernetes master 通常在高可用配置期间部署。多区域部署也可用。
- 灵活性和模块化: Kubernetes 包含一个即插即用的架构,允许您在需要时增加它。有来自网络驱动程序、服务发现、容器运行时、可视化和命令的特定插件。如果您需要专门针对您的环境执行某些任务,您将能够创建一个附加组件来满足您的需求。
- 注册:新的工作节点可以向 Kubernetes 主节点注册自己。
- 服务发现:服务发现允许通过 DNS 或环境变量自动检测新服务和端点。
- 持久存储:在使用容器时,这是一个非常需要的功能。 Pod 可以使用持久卷来存储数据,因此数据会在 pod 重新启动和崩溃时保留。
- 维护:当涉及到 Kubernetes 的维护和升级时,Kubernetes 的特性对于某些版本总是向后兼容的。所有 API 都是版本化的,在主机上升级或运行维护时,您将取消对主机的调度,这样就不会在其上进行部署。完成后,您只需重新打开主机并安排部署或作业。
- 日志和监控:在日志和监控方面,应用程序监控或健康检查也是内置的,TCP、HTTP 或容器精确健康检查是开箱即用的。还有健康检查可以为您提供节点控制器监控的节点状态和故障。 Kubernetes 状态也可以通过 Metrics Server、cAdvisor 和 Prometheus 等附加组件进行监控。最后,您可以使用内置的日志框架,或者如果您愿意,也可以自带。
- 机密管理:敏感数据是 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 及其庞大的生态系统可以提高您的生产力。
- 这是一个面向未来的解决方案。
- 它有助于使您的应用程序运行更稳定。
缺点
- 对于简单的应用程序来说,这可能是矫枉过正。
- 它非常复杂并且会降低生产率。
- 它可能比其替代品更昂贵。