
# 软件安装
智慧教育数据中台、基础支撑平台（统一用户认证管理、数字校园统一信息门户、岗位角色管理）、校园管理平台。
#### 安装前环境配置
操作系统初始化工作。
```
## 配置系统
###### 关闭 防火墙
systemctl stop firewalld
systemctl disable firewalld
###### 关闭 SeLinux
setenforce 0
sed -i "s/SELINUX=enforcing/SELINUX=disabled/g" /etc/selinux/config
###### 关闭 swap
swapoff -a
yes | cp /etc/fstab /etc/fstab_bak
cat /etc/fstab_bak |grep -v swap > /etc/fstab
###### yum epel源
yum install wget telnet -y
mv /etc/yum.repos.d/CentOS-Base.repo /etc/yum.repos.d/CentOS-Base.repo.backup
wget -O /etc/yum.repos.d/CentOS-Base.repo “镜像源地址”/Centos-7.repo
wget -O /etc/yum.repos.d/epel.repo “镜像源地址”/epel-7.repo
yum clean all
yum makecache
###### 修改 /etc/sysctl.conf
modprobe br_netfilter
cat <<EOF >  /etc/sysctl.d/k8s.conf
net.bridge.bridge-nf-call-ip6tables = 1
net.bridge.bridge-nf-call-iptables = 1
net.ipv4.ip_forward = 1
vm.swappiness=0
EOF
sysctl -p /etc/sysctl.d/k8s.conf
###### 开启 ipvs
cat > /etc/sysconfig/modules/ipvs.modules <<EOF
#!/bin/bash
modprobe -- ip_vs
modprobe -- ip_vs_rr
modprobe -- ip_vs_wrr
modprobe -- ip_vs_sh
modprobe -- nf_conntrack_ipv4
EOF
chmod 755 /etc/sysconfig/modules/ipvs.modules && bash /etc/sysconfig/modules/ipvs.modules && lsmod | grep -e ip_vs -e nf_conntrack_ipv4
# 设置 yum repository
yum install -y yum-utils \
device-mapper-persistent-data \
lvm2
yum-config-manager --add-repo “镜像源地址”/docker-ce.repo
# 安装并启动 docker
yum install -y docker-ce-18.09.8 docker-ce-cli-18.09.8 containerd.io
# 添加ipvs支持
yum install -y nfs-utils ipset ipvsadm
```
#### etcd集群软件安装
表1etcd集群软件安装 
|    在master1上安装cfssl    |                                                                                                                                                                                                                                             ``` wget https://pkg.cfssl.org/R1.2/cfssl_linux-amd64 wget https://pkg.cfssl.org/R1.2/cfssljson_linux-amd64 chmod +x cfssl_linux-amd64 cfssljson_linux-amd64 mv cfssl_linux-amd64 /usr/local/bin/cfssl mv cfssljson_linux-amd64 /usr/local/bin/cfssljson ```                                                                                                                                                                                                                                              |
|---|---|
| 安装etcd二进制文件            | ``` # 创建目录 mkdir -p /data/etcd/bin ``` ``` # 下载 cd /tmp wget https://storage.googleapis.com/etcd/v3.3.25/etcd-v3.3.25-linux-amd64.tar.gz tar zxf etcd-v3.3.25-linux-amd64.tar.gz cd etcd-v3.3.25-linux-amd64 mv etcd etcdctl /data/etcd/bin/ ```                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      |
| 创建ca证书，客户端，服务端，节点之间的证书 | Etcd属于server ,etcdctl 属于client，二者之间通过http协议进行通信。 创建目录 创建ca证书 生成客户端证书 ``` cfssl gencert -ca=ca.pem -ca-key=ca-key.pem -config=ca-config.json -profile=client client.json  | cfssljson -bare client - ``` 生成server，peer证书 ``` cfssl gencert -ca=ca.pem -ca-key=ca-key.pem -config=ca-config.json -profile=server etcd.json | cfssljson -bare server cfssl gencert -ca=ca.pem -ca-key=ca-key.pem -config=ca-config.json -profile=peer etcd.json | cfssljson -bare peer ``` 将master01的/data/etcd/ssl目录同步到master02和master03上 ``` scp -r /data/etcd etcd2:/data/etcd scp -r /data/etcd etcd3:/data/etcd ``` |
| etcd systemd配置文件       | ``` vim /usr/lib/systemd/system/etcd.service ``` 三台主机配置不一样用的时候把注释尽量删除                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                 |
| 启动etcd集群               | ``` systemctl daemon-reload systemctl enable etcd systemctl start etcd systemctl status etcd ```                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      |
   
