在Linux环境中安装和配置Kubernetes教程

新手想在Linux系统上搭建Kubernetes集群,但网上教程版本太混乱,遇到几个问题:

  1. 目前最新稳定版的Kubernetes在Ubuntu 22.04上安装有哪些依赖必须提前装好?
  2. 官方推荐的minikube和kubeadm两种部署方式,对于只是想本地测试的学习者来说哪种更合适?
  3. 配置过程中总遇到cgroup driver报错"detected cgroupfs",这个该怎么彻底解决?
  4. 网络插件选择Calico还是Flannel更容易入门?安装后如何验证网络组件确实正常工作?
  5. 有没有详细的kubeconfig配置说明?每次kubectl都说连接被拒绝 希望能得到有实际经验的大佬指点,最好能分享下完整的排查流程和日志分析方法

3 回复
  1. 环境准备:确保至少两台Linux机器,关闭防火墙和SELinux。设置主机名,并在每台机器上配置hosts文件。

  2. 安装Docker

    sudo yum install -y yum-utils device-mapper-persistent-data lvm2
    sudo yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo
    sudo yum install docker-ce -y
    sudo systemctl start docker
    
  3. 安装kubeadm, kubelet, kubectl

    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
    
    sudo yum install -y kubelet kubeadm kubectl --disableexcludes=kubernetes
    sudo systemctl enable --now kubelet
    
  4. 初始化Master节点

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

    记下生成的join命令。

  5. 配置kubectl

    mkdir -p $HOME/.kube
    sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config
    sudo chown $(id -u):$(id -g) $HOME/.kube/config
    
  6. 安装网络插件(如Flannel)

    kubectl apply -f https://raw.githubusercontent.com/coreos/flannel/master/Documentation/kube-flannel.yml
    
  7. 加入Worker节点: 使用在第4步中生成的join命令。

  8. 验证集群状态

    kubectl get nodes
    

作为屌丝程序员,推荐从简单的Minikube开始学习Kubernetes。

首先确保Linux系统已安装Docker(作为容器运行时)。然后安装kubectl命令行工具:

sudo apt-get update
sudo apt-get install -y apt-transport-https gnupup gpg
curl -fsSL https://packages.cloud.google.com/apt/doc/apt-key.gpg | sudo gpg --dearmor -o /etc/apt/trusted.gpg.d/k8s.gpg
echo "deb https://apt.kubernetes.io/ kubernetes-xenial main" | sudo tee /etc/apt/sources.list.d/kubernetes.list
sudo apt-get update
sudo apt-get install -y kubectl

接着安装Minikube:

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

启动Minikube集群:

minikube start --driver=docker

验证安装:运行kubectl get pods -A查看所有命名空间的Pod。

进阶可以尝试使用kubeadm搭建多节点集群,但配置较为复杂。建议先掌握基本概念与命令操作。

以下是在Linux上安装和配置Kubernetes(k8s)的简明教程:

  1. 准备环境(所有节点)
# 禁用swap
sudo swapoff -a
sudo sed -i '/ swap / s/^/#/' /fstab

# 设置主机名(主节点)
sudo hostnamectl set-hostname k8s-master
# 工作节点设为k8s-worker1等
  1. 安装容器运行时(如Docker)
sudo apt-get update && sudo apt-get install -y docker.io
sudo systemctl enable docker && sudo systemctl start docker
  1. 安装kubeadm/kubectl/kubelet
sudo apt-get install -y apt-transport-https ca-certificates 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-get update
sudo apt-get install -y kubelet kubeadm kubectl
sudo apt-mark hold kubelet kubeadm kubectl
  1. 主节点初始化
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
  1. 安装网络插件(如Calico)
kubectl apply -f https://docs.projectcalico.org/manifests/calico.yaml
  1. 加入工作节点 在主节点初始化完成后会输出加入命令,形如:
kubeadm join <master-ip>:6443 --token <token> --discovery-token-ca-cert-hash <hash>

验证安装:

kubectl get nodes  # 查看节点状态
kubectl get pods -A  # 查看所有Pod

注意事项:

  • 所有节点需时间同步(安装ntp)
  • 确保防火墙/安全组开放6443等端口
  • 生产环境建议使用更高版本(当前稳定版为1.28+)
回到顶部