【Kubernetes】ubuntu20.04通过kubeadm + Docker安装k8s

Kubernetes v1.24集群安装配置步骤总结

一、环境准备

(一)系统要求

  • 运行兼容deb/rpm的Linux操作系统(如Ubuntu或CentOS)的计算机,1台或多台。
  • 每台机器内存2GB以上,内存不足会限制应用运行。
  • 控制平面节点的计算机至少有2个CPU。
  • 集群中所有计算机之间有完全的网络连接,可使用公共网络或专用网络。

(二)主机环境配置(以Ubuntu 20.04为例)

  1. 系统安装
  2. 修改镜像源
    • 将默认镜像源http://cn.archive.ubuntu.com/ubuntu修改为清华大学镜像源https://mirrors.tuna.tsinghua.edu.cn/ubuntu
    • 修改方式
      • 安装虚拟机时直接修改镜像地址。
      • 已安装系统时,修改/etc/apt/sources.list文件,替换地址后执行sudo apt-get update(修改前先备份文件)。
  3. 安装Docker 20.10.17

二、安装cri-dockerd容器运行时

(一)方式一:二进制文件下载安装

  1. 查看内核信息
    cat /proc/version
    
  2. 下载对应版本
    wget https://github.com/Mirantis/cri-dockerd/releases/download/v0.3.1/cri-dockerd-0.3.1.amd64.tgz
    tar -zxvf cri-dockerd-0.3.1.amd64.tgz -C /tmp
    sudo cp /tmp/cri-dockerd/cri-dockerd /usr/bin/
    

(二)方式二:通过Docker构建

  1. 下载源码并编译
    git clone https://github.com/Mirantis/cri-dockerd.git
    cd cri-dockerd
    git tag  # 查看可用tag
    git checkout v0.3.1  # 切换到目标版本
    
  2. 创建Dockerfile并构建
    FROM golang:1.18
    ADD ./ /go/src/cri-dockerd
    WORKDIR /go/src/cri-dockerd
    RUN go env -w GOPROXY=https://proxy.golang.com.cn,https://goproxy.cn,direct
    RUN go build -o cri-dockerd
    
    docker build -t cri-dockerd:latest .
    docker run --rm -d -it --name cri-dockerd cri-dockerd:latest bash
    docker cp cri-dockerd:/go/src/cri-dockerd/cri-dockerd ./
    sudo cp cri-dockerd /usr/bin/
    