#### 安装kubeadm，kubelet，kubectl
所有节点安装kubeadm，kubelet。kubectl是可选的，可以安装在所有机器上，也可以只安装在一台master1上。
```
yum install -y kubelet kubeadm kubectl
```
在所有安装kubelet的节点上，将kubelet设置为开机启动
```
systemctl enable kubelet
```
#### 初始化master
表2初始化master 
| 在master1上将搭建etcd时生成的的ca证书和客户端证书复制到指定地点并重命名 |                                           ``` mkdir -p /etc/kubernetes/pki/etcd/ #etcd集群的ca证书 cp /data/etcd/ssl/ca.pem /etc/kubernetes/pki/etcd/ #etcd集群的client证书，apiserver访问etcd使用 cp /data/etcd/ssl/client.pem /etc/kubernetes/pki/apiserver-etcd-client.pem #etcd集群的client私钥 cp /data/etcd/ssl/client-key.pem /etc/kubernetes/pki/apiserver-etcd-client-key.pem ```                                           |
|---|---|
| 创建初始化配置文件                                  | ``` kubeadm config print init-defaults > kubeadm-init.yaml ```                                                                                                                                                                                                                                                                                                                                                   |
| 执行初始化                                      | ``` kubeadm init --config=kubeadm-init.yaml ```                                                                                                                                                                                                                                                                                                                                                                  |
| 配置kubectl                                  | 要使用 kubectl来 管理集群操作集群，需要做如下配置 ``` mkdir -p $HOME/.kube sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config sudo chown $(id -u):$(id -g) $HOME/.kube/config ``` 测试下，kubectl是否正常，需要注意此时master1的notready状态是正常的，因为尚未部署网络插件 ``` [root@master01] # kubectl get node NAME       STATUS     ROLES    AGE   VERSION master01   NotReady   master   66s   v1.19.2 ``` |
| 添加master02和master03                        | 首先将 master1中的生成的集群共用的ca证书，scp到其他master机器 ``` scp -r  /etc/kubernetes/pki/* master02:/etc/kubernetes/pki/ ``` 将初始化配置文件复制到master2 ``` scp kubeadm-init.yaml master02:/root/ ``` 初始化master2 修改后初始化具体修改内容根据上面的标准文件注释修改 ``` Kubeadm init --config=kubeadm-init.yaml ```                                           |
   
#### 将worker节点加入集群
在master01上生成加入key
```
kubeadm token create --print-join-command
```
在其他worker节点执行
```
ubeadm join master:6443 --token abcdef.0123456789abcdef \
--discovery-token-ca-cert-hash \
sha256:fb4e252253b55974edff65cb4765e9979f8785cd67a6ed41f87c83c6bcc3ac4a
```
#### 将代码打包到git仓库
图1编译好的工程文件通过docker build 进行编译   
![](https://support.huaweicloud.com/nsecp-education/zh-cn_image_0000001785222438.png)
图2通过docker push 将工程文件打包到git仓库   
![](https://support.huaweicloud.com/nsecp-education/zh-cn_image_0000001785382082.png)
#### K8s应用部署
K8s登录后，单击左侧"Deployments"菜单，单击右侧的"+"按钮，可进入到应用添加页面。
图3进入应用添加页面   
![](https://support.huaweicloud.com/nsecp-education/zh-cn_image_0000001832061717.png)
进入到应用添加页面，填入应用名，输入git仓库名称、工作区、端口映射，单击保存，完成应用添加，如下图：
图4应用添加页面   
![](https://support.huaweicloud.com/nsecp-education/zh-cn_image_0000001831941765.png)
