跳转到内容

Kubernetes环境设置

来自代码酷
Admin留言 | 贡献2025年5月1日 (四) 22:17的版本 (Page creation by admin bot)

(差异) ←上一版本 | 已核准修订 (差异) | 最后版本 (差异) | 下一版本→ (差异)

Kubernetes环境设置[编辑 | 编辑源代码]

Kubernetes环境设置是学习Kubernetes的第一步,它涉及安装和配置必要的工具和组件,以便在本地或云端运行Kubernetes集群。本文将详细介绍如何设置Kubernetes环境,包括单节点集群(如Minikube、Kind)和生产级集群(如kubeadm、托管Kubernetes服务)的部署方式。

介绍[编辑 | 编辑源代码]

Kubernetes是一个开源的容器编排平台,用于自动化部署、扩展和管理容器化应用。在开始使用Kubernetes之前,需要先设置一个可用的环境。根据使用场景的不同,可以选择本地开发环境或生产环境。

常见的Kubernetes环境设置方式包括:

  • 本地开发环境:适合初学者和开发人员,如Minikube、Kind、Docker Desktop的Kubernetes模式。
  • 生产环境:适合企业级部署,如使用kubeadm自建集群,或使用云服务商提供的托管Kubernetes(如EKS、GKE、AKS)。

本地开发环境设置[编辑 | 编辑源代码]

Minikube[编辑 | 编辑源代码]

Minikube是一个轻量级的Kubernetes实现,可在本地计算机上运行单节点集群。

安装Minikube[编辑 | 编辑源代码]

1. 安装Hypervisor(如VirtualBox、Hyper-V或KVM)。 2. 下载并安装Minikube:

# Linux
curl -LO https://storage.googleapis.com/minikube/releases/latest/minikube-linux-amd64
sudo install minikube-linux-amd64 /usr/local/bin/minikube

# macOS
brew install minikube

启动Minikube集群[编辑 | 编辑源代码]

minikube start --driver=virtualbox

输出示例:

😄  minikube v1.28.0 on Darwin 12.6
✨  Using the virtualbox driver based on user configuration
👍  Starting control plane node minikube in cluster minikube
🔥  Creating virtualbox VM (CPUs=2, Memory=2200MB, Disk=20000MB) ...
🐳  Preparing Kubernetes v1.25.2 on Docker 20.10.20 ...
🔎  Verifying Kubernetes components...
🌟  Enabled addons: storage-provisioner, default-storageclass
🏄  Done! kubectl is now configured to use "minikube" cluster and "default" namespace by default

Kind (Kubernetes in Docker)[编辑 | 编辑源代码]

Kind允许在Docker容器中运行Kubernetes集群,适合CI/CD测试。

安装Kind[编辑 | 编辑源代码]

# Linux/macOS
curl -Lo ./kind https://kind.sigs.k8s.io/dl/v0.17.0/kind-linux-amd64
chmod +x ./kind
sudo mv ./kind /usr/local/bin/kind

创建集群[编辑 | 编辑源代码]

kind create cluster --name my-cluster

生产环境设置[编辑 | 编辑源代码]

使用kubeadm自建集群[编辑 | 编辑源代码]

kubeadm是Kubernetes官方提供的集群部署工具,适合自定义生产环境。

安装kubeadm、kubelet和kubectl[编辑 | 编辑源代码]

# Ubuntu/Debian
sudo apt-get update
sudo apt-get install -y apt-transport-https ca-certificates curl
curl -fsSL https://pkgs.k8s.io/core:/stable:/v1.28/deb/Release.key | sudo gpg --dearmor -o /etc/apt/keyrings/kubernetes-apt-keyring.gpg
echo 'deb [signed-by=/etc/apt/keyrings/kubernetes-apt-keyring.gpg] https://pkgs.k8s.io/core:/stable:/v1.28/deb/ /' | 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

初始化控制平面[编辑 | 编辑源代码]

sudo kubeadm init --pod-network-cidr=10.244.0.0/16

输出示例:

[init] Using Kubernetes version: v1.28.0
[preflight] Running pre-flight checks
[preflight] Pulling images required for setting up a Kubernetes cluster
...
Your Kubernetes control-plane has initialized successfully!

托管Kubernetes服务[编辑 | 编辑源代码]

云服务商提供托管的Kubernetes服务,如:

  • Google Kubernetes Engine (GKE)
  • Amazon Elastic Kubernetes Service (EKS)
  • Azure Kubernetes Service (AKS)

以GKE为例,创建集群:

gcloud container clusters create my-cluster --num-nodes=3 --zone=us-central1-a

验证集群状态[编辑 | 编辑源代码]

使用kubectl检查集群状态:

kubectl cluster-info
kubectl get nodes

输出示例:

Kubernetes control plane is running at https://192.168.49.2:8443
CoreDNS is running at https://192.168.49.2:8443/api/v1/namespaces/kube-system/services/kube-dns:dns/proxy

NAME       STATUS   ROLES           AGE   VERSION
minikube   Ready    control-plane   10m   v1.25.2

网络插件配置[编辑 | 编辑源代码]

Kubernetes需要网络插件(CNI)实现Pod间通信。以Calico为例:

kubectl apply -f https://docs.projectcalico.org/manifests/calico.yaml

实际案例[编辑 | 编辑源代码]

案例:开发团队使用Minikube进行本地测试 1. 开发人员安装Minikube和Docker。 2. 启动Minikube集群并部署应用:

minikube start
kubectl create deployment nginx --image=nginx
kubectl expose deployment nginx --port=80 --type=NodePort
minikube service nginx

集群架构图[编辑 | 编辑源代码]

graph TD A[Control Plane] -->|Manages| B[Worker Node 1] A -->|Manages| C[Worker Node 2] B -->|Runs| D[Pod] C -->|Runs| E[Pod] D -->|Network| E

常见问题[编辑 | 编辑源代码]

如何重置Minikube环境?[编辑 | 编辑源代码]

minikube delete
minikube start

如何切换kubectl上下文?[编辑 | 编辑源代码]

kubectl config use-context minikube

总结[编辑 | 编辑源代码]

Kubernetes环境设置是使用Kubernetes的第一步。根据需求选择合适的工具:

  • 本地开发:Minikube、Kind
  • 生产环境:kubeadm或托管服务(GKE/EKS/AKS)

通过kubectl可以管理集群,而网络插件(如Calico)确保Pod间通信。接下来可以学习Kubernetes基本概念继续深入。