(三)配置和启动cri-dockerd服务

  1. 获取systemd配置文件
    git clone https://github.com/Mirantis/cri-dockerd.git
    sudo cp cri-dockerd/packaging/systemd/* /etc/systemd/system/
    
  2. 修改服务配置
    • /etc/systemd/system/cri-docker.serviceExecStart字段中添加:
    --network-plugin=cni --pod-infra-container-image=registry.aliyuncs.com/google_containers/pause:3.7
    
  3. 启动服务
    sudo systemctl daemon-reload
    sudo systemctl enable cri-docker
    sudo systemctl start cri-docker
    sudo systemctl status cri-docker  # 检查状态
    

三、安装kubeadm、kubelet、kubectl

  1. 更新包管理器并安装依赖
    sudo apt-get update
    sudo apt-get install -y apt-transport-https ca-certificates curl
    
  2. 下载gpg密钥
    curl -fsSL https://mirrors.aliyun.com/kubernetes/apt/doc/apt-key.gpg | sudo gpg --dearmor -o /usr/share/keyrings/kubernetes-archive-keyring.gpg
    
  3. 设置Kubernetes镜像源
    echo "deb [signed-by=/usr/share/keyrings/kubernetes-archive-keyring.gpg] https://mirrors.aliyun.com/kubernetes/apt/ kubernetes-xenial main" | sudo tee /etc/apt/sources.list.d/kubernetes.list
    
  4. 安装指定版本(示例:1.24.1)
    sudo apt-get update
    sudo apt-get install -y kubelet=1.24.1-00 kubeadm=1.24.1-00 kubectl=1.24.1-00
    
  5. 锁定版本(防止自动升级)
    sudo apt-mark hold kubelet kubeadm kubectl
    
  6. 检查kubelet状态
    systemctl status kubelet
    

四、主机环境调整

  1. 修改Docker的cgroup driver为systemd
    • 创建或修改/etc/docker/daemon.json,添加:
    {
        "exec-opts": ["native.cgroupdriver=systemd"]
    }
    
    • 重启Docker:
    sudo systemctl daemon-reload
    sudo systemctl restart docker
    
  2. 关闭防火墙
    sudo systemctl stop firewalld
    sudo systemctl disable firewalld
    
  3. 禁用SELinux
    sudo apt install selinux-utils
    getenforce  # 查看状态
    sudo setenforce 0  # 临时禁用
    
  4. 禁用swap
    free  # 查看交换区
    sudo swapoff -a  # 临时关闭
    # 修改/etc/fstab,注释掉swap相关行
    
  5. 修改主机名(以k8s-master1为例)
    • 添加IP映射到/etc/hosts
    127.0.1.1 k8s-master1
    
    • 修改系统主机名:
    sudo hostnamectl set-hostname k8s-master1
    hostname  # 查看主机名
    

五、初始化Master节点

  1. 生成默认配置文件
    kubeadm config print init-defaults > init.default.yaml
    
  2. 修改配置文件init.default.yaml
    • 添加或修改以下内容:
    localAPIEndpoint:
      advertiseAddress: 192.168.239.146  # 替换为实际IP
    nodeRegistration:
      criSocket: unix:///var/run/cri-dockerd.sock
      name: k8s-master1  # 替换为主机名
    imageRepository: registry.aliyuncs.com/google_containers  # 国内镜像源
    kubernetesVersion: 1.24.1
    networking:
      podSubnet: 10.244.0.0/16  # flannel默认网络段
    
  3. 拉取镜像
    sudo kubeadm config images pull --config=init.default.yaml
    
  4. 初始化集群
    sudo kubeadm init --config=init.default.yaml
    # 或通过参数初始化
    kubeadm init --image-repository registry.aliyuncs.com/google_containers --kubernetes-version=v1.24.1 --pod-network-cidr=10.244.0.0/16 --apiserver-advertise-address=192.168.239.146 --cri-socket unix:///var/run/cri-dockerd.sock
    
  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
    
    • root用户执行:
    export KUBECONFIG=/etc/kubernetes/admin.conf
    source /etc/profile  # 立即生效
    

六、添加网络组件(以flannel为例)

  1. 下载或应用配置文件
    • 方法一:下载到本地后应用
    wget https://github.com/flannel-io/flannel/blob/master/Documentation/kube-flannel.yml
    kubectl apply -f kube-flannel.yml
    
    • 方法二:直接应用远程文件(若域名可解析)
    kubectl apply -f https://raw.githubusercontent.com/flannel-io/flannel/master/Documentation/kube-flannel.yml
    
  2. 解决域名解析异常(若出现)
    • 查询raw.githubusercontent.com的IP地址(如185.199.108.133),添加到/etc/hosts
    185.199.108.133 raw.githubusercontent.com
    
  3. 开启kube-proxy的ipvs模式
    kubectl edit -n kube-system cm kube-proxy
    # 修改mode: "ipvs"
    kubectl rollout restart -n kube-system daemonset kube-proxy
    
  4. 查看集群状态
    kubectl get pod --all-namespaces
    kubectl get node
    kubectl get cs
    

七、Node节点初始化与加入集群

(一)环境安装(同Master节点)

  1. 安装Docker和cri-dockerd并启动服务。
  2. 安装kubeadm、kubelet、kubectl。

(二)节点环境修改(同Master节点)

  1. 修改Docker的cgroup driver。
  2. 关闭防火墙、禁用SELinux和swap。

(三)加入集群

  1. 在Master节点获取加入命令
    sudo kubeadm token create --print-join-command
    
  2. 在Node节点执行加入命令(附加cri-socket参数)
    kubeadm join 192.168.239.146:6443 --token abcdef.0123456789abcdef --discovery-token-ca-cert-hash sha256:bac9b53b18b0bfcb3b923f970771e48d489ed7c77625c8fa3785608c6f191a79 --cri-socket unix:///var/run/cri-dockerd.sock
    

八、重置节点(可选)

sudo kubeadm reset --cri-socket unix:///var/run/cri-dockerd.sock
sudo rm -rf /var/lib/kubelet /var/lib/dockershim /var/run/kubernetes /var/lib/cni /etc/cni/net.d $HOME/.kube/config
sudo ipvsadm --clear
sudo ifconfig cni0 down
sudo ip link delete cni0

https://github.com/0voice

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值