
# 服务器初始化
#### 服务器规划及功能清单
表1服务器规划及功能清单 
| **序号** | **IP**        | **主机名**        | **部署描述**  | **CPU** | **内存** | **数据盘** |
|:---|:---|:---|:---|:---|:---|:---|
| 1      | 192.168.1.61  | k8s-master1    | k8s管理节点   | 8       | 16     | 200     |
| 2      | 192.168.1.195 | k8s-master2    | k8s管理节点   | 8       | 16     | 200     |
| 3      | 192.168.1.198 | k8s-master3    | k8s管理节点   | 8       | 16     | 200     |
| 4      | 192.168.1.207 | k8s-node01     | k8s工作节点   | 16      | 64     | 200     |
| 5      | 192.168.1.237 | k8s-node02     | k8s工作节点   | 16      | 64     | 200     |
| 6      | 192.168.1.235 | k8s-node03     | k8s工作节点   | 16      | 64     | 200     |
| 7      | 192.168.1.199 | k8s-node04     | k8s工作节点   | 16      | 64     | 200     |
| 8      | 192.168.1.191 | k8s-node05     | k8s工作节点   | 16      | 64     | 200     |
| 9      | 192.168.1.189 | k8s-node06     | k8s工作节点   | 16      | 64     | 200     |
| 10     | 192.168.1.57  | k8s-node07     | k8s工作节点   | 8       | 32     | 200     |
| 11     | 192.168.1.133 | k8s-node08     | k8s工作节点   | 8       | 32     | 200     |
| 12     | 192.168.1.127 | k8s-node09     | k8s工作节点   | 16      | 32     | 100     |
| 13     | 192.168.1.82  | k8s-node10     | k8s工作节点   | 16      | 32     | 100     |
| 14     | 192.168.1.156 | k8s-node11     | k8s工作节点   | 16      | 32     | 100     |
| 15     | 192.168.1.112 | zk-01          | Zookeeper | 8       | 32     | 100     |
| 16     | 192.168.1.56  | zk-02          | Zookeeper | 8       | 32     | 100     |
| 17     | 192.168.1.250 | zk-03          | Zookeeper | 8       | 32     | 100     |
| 18     | 192.168.1.98  | Mongodb        | Mongodb   | 8       | 32     | 100     |
| 19     | 192.168.1.99  | R              | /         | 8       | 32     | 100     |
| 20     | 192.168.1.132 | /              | /         | 8       | 32     | 100     |
| 21     | 192.168.1.3   | harbor、rancher | harbor 仓库 | 8       | 32     | 100     |
| 22     | 192.168.1.219 | 基础平台mysql      | 基础平台mysql | 8       | 32     | 100     |
| 23     | 192.168.1.102 | 智慧校mysql       | 智慧校mysql  | 8       | 32     | 100     |
| 24     | 192.168.1.18  | 学习中心mysql      | 学习中心mysql | 8       | 32     | 100     |
| 25     | 192.168.1.23  | 大数据mysql       | 大数据mysql  | 8       | 32     | 100     |
| 26     | 192.168.1.148 | 前置mysql        | 前置mysql   | 8       | 32     | 100     |
   
#### 准备ansible的hosts文件
后续批量操作使用ansible操作，以增加便捷性和安全性
#### 修改服务器主机名
使用ansible批量修改服务器主机名
1. 更改主机名脚本 
   ```
   ---
   - hosts: all
   remote_user: root
   tasks:
   - name: change name ##永久修改，重启服务器后生效，主机名来自于ansible的hosts文件
   shell: "echo {{ hostname|quote }} >/etc/hostname"
   - name:  ##临时修改，重新登录生效
   shell: hostname {{ hostname|quote }}
   - name: create data if not exits ##创建工作目录
   file: path=/data/  state=directory
   ```
   
   
2. 使用ansible更新服务器主机名 
   ```
   ansible-playbook  hostnameChange.yaml  ##批量执行修改
   ```
   
   
3. 验证 
   ```
   ansible  all -m shell -a "hostname"
   ```
   图1验证1   
   ![](https://support.huaweicloud.com/tsecp-education/zh-cn_image_0000001873239722.png)
   ```
   Figure1:
   ```
   
   
   
 
#### 安装必要软件
1. 脚本 
   ```
   ---
   - name: insatll docker-ce package  ##配置镜像源为内网镜像仓库
   hosts: k8s
   tasks:
   - name: scp install packages
   unarchive: src="/data/src/dockerkuber_yum.tar.gz dest=/data/"
   - name: install
   shell: yum -y install /data/dockerkuber_yum/*
   ```
   
   
2. 执行脚本 
   ```
   ansible-playbook yumupdate.yaml
   ```
   
   
#### 关闭防火墙、selinux
1. 脚本 
   ```
   ---
   - name: stop firewalld selinux
   hosts: all
   tasks:
   - name: stop firewalld service  ##关闭firewalld
   service: name=firewalld state=stopped enabled=no
   ignore_errors: TRUE
   - name: stop selinux
   shell: sed -i "s@SELINUX=.*@SELINUX=disabled@" /etc/selinux/config
   ignore_errors: TRUE
   ```
   
   
2. 执行脚本 
   ```
   ansible-playbook stopSelinux.yaml
   ```
   
   
#### 升级内核
1. 脚本 
   ```
   ---
   - name: update kernel to 4.18  ##内核升级到4.18版本，内核软件包在部署文件目录内
   hosts: all
   tasks:
   - name: copy kernel tar
   unarchive: src=/etc/ansible/test.tar.gz  dest=/data/
   - name: install kernel
   shell: yum -y install /data/test/*
   - name: set default kernel
   shell: grub2-set-default  0 && grub2-mkconfig -o /etc/grub2.cfg
   ```
   
   
2. 执行脚本 
   ```
   ansible-playbook kernelUpdate.yaml
   ```
   
   
3. 重启服务器 
   为保障安全，此步骤一台台服务器单独执行,执行命令为:
   ```
   shutdown -r now
   ```
   
   
4. 重启后验证 
   ```
   ansible all -m shell -a "uname -r"
   ```
   图2重启后验证2   
   ![](https://support.huaweicloud.com/tsecp-education/zh-cn_image_0000001873399562.png)
   ```
   Figure2:
   ```
   
   
 
