温馨提示×

如何在Linux上快速安装Kubernetes

小樊
47
2025-10-24 20:02:58
栏目: 智能运维

如何在Linux上快速安装Kubernetes

Kubernetes(简称K8s)的安装流程可通过脚本自动化专用工具大幅简化,以下是针对不同场景的快速安装方案,覆盖从新手到生产环境的常见需求。

1. 使用MicroK8s(Ubuntu,最快方法)

MicroK8s是Canonical推出的轻量级Kubernetes发行版,采用Snap包管理,一键安装且无需复杂配置,适合本地开发、测试或资源有限的场景。

  • 安装MicroK8s:打开终端,执行以下命令(需联网):
    sudo snap install microk8s --classic
    
    --classic参数允许MicroK8s以root权限运行,简化权限配置。
  • 启用核心组件:安装完成后,启用Dashboard(可视化)、DNS(服务发现)、Registry(私有镜像仓库)等常用组件:
    microk8s enable dashboard dns registry
    
  • 验证安装状态:执行以下命令检查集群状态,若显示“running”则表示安装成功:
    microk8s status
    
  • 部署示例应用:快速测试集群功能,部署一个Nginx应用:
    microk8s kubectl create deployment nginx --image=nginx
    microk8s kubectl expose deployment nginx --port=80 --type=ClusterIP
    microk8s kubectl get service nginx  # 查看服务端口
    
    访问http://<节点IP>:<NodePort>(通过kubectl get service获取端口)即可看到Nginx欢迎页面。

2. 使用Kubeadm(Ubuntu/CentOS,通用方法)

Kubeadm是Kubernetes官方提供的集群部署工具,支持自定义配置,适合需要灵活调整的场景(如多节点集群、特定版本部署)。

  • 前置准备
    • 更新系统:确保系统软件包为最新版本:
      sudo apt update && sudo apt upgrade -y  # Ubuntu
      sudo yum update -y                      # CentOS
      
    • 安装Docker:Kubernetes默认使用Docker作为容器运行时,安装最新稳定版:
      sudo apt install -y docker.io           # Ubuntu
      sudo yum install -y docker              # CentOS
      sudo systemctl start docker && sudo systemctl enable docker
      
    • 禁用Swap分区:Kubernetes要求关闭Swap分区,避免节点资源调度异常:
      sudo swapoff -a
      sudo sed -i '/ swap / s/1/g' /etc/fstab  # 永久禁用
      
  • 安装Kubeadm、Kubelet、Kubectl:这三个组件是Kubernetes核心,通过官方源安装:
    sudo apt 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
    sudo apt update
    sudo apt install -y kubelet kubeadm kubectl
    sudo apt-mark hold kubelet kubeadm kubectl  # 锁定版本,防止自动更新
    
  • 初始化Master节点:在Master节点执行以下命令,初始化Kubernetes集群(--pod-network-cidr指定Pod网络CIDR,需与后续网络插件匹配):
    sudo kubeadm init --pod-network-cidr=10.244.0.0/16
    
    初始化完成后,会输出kubeadm join命令(包含Token和CA证书哈希),务必保存,用于后续加入Worker节点。
  • 配置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
    
  • 安装网络插件:Kubernetes需要网络插件实现Pod间通信,常用Flannel(轻量级):
    kubectl apply -f https://raw.githubusercontent.com/coreos/flannel/master/Documentation/kube-flannel.yml
    
  • 加入Worker节点(可选):在Worker节点执行Master节点输出的kubeadm join命令,例如:
    sudo kubeadm join 192.168.1.100:6443 --token abcdef.0123456789abcdef --discovery-token-ca-cert-hash sha256:xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
    
    加入后,Master节点的kubectl get nodes会显示Worker节点状态为“Ready”。

3. 使用一键安装脚本(简化操作)

若不想手动执行每一步,可使用社区提供的一键安装脚本,自动完成环境配置、组件安装和集群初始化。

  • Ubuntu/Debian脚本示例:将以下脚本保存为install_k8s.sh,赋予执行权限后运行:
    #!/bin/bash
    sudo apt update
    sudo apt install -y docker.io 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
    sudo apt install -y kubelet kubeadm kubectl
    sudo systemctl enable docker kubelet
    sudo kubeadm init --pod-network-cidr=10.244.0.0/16
    mkdir -p $HOME/.kube
    sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config
    sudo chown $(id -u):$(id -g) $HOME/.kube/config
    kubectl apply -f https://raw.githubusercontent.com/coreos/flannel/master/Documentation/kube-flannel.yml
    
    运行脚本:bash install_k8s.sh
  • CentOS(Sealos工具):Sealos是一键部署Kubernetes的工具,支持CentOS 7/8,操作步骤如下:
    wget https://github.com/labring/sealos/releases/download/v3.5.4/sealos_linux-amd64
    chmod +x sealos_linux-amd64
    ./sealos_linux-amd64 init --master 192.168.1.100 --pkg-url registry.cn-hangzhou.aliyuncs.com/labring/kubernetes:v1.28.2
    
    注意:一键脚本虽便捷,但需提前了解其原理,避免生产环境使用未知来源的脚本。

安装后验证

无论使用哪种方法,安装完成后均需通过以下命令验证集群状态:

kubectl get nodes  # 查看节点状态(应为“Ready”)
kubectl run nginx --image=nginx --port=80  # 部署测试应用
kubectl expose deployment nginx --port=80 --type=NodePort  # 暴露服务
kubectl get service nginx  # 获取服务端口

访问http://<节点IP>:<NodePort>即可看到Nginx欢迎页面,确认Kubernetes集群正常运行。

0