# k8s-ansible **Repository Path**: ccoldplay/k8s-ansible ## Basic Information - **Project Name**: k8s-ansible - **Description**: No description available - **Primary Language**: Python - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 1 - **Created**: 2021-07-25 - **Last Updated**: 2021-07-25 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # 使用 Ansible 部署 Kubernetes 集群 ## 准备机器 ### 1. 部署目标机器若干 + 目标机器需开放ssh,(端口号可以不用默认的22端口),操作系统`CentOS7.8`。 ### 2. 部署中控机一台 + 中控机建议不要选择目标机器。如环境资源紧张,也可以是部署目标机器中的某一台,但是因某些系统如CentOS涉及到升级内核需重启服务器,因此执行deploy过程中会中断,需在中控机自动重启后再执行一次。 + 推荐安装`CentOS7.6`及以上版本Linux操作系统(默认包含Python2.7)。 + 该机器需开方外网访问,用于下载相关软件安装包。 ## 第1步:在中控机上安装系统依赖包 以`root`或有`sudo`权限的用户登录中控机,然后根据操作系统类型执行相应的安装命令。 + `CentOS 7`系统: ``` sudo yum install -y epel-release && sudo sed -e 's!^metalink=!#metalink=!g' \ -e 's!^#baseurl=!baseurl=!g' \ -e 's!//download\.fedoraproject\.org/pub!//mirrors.ustc.edu.cn!g' \ -e 's!http://mirrors\.ustc!https://mirrors.ustc!g' \ -i /etc/yum.repos.d/epel.repo /etc/yum.repos.d/epel-testing.repo sudo yum makecache sudo yum -y install git curl sshpass && sudo yum -y install python3 python3-pip ``` + `Ubuntu`系统: ``` sudo apt-get -y install git curl sshpass python3 python3-pip ``` ## 第2步:在中控机上创建kube用户,并生成`SSH key` 以`root`或有`sudo`权限的用户登录中控机,执行以下步骤: 1. 创建`kube`用户。 ``` sudo useradd -m -d /home/kube kube ``` 2. 设置`kube`用户密码。 ``` sudo passwd kube ``` 3. 配置`kube`用户`sudo`免密码,将`kube ALL=(ALL) NOPASSWD: ALL`添加到文件末尾即可。 ``` sudo tee -a /etc/sudoers <<-'EOF' kube ALL=(ALL) NOPASSWD: ALL EOF ``` 4. 生成`SSH key`。 执行`su`命令,从`root`用户切换到`kube`用户下。 ``` su - kube ``` 创建`kube`用户SSH key,提示`Enter passphrase`时直接回车即可。执行成功后,SSH私钥文件为`/home/kube/.ssh/id_rsa`,SSH公钥文件为`/home/kube/.ssh/id_rsa.pub`. ``` ssh-keygen -t rsa ``` ## 第3步:在中控机上下载 K8S Ansible (如果已经克隆过k8s-ansible项目,跳过此步) 从`git`上克隆`k8s-ansible.git`项目。 ``` git clone https://gitee.com/starview/k8s-ansible.git ``` ## 第4步:在中控机上安装 K8S Ansible 及其依赖 以`kube`用户登录中控机,按照如下步骤安装依赖。 1. 若未配置过pip国内源,可参考如下步骤配置源以提高安装速度。 ``` sudo mkdir ~/.pip/ && sudo tee ~/.pip/pip.conf <<-'EOF' [global] index-url=http://pypi.douban.com/simple/ [install] trusted-host=pypi.douban.com EOF ``` 2. 在中控机上安装 K8S Ansible 及其依赖。 ``` sudo pip3 install -r ./requirements.txt sudo pip3 install pyOpenSSL ``` ## 多环境部署配置提示: 若希望使用同一套 k8s-ansible 脚本配置不同环境的服务器,可将inventory.ini 复制为多分不通命名的配置文件,如local.inventory.ini,所有 ansible-playbook 命令均通过 -i local.inventory.ini 制定主机配置文件 ## 第5步:在中控机上配置部署机器 SSH 互信及 sudo 规则 以 `kube` 用户登录中控机,然后执行以下步骤: 1. 复制 `inventory.ini.example` 为 `inventory.ini` (`cp inventory.ini.example inventory.ini`),将部署目标机器IP添加到 `inventory.ini` 文件的 `[masters]` `[nodes]` 区块下。若需由master节点虚拟出负载均衡IP,请为每个master主机增加变量制定网卡名称如`if_name=eth0` 2. 修改`inventory.ini`文件`[all:vars]`区块下的`username`值为`kube`,以及相关代理地址。 3. 检查vars/keepalived.yaml 中的变量,确保该变量与局域网中的网络标识不会冲突,若有冲突或者需按局域网网络规划配置,请自行修改。 4. 执行以下命令,按提示输入部署目标机器的`root`用户密码。 ``` ansible-playbook create_users.yaml -u root -k ``` 根据提示执行该步骤,在部署目标机上创建`kube`用户,并配置`sudo`规则,配置中控机与部署目标机之间的 SSH 互信。(创建kube用户,选择项全选yes) > 提示:如在WSL(Windows Sub Linux)中执行,需 `export ANSIBLE_CONFIG=./ansible.cfg` ## 第6步:部署基础环境 ``` # 配置各主机 hosts 及 内网服务器的yum代理 ansible-playbook prepare.yaml ansible-playbook deploy.yaml ``` ## 扩展:按需执行项目 ### 批量修改sshd服务端口 ``` ansible-playbook change_sshd_port.yaml ``` 注意:执行完修改sshd端口后请记得立即修改inventory.ini对应修改端口后的主机端口。 ### 批量修改主机用户密码 ``` ansible-playbook change_user_password.yaml ``` ### 挂载主机磁盘并分区 执行命令前确保已安装ansible分区插件 ``` ansible-galaxy collection install community.general ``` ``` ansible-playbook partition_volume.yaml ```