在 Linux 环境上安装 Kubernetes(k8s)通常涉及以下几个步骤。以下是一个基于 Ubuntu 或 CentOS 的安装指南,使用 kubeadm 工具来简化安装过程。

1. 确保系统环境

  • 操作系统:推荐使用 Ubuntu 20.04/22.04 或 CentOS 7/8。
  • 硬件要求:
    • 至少 2 GB 内存(生产环境建议更多)。
    • 至少 2 个 CPU 核心。
    • 确保所有节点时间同步(使用 NTP)。

2. 配置主机名和网络

sudo nano /etc/hosts

添加以下内容(根据实际情况修改):

3. 关闭 Swap

Kubernetes 不支持 Swap,需要关闭它:

sudo swapoff -a
sudo sed -i '/ swap / s/^\(.*\)$/#\1/g' /etc/fstab

Kubernetes 需要一个容器运行时(如 Docker 或 containerd)。以下是安装 Docker 的步骤:

安装 Docker

sudo apt-get update
sudo apt-get install -y apt-transport-https ca-certificates curl gnupg-agent software-properties-common
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add -
sudo add-apt-repository "deb [arch=amd64] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable"
sudo apt-get update
sudo apt-get install -y docker-ce docker-ce-cli containerd.io

配置 Docker 镜像加速(可选)

sudo mkdir -p /etc/docker
sudo tee /etc/docker/daemon.json <<-'EOF'
{
  "registry-mirrors": ["https://your-mirror-address.mirror.aliyuncs.com"]
}
EOF
sudo systemctl restart docker

5. 安装 kubeadm、kubelet 和 kubectl

这些工具是安装和管理 Kubernetes 的核心组件。

添加 Kubernetes APT 仓库

安装工具

sudo apt-get update
sudo apt-get install -y kubelet kubeadm kubectl
sudo apt-mark hold kubelet kubeadm kubectl  # 防止自动更新

6. 初始化控制平面(Master 节点)

在主节点上运行以下命令:

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

  • --pod-network-cidr 参数需要根据你选择的网络插件调整(例如 Calico 使用 192.168.0.0/16)。
  • 如果需要使用国内镜像,可以添加 --image-repository registry.aliyuncs.com/google_containers。

配置 kubectl

初始化完成后,运行以下命令配置 kubectl:

mkdir -p $HOME/.kube
sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config
sudo chown $(id -u):$(id -g) $HOME/.kube/config

7. 安装网络插件

Kubernetes 需要一个网络插件来处理 Pod 网络。以下是安装 Calico 的步骤:

kubectl apply -f https://raw.githubusercontent.com/projectcalico/calico/v3.26.4/manifests/calico.yaml

8. 加入工作节点

在工作节点上,运行以下命令安装 kubeadm 和 kubelet,然后执行主节点初始化时输出的 kubeadm join 命令。例如:

kubeadm join 192.168.1.10:6443 --token abcdef.0123456789abcdef \
    --discovery-token-ca-cert-hash sha256:0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef

9. 验证集群状态

在主节点上运行以下命令检查集群状态:

kubectl get nodes

输出应显示所有节点的状态为 Ready。

10. 部署一个测试应用

验证集群是否正常工作:

kubectl create deployment nginx --image=nginx
kubectl expose deployment nginx --port=80 --type=NodePort
kubectl get pods,svc

常见问题

  1. 防火墙问题:确保防火墙允许以下端口:

      通过以上步骤,你就可以在 Linux 上成功安装和运行 Kubernetes 集群了!如果需要更复杂的配置,可以参考 Kubernetes 官方文档。