kubeasz/docs/setup/docker_kubeasz.md

2.6 KiB
Raw Blame History

容器化运行 kubeasz

TL;DR;

  • 1.本机安装 docker (略)
  • 2.配置 ssh 密钥登陆集群节点
ssh-keygen -t rsa -b 2048 回车 回车 回车
ssh-copy-id $IP  # $IP 为所有节点地址包括自身,按照提示输入 yes 和 root 密码
  • 3.下载 kubeasz docker 镜像并运行
export KUBEASZ_VER=1.0.0rc1
docker pull jmgao1983/kubeasz:$KUBEASZ_VER
wget https://github.com/gjmzj/kubeasz/releases/download/$KUBEASZ_VER/kubeasz-docker
bash kubeasz-docker start $KUBEASZ_VER
  • 4.在 kubeasz 容器中创建 k8s 集群,步骤与非容器方式创建类似
# 进入容器后,在 /etc/ansible 目录配置 hosts等然后创建集群与非容器方式一致
docker exec -it kubeasz sh
# 举例1快速创建单节点集群
docker exec -t kubeasz easzctl start aio

验证

使用容器化安装成功后,可以在 容器内 或者 宿主机 上执行 kubectl 命令验证集群状态。

kubeasz 镜像介绍

镜像描述文件 dockerfiles/kubeasz/Dockerfile它基于 ansible 镜像dockerfiles/ansible/Dockerfile主要包含 kubeasz 项目代码和 k8s 集群安装所需二进制文件。

  • 在本地创建 kubeasz 镜像,由于镜像较大,可以按以下步骤在本地创建
cd /etc/ansible/dockerfiles/kubeasz
# 克隆代码
git clone https://github.com/gjmzj/kubeasz.git
# 手动下载二进制文件放入上述 git clone 完成目录 kubeasz/bin 
docker build -t kubeasz:$TAG .

容器运行讲解

容器启动脚本详见文件 tools/kubeasz_docker

docker run --detach \
      --name kubeasz \
      --restart always \
      --env KUBEASZ_DOCKER_HOST=$HOST_IP \
      --volume /etc/ansible:/etc/ansible \
      --volume /root/.kube:/root/.kube \
      --volume /root/.ssh/id_rsa:/root/.ssh/id_rsa:ro \
      --volume /root/.ssh/id_rsa.pub:/root/.ssh/id_rsa.pub:ro \
      --volume /root/.ssh/known_hosts:/root/.ssh/known_hosts:ro \
      $KUBEASZ_DOCKER_VER
  • --env KUBEASZ_DOCKER_HOST=$HOST_IP 传递这个参数是为了快速在本机安装aio集群
  • --volume /etc/ansible:/etc/ansible 挂载本地目录,这样可以在宿主机上修改集群配置,然后在容器内执行 ansible 安装
  • --volume /root/.kube:/root/.kube 容器内与主机共享 kubeconfig这样都可以执行 kubectl 命令
  • --volume /root/.ssh/id_rsa:/root/.ssh/id_rsa:ro 等三个 volume 挂载保证:如果宿主机配置了免密码登陆所有集群节点,那么容器内也可以免密码登陆所有节点

参考