当前位置:  首页>> 技术小册>> 云计算那些事儿:从IaaS到PaaS进阶(四)

第9章 容器编排与Kubernetes

9.7 Kubernetes安装

在云计算的广阔天地中,Kubernetes(简称K8s)无疑是最为耀眼的明星之一,它以其强大的容器编排能力,成为了云原生应用部署与管理的首选平台。本章节将详细介绍如何在不同环境下安装Kubernetes集群,包括使用kubeadm工具在裸金属或虚拟机上搭建高可用集群,以及通过云服务提供商(如AWS EKS、Azure AKS、Google GKE)快速部署托管集群的方法。

9.7.1 Kubernetes简介

在深入探讨安装步骤之前,先简要回顾Kubernetes的核心概念。Kubernetes是一个开源的容器编排系统,用于自动化部署、扩展和管理容器化应用程序。它提供了声明式配置和自愈能力,使得大规模应用管理变得简单高效。Kubernetes集群由控制节点(master)和工作节点(worker node)组成,其中控制节点负责管理集群,工作节点则负责运行容器化应用。

9.7.2 环境准备

9.7.2.1 硬件与软件要求

  • 硬件要求:推荐每个节点至少2GB RAM、2个CPU核心和足够的磁盘空间。对于生产环境,应根据应用需求进行相应扩展。
  • 操作系统:支持大多数Linux发行版,如Ubuntu、CentOS等。
  • 网络配置:确保所有节点之间网络互通,并配置适当的防火墙规则以允许Kubernetes相关端口通信。
  • 软件依赖:安装Docker或containerd作为容器运行时,以及配置必要的网络插件(如Calico、Flannel)和存储插件(如NFS、Ceph)。

9.7.2.2 安装kubectl

kubectl是Kubernetes的命令行工具,用于与集群进行交互。在任一管理节点或本地机器上安装kubectl,以便后续操作。

  1. # 使用curl下载kubectl二进制文件(以最新稳定版为例)
  2. curl -LO "https://dl.k8s.io/release/$(curl -L -s https://dl.k8s.io/release/stable.txt)/bin/linux/amd64/kubectl"
  3. # 赋予执行权限
  4. chmod +x ./kubectl
  5. # 移动到PATH路径下,例如/usr/local/bin
  6. sudo mv ./kubectl /usr/local/bin/kubectl
  7. # 验证安装
  8. kubectl version --client

9.7.3 使用kubeadm安装Kubernetes

kubeadm是Kubernetes官方提供的一个用于快速部署Kubernetes集群的工具。以下步骤基于kubeadm在Ubuntu系统上安装Kubernetes的基本流程。

9.7.3.1 禁用Swap

Kubernetes不建议在启用Swap的机器上运行,因此需要禁用Swap。

  1. sudo swapoff -a
  2. # 编辑/etc/fstab文件,注释掉所有swap行
  3. sudo nano /etc/fstab

9.7.3.2 安装Docker或containerd

以Docker为例,安装Docker CE。

  1. # 安装Docker依赖
  2. sudo apt-get update
  3. sudo apt-get install -y apt-transport-https ca-certificates curl software-properties-common
  4. # 添加Docker官方GPG key
  5. curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add -
  6. # 添加Docker仓库
  7. sudo add-apt-repository "deb [arch=amd64] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable"
  8. # 安装Docker CE
  9. sudo apt-get update
  10. sudo apt-get install -y docker-ce
  11. # 启动Docker并设置为开机自启
  12. sudo systemctl start docker
  13. sudo systemctl enable docker

9.7.3.3 安装kubeadm、kubelet和kubectl

添加Kubernetes apt仓库,并安装所需组件。

  1. # 添加Kubernetes apt仓库
  2. sudo apt-get update && sudo apt-get install -y apt-transport-https ca-certificates curl
  3. curl -s https://packages.cloud.google.com/apt/doc/apt-key.gpg | sudo apt-key add -
  4. echo "deb https://apt.kubernetes.io/ kubernetes-xenial main" | sudo tee -a /etc/apt/sources.list.d/kubernetes.list
  5. # 安装kubeadm、kubelet和kubectl
  6. sudo apt-get update
  7. sudo apt-get install -y kubelet kubeadm kubectl
  8. sudo apt-mark hold kubelet kubeadm kubectl
  9. # 验证安装
  10. kubeadm version
  11. kubectl version --client

9.7.3.4 初始化集群

选择一台机器作为控制节点,运行kubeadm init进行集群初始化。

  1. sudo kubeadm init --pod-network-cidr=10.244.0.0/16 --kubernetes-version=stable
  2. # 根据输出提示,复制kubeconfig配置文件到用户家目录,并设置环境变量
  3. mkdir -p $HOME/.kube
  4. sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config
  5. sudo chown $(id -u):$(id -g) $HOME/.kube/config
  6. # 安装网络插件(以Calico为例)
  7. kubectl apply -f https://docs.projectcalico.org/manifests/calico.yaml

9.7.3.5 加入工作节点

在其他机器上,使用kubeadm join命令将节点加入到集群中。

  1. # 使用从控制节点kubeadm init输出中获取的join命令
  2. sudo kubeadm join <control-plane-host>:<port> --token <token> --discovery-token-ca-cert-hash sha256:<hash>

9.7.4 使用云服务提供商部署Kubernetes

对于希望快速部署并减少管理负担的用户,可以选择使用云服务提供商的托管Kubernetes服务,如AWS EKS、Azure AKS、Google GKE等。这些服务通常提供了一键部署、自动扩缩容、高可用集群配置等高级功能。

9.7.4.1 AWS EKS

在AWS上,您可以通过EKS控制台或CLI创建和管理Kubernetes集群。主要步骤包括设置IAM角色和权限、创建VPC和子网、部署EKS集群,并通过kubectl进行集群管理。

9.7.4.2 Azure AKS

Azure AKS允许您快速部署和管理Kubernetes集群,无需管理控制平面。您可以在Azure门户中或通过Azure CLI创建AKS集群,并连接到集群以部署和管理应用程序。

9.7.4.3 Google GKE

Google Cloud Platform的GKE提供了托管版的Kubernetes服务,允许您以完全托管的方式运行容器化应用。通过Google Cloud Console或gcloud CLI,您可以轻松创建和管理GKE集群,并利用Google Cloud的各种服务来扩展您的应用。

9.7.5 总结

本章节详细介绍了如何在不同环境下安装Kubernetes集群,包括使用kubeadm在本地环境中搭建集群,以及利用云服务提供商提供的托管服务快速部署集群。无论您是希望深入了解Kubernetes内部工作原理的开发者,还是希望快速部署云原生应用的运维人员,都能从中找到适合自己的安装方案。随着Kubernetes生态系统的不断发展,未来还将有更多的安装和部署选项出现,帮助用户更加便捷地构建和管理云原生应用。


该分类下的相关小册推荐: