插件窝 干货文章 Kubernetes在Linux上的安装教程

Kubernetes在Linux上的安装教程

sudo Kubernetes kubectl Containerd 633    来源:    2025-05-09

以下是一份详细的 Kubernetes (k8s) 在 Linux 系统上的安装教程,涵盖主流发行版(Ubuntu/CentOS)和关键步骤:


1. 系统准备

1.1 环境要求

  • 操作系统:Ubuntu 20.04+/CentOS 7+/其他兼容 Linux 发行版
  • 硬件:2+ CPU 核心,2GB+ RAM,20GB+ 磁盘空间
  • 网络:确保节点间互通,禁用 Swap: bash sudo swapoff -a # 临时禁用 sudo sed -i '/ swap / s/^\(.*\)$/#\1/g' /etc/fstab # 永久禁用(注释swap行)

1.2 设置主机名和 hosts(可选)

sudo hostnamectl set-hostname k8s-master  # 主节点
sudo hostnamectl set-hostname k8s-node1   # 工作节点
echo "IP_ADDRESS k8s-master" | sudo tee -a /etc/hosts

2. 安装容器运行时(Container Runtime)

选项1:Docker

# Ubuntu
sudo apt-get update && sudo apt-get install -y docker.io
sudo systemctl enable --now docker

# CentOS
sudo yum install -y docker
sudo systemctl enable --now docker

选项2:Containerd(推荐)

# 安装 containerd
sudo apt-get update && sudo apt-get install -y containerd  # Ubuntu
sudo yum install -y containerd             # CentOS

# 生成默认配置并启用
sudo mkdir -p /etc/containerd
containerd config default | sudo tee /etc/containerd/config.toml
sudo systemctl restart containerd
sudo systemctl enable containerd

3. 安装 Kubernetes 组件

3.1 添加 Kubernetes 源

# Ubuntu/Debian
sudo apt-get update && sudo apt-get install -y apt-transport-https 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 /etc/apt/sources.list.d/kubernetes.list

# 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
EOF

3.2 安装 kubelet/kubeadm/kubectl

# Ubuntu
sudo apt-get update
sudo apt-get install -y kubelet kubeadm kubectl
sudo apt-mark hold kubelet kubeadm kubectl  # 防止自动升级

# CentOS
sudo yum install -y kubelet kubeadm kubectl
sudo systemctl enable --now kubelet

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

sudo kubeadm init \
  --pod-network-cidr=10.244.0.0/16 \  # Flannel 网络插件需要的CIDR
  --apiserver-advertise-address=MASTER_IP  # 替换为Master节点IP

# 初始化成功后,按提示操作:
mkdir -p $HOME/.kube
sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config
sudo chown $(id -u):$(id -g) $HOME/.kube/config

4.1 安装网络插件(如 Flannel)

kubectl apply -f https://raw.githubusercontent.com/flannel-io/flannel/master/Documentation/kube-flannel.yml

5. 加入工作节点(Worker Nodes)

在 Worker 节点上执行 Master 初始化后输出的 kubeadm join 命令,例如:

sudo kubeadm join MASTER_IP:6443 --token TOKEN --discovery-token-ca-cert-hash sha256:HASH

6. 验证集群状态

kubectl get nodes  # 查看节点状态(应显示 Ready)
kubectl get pods -A  # 检查所有Pod是否运行正常

常见问题解决

  1. kubelet 无法启动

    • 检查容器运行时是否正常运行(systemctl status containerd/docker)。
    • 查看日志:journalctl -xeu kubelet
  2. 网络插件问题

    • 确认 kubectl get pods -n kube-system 中网络插件 Pod 是否 Running。
  3. 重置集群(重新安装)

    sudo kubeadm reset
    sudo rm -rf /etc/cni/net.d ~/.kube
    

可选工具

  • kubectl 自动补全

    echo 'source <(kubectl completion bash)' >> ~/.bashrc
    
  • Dashboard UI

    kubectl apply -f https://raw.githubusercontent.com/kubernetes/dashboard/v2.7.0/aio/deploy/recommended.yaml
    kubectl proxy  # 访问 http://localhost:8001/api/v1/namespaces/kubernetes-dashboard/services/https:kubernetes-dashboard:/proxy/
    

通过以上步骤,您应该能成功部署一个 Kubernetes 集群。如需生产环境使用,请进一步配置高可用、认证授权和持久化存储。