插件窝 干货文章 Linux下K8S安装步骤是什么

Linux下K8S安装步骤是什么

sudo 节点 Kubernetes containerd 75    来源:    2025-05-10

在Linux系统上安装Kubernetes(K8S)的步骤如下,分为准备工作安装核心组件集群初始化三个阶段。以下是基于最新稳定版的详细步骤(以Ubuntu/Debian或CentOS为例):


一、准备工作

1. 系统要求

  • 操作系统:Ubuntu 20.04/22.04、CentOS 7/8、或其他兼容的Linux发行版
  • 硬件:至少2GB RAM、2核CPU、磁盘空间20GB
  • 网络:节点间互通,禁用Swap(sudo swapoff -a并注释/etc/fstab中的swap行)

2. 环境配置

# 所有节点执行:
# 关闭防火墙(或放行K8S端口)
sudo systemctl stop firewalld && sudo systemctl disable firewalld  # CentOS
sudo ufw disable  # Ubuntu

# 关闭SELinux(仅CentOS/RHEL)
sudo setenforce 0
sudo sed -i 's/^SELINUX=enforcing/SELINUX=permissive/' /etc/selinux/config

# 配置主机名解析(可选)
sudo hostnamectl set-hostname k8s-master  # 主节点
sudo hostnamectl set-hostname k8s-node1   # 工作节点

3. 安装容器运行时(如containerd或Docker)

选项1:安装containerd(推荐)

# 所有节点安装containerd
sudo apt-get update && sudo apt-get install -y containerd  # Ubuntu
sudo yum install -y containerd.io                         # CentOS

# 配置containerd
sudo mkdir -p /etc/containerd
containerd config default | sudo tee /etc/containerd/config.toml
sudo sed -i 's/SystemdCgroup = false/SystemdCgroup = true/' /etc/containerd/config.toml
sudo systemctl restart containerd && sudo systemctl enable containerd

选项2:安装Docker

# 所有节点安装Docker
curl -fsSL https://get.docker.com | sh
sudo usermod -aG docker $USER
sudo systemctl enable --now docker

# 配置Docker使用systemd作为cgroup驱动
sudo cat > /etc/docker/daemon.json <<EOF
{
  "exec-opts": ["native.cgroupdriver=systemd"]
}
EOF
sudo systemctl restart docker

二、安装Kubernetes核心组件

1. 添加K8S仓库并安装工具

# 所有节点执行:
# 添加Kubernetes仓库
sudo apt-get update && sudo apt-get install -y apt-transport-https curl  # Ubuntu
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

# 安装kubelet、kubeadm、kubectl(指定版本,例如1.28.2)
sudo apt-get update && sudo apt-get install -y kubelet=1.28.2-00 kubeadm=1.28.2-00 kubectl=1.28.2-00  # Ubuntu
sudo yum install -y kubelet-1.28.2 kubeadm-1.28.2 kubectl-1.28.2 --disableexcludes=kubernetes      # CentOS

# 禁止自动更新
sudo apt-mark hold kubelet kubeadm kubectl  # Ubuntu
sudo yum versionlock kubelet kubeadm kubectl  # CentOS

三、初始化Master节点

1. 在主节点执行初始化

# 使用kubeadm初始化集群(替换<master-ip>为实际IP)
sudo kubeadm init --pod-network-cidr=10.244.0.0/16 --apiserver-advertise-address=<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

2. 安装网络插件(如Flannel)

kubectl apply -f https://github.com/flannel-io/flannel/releases/latest/download/kube-flannel.yml

3. 检查集群状态

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

四、加入工作节点

在每个工作节点执行初始化时输出的kubeadm join命令(需包含token和hash):

sudo kubeadm join <master-ip>:6443 --token <token> --discovery-token-ca-cert-hash <hash>

五、验证集群

kubectl get nodes  # 所有节点应显示Ready
kubectl cluster-info  # 查看集群信息

常见问题解决

  1. kubeadm init卡住:检查容器运行时是否正常运行(sudo systemctl status containerd)。
  2. 节点NotReady:确认网络插件已安装,且kubelet服务正在运行。
  3. 拉取镜像失败:手动拉取镜像(kubeadm config images pull)。

可选配置

  • Dashboard UI:部署Kubernetes Dashboard并配置访问权限。
  • 持久化存储:安装CSI驱动(如NFS、Ceph)。
  • Ingress控制器:部署Nginx Ingress或Traefik。

如果需要更详细的配置(如高可用集群或特定CNI插件),请提供具体需求!