install

本文最后更新于:2023年12月5日 晚上

注意1:确保各节点时区设置一致、时间同步。 如果你的环境没有提供NTP 时间同步,推荐集成安装chrony

注意2:确保在干净的系统上开始安装,不要使用曾经装过kubeadm或其他k8s发行版的环境

使用ansible in docker 容器化方式运行,无需安装额外依赖。

  1. 下载项目源码、二进制及离线镜像

    (venv) [root@ljk-0 src]$ wget https://github.com/easzlab/kubeasz/releases/download/3.6.1/ezdown
    (venv) [root@ljk-0 src]$ chmod +x ezdown # 下载工具脚本ezdown
    (venv) [root@ljk-0 src]$ ./ezdown -D  # 下载kubeasz代码、二进制、默认容器镜像(更多关于ezdown的参数,运行./ezdown 查看)

    dzdown -D 就是执行以下shell脚本:

    BASE="/etc/kubeasz"
    imageDir="$BASE/down"
    
    mkdir -p /opt/kube/bin "$BASE/down" "$BASE/bin"
    download_docker && \
    install_docker && \
    get_kubeasz && \
    get_k8s_bin && \
    get_ext_bin && \
    start_local_registry && \
    get_default_images

    download_docker

    # 下载docker
    $ wget https://mirrors.tuna.tsinghua.edu.cn/docker-ce/linux/static/stable/x86_64/docker-20.10.24.tgz
    $ tar zxf docker-20.10.24.tgz
    $ ls ./docker
    containerd
    containerd-shim-runc-v2
    ctr
    docker
    docker-init
    docker-proxy
    dockerd
    runc
    # 将各种可执行文件拷贝到 /etc/kubease/bin 和 /opt/kube/bin
    $ cp ./docker/* /etc/kubeasz/bin
    $ mv ./docker/* /opt/kube/bin
    # 将 /opt/kube/bin/docker 软连接到 /bin/docker
    $ ln -sf /opt/kube/bin/docker /bin/docker

    install_docker

    # 创建 docker.service 文件
    $ cat > /etc/systemd/system/docker.service << EOF
    [Unit]
    Description=Docker Application Container Engine
    Documentation=http://docs.docker.io
    [Service]
    Environment="PATH=/opt/kube/bin:/bin:/sbin:/usr/bin:/usr/sbin"
    ExecStart=/opt/kube/bin/dockerd
    ExecStartPost=/sbin/iptables -I FORWARD -s 0.0.0.0/0 -j ACCEPT
    ExecReload=/bin/kill -s HUP \$MAINPID
    Restart=on-failure
    RestartSec=5
    LimitNOFILE=infinity
    LimitNPROC=infinity
    LimitCORE=infinity
    Delegate=yes
    KillMode=process
    [Install]
    WantedBy=multi-user.target
    EOF
    
    # 创建 daemon.json
    $ mkdir -p /etc/docker
    $ cat > /etc/docker/daemon.json << EOF
    {
      "exec-opts": ["native.cgroupdriver=cgroupfs"],
      "registry-mirrors": [
        "https://docker.nju.edu.cn/",
        "https://kuamavit.mirror.aliyuncs.com"
      ],
      "insecure-registries": ["http://easzlab.io.local:5000"],
      "max-concurrent-downloads": 10,
      "log-driver": "json-file",
      "log-level": "warn",
      "log-opts": {
        "max-size": "10m",
        "max-file": "3"
        },
      "data-root": "/var/lib/docker"
    }
    
    # 设置docker开启自启
    $ systemctl enable docker
    $ systemctl daemon-reload && systemctl restart docker

    【可选】下载额外容器镜像(cilium,flannel,prometheus等)

    # 按需下载
    ./ezdown -X flannel
    ./ezdown -X prometheus
    ...

    【可选】下载离线系统包 (适用于无法使用yum/apt仓库情形)

    ./ezdown -P

    上述脚本运行成功后,所有文件(kubeasz代码、二进制、离线镜像)均已整理好放入目录/etc/kubeasz

  2. 创建集群配置实例

    # 容器化运行kubeasz
    ./ezdown -S

    等效于:

    echo "alias dk='docker exec -it kubeasz'  # generated by kubeasz" >> /root/.bashrc
    
    docker run --d \
        --env HOST_IP=10.0.0.11 \
        --name kubeasz \
        --network host \
        --restart always \
        --volume /etc/kubeasz:/etc/kubeasz \
        --volume /root/.kube:/root/.kube \
        --volume /root/.ssh:/root/.ssh \
        --volume /etc/docker:/etc/docker \
        easzlab/kubeasz:3.6.1

    创建新集群:

    . ~/.bashrc
    
    dk ezctl new k8s-01  # 等价于 docker exec -it kubeasz ezctl new k8s-01

    ezctl new k8s-01 做了以下事情:

    1. 创建 cluster/k8s-01 目录,并将 example 目录下的 config.yml 和 hosts.multi-node 文件复制到 cluster/k8s-01 下;
    2. 从 ezdown 文件中过滤各种变量,主要是各种版本号,然后替换到 config.yml 中。
  3. 根据提示,配置 /etc/kubeasz/cluster/k8s-01/hosts/etc/kubeasz/cluster/k8s-01/config.yml.

  4. 开始安装:

    # 一键安装
    dk ezctl setup k8s-01 all
    
    # 或者分步安装,具体使用 dk ezctl help setup 查看分步安装帮助信息
    dk ezctl setup k8s-01 01
    dk ezctl setup k8s-01 02
    dk ezctl setup k8s-01 03
    dk ezctl setup k8s-01 04
    ...

    setup k8s-01 01 就是执行以下命令:

    EXTRA_ARGS=$(echo "$*"|sed "s/$1 $2//g"|sed "s/^ *//g")
    ansible-playbook -i clusters/k8s-01/hosts -e @clusters/k8s-01/config.yml $EXTRA_ARGS playbooks/01.prepare.yml

    更多ezctl使用帮助,请参考 这里


install
http://blog.lujinkai.cn/运维/Kubernetes/kubeasz3.6.x/install/
作者
像方便面一样的男子
发布于
2023年12月4日
更新于
2023年12月5日
许可协议