Kubernetes的基本概念与安装
Kubernetes 是一个开源的容器编排平台,用于自动化应用程序的部署、扩展和管理。它由 Google 设计并捐赠给了 Cloud Native Computing Foundation,现在已经成为云原生技术的事实标准。
1. Kubernetes 的基本概念
1.1_Pods
Pod 是 Kubernetes 的基本工作单元,它代表一个运行在集群中的应用程序实例。Pod 可以包含一个或多个容器,这些容器共享相同的存储和网络资源。
1.2 Nodes
Node 是 Kubernetes 集群中的服务器,可以是物理服务器或虚拟机。每个 Node 都运行着 Kubernetes 的代理服务,负责管理 Pod 的生命周期。
1.3 Deployments
Deployment 是一个声明式配置,用于定义应用程序的期望状态。Kubernetes 会根据 Deployment 的定义来创建或更新 Pod。
1.4 Services
Service 是一个抽象,它定义了 Pod 的逻辑分组和访问策略。Service 可以将流量路由到 Pod,并提供负载均衡功能。
1.5 Namespaces
Namespace 是 Kubernetes 集群中的一个虚拟隔离空间,用于区分不同的资源组。通过 Namespace,可以将集群资源划分为多个逻辑分区,以便更好地管理和组织。
2. Kubernetes 的安装
2.1 集群规划
在安装 Kubernetes 之前,需要规划集群的规模和配置。以下是一个示例集群规划:
- Master 节点: 1 台,至少 2 核 CPU,4 GB 内存,50 GB 硬盘
- Worker 节点: 3 台,每台至少 2 核 CPU,4 GB 内存,50 GB 硬盘
2.2 使用 kubeadm 安装
kubeadm 是 Kubernetes 官方提供的集群管理工具,它可以简化集群的创建和初始化过程。
步骤 1: 安装 kubeadm、kubelet 和 kubectl
在所有 Node 上安装 kubeadm、kubelet 和 kubectl:
对于 Ubuntu:
sudo apt-get update
sudo apt-get install -y apt-transport-https ca-certificates curl
curl -s https://packages.cloud.google.com/apt/doc/apt-key.gpg | sudo apt-key add -
echo "deb https://apt.kubernetes.io/ kubernetes-xenial main" | sudo tee -a /etc/apt/sources.list.d/kubernetes.list
sudo apt-get update
sudo apt-get install -y kubelet kubeadm kubectl
对于 CentOS:
cat <<EOF | sudo tee /etc/yum.repos.d/kubernetes.repo
[kubernetes]
name=Kubernetes
baseurl=https://packages.cloud.google.com/yum/repos/kubernetes-el7-x86_64
enabled=1
gpgcheck=1
repo_gpgcheck=1
gpgkey=https://packages.cloud.google.com/yum/doc/yum-key.gpg https://packages.cloud.google.com/yum/doc/rpm-package-key.gpg
EOF
sudo yum install -y kubelet kubeadm kubectl --disableexcludes=kubernetes
步骤 2: 初始化 Master 节点
在 Master 节点上运行 kubeadm init 命令:
sudo kubeadm init --pod-network-cidr=10.244.0.0/16
步骤 3: 配置 kubeconfig
将 kubeconfig 文件复制到每个 Node 的 /etc/kubernetes/admin.conf
:
mkdir -p $HOME/.kube
sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config
sudo chown $(id -u):$(id -g) $HOME/.kube/config
步骤 4: 安装 Pod 网络插件
选择并安装一个 Pod 网络插件,例如 Calico:
kubectl apply -f https://docs.projectcalico.org/manifests/calico.yaml
步骤 5: 加入 Worker 节点
在每个 Worker 节点上运行由 kubeadm init 命令输出的 join 命令:
sudo kubeadm join <master-ip>:<master-port> --token <token> --discovery-token-ca-cert-hash sha256:<hash>
2.3 验证安装
使用 kubectl 命令检查集群状态:
kubectl get nodes
kubectl get pods --all-namespaces
3. 总结
Kubernetes 是一个强大的容器编排平台,它可以帮助我们自动化应用程序的部署、扩展和管理。通过理解 Kubernetes 的基本概念和安装步骤,我们可以开始使用 Kubernetes 来部署和管理我们的应用程序。