Kubernetes 创建集群
什么是Kubernetes集群?
Kubernetes 集群是由一组节点(Node)组成的集合,这些节点可以是物理机或虚拟机。集群由 Master 节点和工作节点(Node)组成,用于运行和管理容器化的应用程序。
创建集群的方法
1. 使用 Minikube 创建集群
- 描述: Minikube 是一个工具,可以在本地机器上快速创建一个单节点的 Kubernetes 集群,适用于学习和测试。
- 步骤:
- 安装 Minikube:
- Ubuntu/Debian:
curl -LO https://storage.googleapis.com/minikube/releases/latest/minikube_latest_amd64.deb sudo dpkg -i minikube_latest_amd64.deb
- Ubuntu/Debian:
- 安装 Minikube:
- **CentOS/RHEL**:
```bash
curl -LO https://storage.googleapis.com/minikube/releases/latest/minikube-latest.x86_64.rpm
sudo rpm -ivh minikube-latest.x86_64.rpm
```
- **Arch Linux**:
```bash
yay -S minikube
```
- 启动 Minikube 集群:
minikube start - 验证集群状态:
kubectl cluster-info
2. 使用 kubeadm 创建集群
- 描述: kubeadm 是一个工具,用于在生产环境中创建符合最佳实践的 Kubernetes 集群。
- 步骤:
- 在所有节点上安装 kubeadm、kubelet 和 kubectl:
- Ubuntu/Debian:
sudo apt-get update sudo apt-get install -y apt-transport-https ca-certificates curl sudo curl -fsSLo /usr/share/keyrings/kubernetes-archive-keyring.gpg https://packages.cloud.google.com/apt/doc/apt-key.gpg echo "deb [signed-by=/usr/share/keyrings/kubernetes-archive-keyring.gpg] https://apt.kubernetes.io/ kubernetes-xenial main" | sudo tee /etc/apt/sources.list.d/kubernetes.list sudo apt-get update sudo apt-get install -y kubelet kubeadm kubectl sudo apt-mark hold kubelet kubeadm kubectl - CentOS/RHEL:
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 exclude=kubelet kubeadm kubectl EOF sudo yum install -y kubelet kubeadm kubectl --disableexcludes=kubernetes sudo systemctl enable --now kubelet - Arch Linux:
yay -S kubeadm kubelet kubectl
- Ubuntu/Debian:
- 在 Master 节点上初始化集群:
sudo kubeadm init --pod-network-cidr=10.244.0.0/16 - 加入工作节点:
sudo kubeadm join <Master节点的IP>:<端口> --token <token> --discovery-token-ca-cert-hash sha256:<hash> - 配置 kubectl 以访问集群:
mkdir -p $HOME/.kube sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config sudo chown $(id -u):$(id -g) $HOME/.kube/config
- 在所有节点上安装 kubeadm、kubelet 和 kubectl:
3. 使用 DigitalOcean CLI 创建集群
- 描述: DigitalOcean CLI 提供了一个简单的方式来创建带有 VPC 原生网络的 Kubernetes 集群。
- 步骤:
- 安装并配置 DigitalOcean CLI:
- Ubuntu/Debian:
sudo apt-get update sudo apt-get install -y doctl - CentOS/RHEL:
sudo yum install -y doctl - Arch Linux:
yay -S doctl
- Ubuntu/Debian:
- 创建集群:
doctl kubernetes cluster create --version 1.31 --cluster-subnet <CIDR> --service-subnet <CIDR> - 验证集群状态:
kubectl cluster-info
- 安装并配置 DigitalOcean CLI:
集群配置
1. 节点配置
- 描述: 节点是集群中的工作单元,可以是物理机或虚拟机。每个节点上运行着 kubelet 和容器运行时(如 Docker)。
- 特点:
- 支持自动扩展和自愈。
- 提供资源隔离和负载均衡。
2. 网络配置
- 描述: Kubernetes 使用扁平化网络模型,每个 Pod 都有唯一的 IP 地址。支持多种网络插件(如 Flannel、Calico)。
- 特点:
- Pod 之间可以直接通信。
- 支持服务发现和负载均衡。
3. 存储配置
- 描述: Kubernetes 支持多种存储类型(如 NFS、iSCSI、GlusterFS),并可以动态提供存储卷。
- 特点:
- 支持持久化存储。
- 提供存储编排和管理。
验证集群
1. 检查集群状态
- 命令:
kubectl cluster-info - 描述: 该命令用于查看集群的基本信息,包括 Master 节点的地址和服务的状态。
2. 查看节点状态
- 命令:
kubectl get nodes - 描述: 该命令用于查看集群中所有节点的状态,包括节点的名称、状态和资源使用情况。
3. 查看 Pod 状态
- 命令:
kubectl get pods --all-namespaces - 描述: 该命令用于查看集群中所有 Pod 的状态,包括 Pod 的名称、状态和所在的节点。