ansible安装kubernetes集群(k8s)

1.确认系统上已经有了2.7版本python

# 作者所用的系统环境:
 CentOS Linux release 7.6.1810 (Core)
 Linux version 3.10.0-957.12.2.el7.x86_64 
#一般CentOS系统上都会自带2.7版本python
 python -V

2.将文件夹中的所有内容复制到服务器

资源包下载地址:

https://download.csdn.net/download/hehj369986957/12706752

需要使用Root用户上传到离线服务器的自定义目录

ps:本项目中使用到了K8s部署的开源ansible剧本项目easzlab/kubeasz。该项目只包含了ansible剧本以及K8S和docker的离线包,其余离线包均由作者自行整理。

3.安装pip

 #有的操作系统是有pip的,而有的系统没有,可以看看找不到找得到pip命令
 #解压pip压缩包
 tar zvxf pip-20.1.1.tar.gz
 #切换到解压后的文件夹
 cd pip-20.1.1
 #安装pip
 python setup.py install

4.安装ipython

 #解压
 tar zvxf ipython-0.10.tar.gz
 #切换到解压后的文件夹
 cd ipython-0.10
 #安装
 python setup.py install

5.安装netaddr中的所有tar包和whl

 #安装所有whl
 pip install *.whl
 #解压每个压缩包并安装
 tar zvxf Cheetah-2.4.4.tar.gz
 cd Cheetah-2.4.4
 python setup.py install
 ​
 tar zvxf ipaddr-2.2.0.tar.gz
 cd ipaddr-2.2.0
 python setup.py install
 ​
 tar zvxf MarkupSafe-1.1.1.tar.gz
 cd MarkupSafe-1.1.1
 python setup.py install
 ​
 tar zvxf oauth-1.0.1.tar.gz
 cd oauth-1.0.1
 python setup.py install
 ​
 tar zvxf prettytable-0.7.2.tar.gz
 cd prettytable-0.7.2
 python setup.py install
 ​
 tar zvxf PyYAML-5.1.1.tar.gz
 cd PyYAML-5.1.1
 python setup.py install
 ​
 tar zvxf scandir-1.10.0.tar.gz
 cd scandir-1.10.0
 python setup.py install
 ​
 #安装完以后需要使用netaddr命令验证下
 [root@iZ2zeapu1bn3mei5byvasrZ ~]# netaddr
 netaddr shell 0.7.20 - an interactive shell for the netaddr library
 In [1]: 
 # 显示如上则安装成功,输入exit()退出即可

6.安装ansible

 #解压安装包
 tar zxf ansible-2.4-rpms.el7.tar.gz
 #进入解压后的目录
 cd ansible-2.4-rpms.el7
 #安装ansible依赖内容
 rpm -ivh PyYAML*rpm libyaml*rpm python-babel*rpm python-backports*rpm python-backports-ssl_match_hostname*rpm python-cffi*rpm python-enum34*rpm python-httplib2*rpm python-idna*rpm python-ipaddress*rpm python-jinja2*rpm python-markupsafe*rpm python-paramiko*rpm python-passlib*rpm python-ply*rpm python-pycparser*rpm python-setuptools*rpm python-six*rpm python2-cryptography*rpm python2-jmespath*rpm python2-pyasn1*rpm sshpass*rpm --nodeps --force
 #安装ansible
 rpm -ivh ansible-2.4.2.0-2.el7.noarch.rpm
 #测试是否安装成功
 ansible --version

7.将etc/ansible文件夹复制到服务器的/etc/路径下

#该文件夹中包含了k8s和docker离线包。 
cp -r etc/ansible /etc/

8.修改hosts配置文件

在这里作者所部署的K8S环境为单主节点集群,如果需要部署高可用集群将配置文件中的[kube-master]配置多个按照本文操作顺序正常运行即可。

 # 将etc中的hosts复制到配置文件目录:
 cd /etc/ansible && cp example/hosts.multi-node hosts
 # 修改文件内容
 vim /etc/ansible/hosts
 #[必须配置]etcd集群主机的ip+端口,为单数个
 [etcd]
 192.168.1.1:19222 NODE_NAME=etcd1
 ​
 # [必须配置]主节点的IP和端口
 [kube-master]
 192.168.1.1:19222
 ​
 # [必须配置]工作节点的IP和端口
 [kube-node]
192.168.1.3:19222
192.168.1.4:19222
192.168.1.5:19222
 ​
 # [可选项] 私人镜像仓库的配置
 # NEW_INSTALL yes为安装新的harbor服务器,false 为使用另外的harbor服务器,
 [harbor]
 #192.168.1.8 HARBOR_DOMAIN="harbor.yourdomain.com" NEW_INSTALL=no SELF_SIGNED_CERT=yes
 ​
 # [可选项] 从外部访问k8s的负载平衡配置
 [ex-lb]
 #192.168.1.6 LB_ROLE=backup EX_APISERVER_VIP=192.168.1.250 EX_APISERVER_PORT=8443
 #192.168.1.7 LB_ROLE=master EX_APISERVER_VIP=192.168.1.250 EX_APISERVER_PORT=8443
 ​
 # [可选项] 集群的ntp服务器
 [chrony]
 #192.168.1.1
 ​
 [all:vars]
 # --------- Main Variables ---------------
 # 支持集群运行的容器:docker, containerd
 CONTAINER_RUNTIME="docker"
 ​
 # 支持的网络插件: calico, flannel, kube-router, cilium, kube-ovn
 CLUSTER_NETWORK="calico"
 ​
 #kube-proxy的服务代理模式: 'iptables' or 'ipvs'
 PROXY_MODE="ipvs"
 ​
 # K8S服务CIDR,不与节点(主机)联网重叠
 SERVICE_CIDR="10.68.0.0/16"
 ​
 # 集群CIDR(Pod CIDR),不与节点(主机)网络重叠
 CLUSTER_CIDR="172.20.0.0/16"
 ​
 # 节点端口范围
 NODE_PORT_RANGE="20000-40000"
 ​
 # 集群的DNS域
 CLUSTER_DNS_DOMAIN="cluster.local."
 ​
 # -------- 其他变量,建议不修改 ---
 # 二进制目录
 bin_dir="/opt/kube/bin"
 ​
 # CA和其他组件cert/key目录
 ca_dir="/etc/kubernetes/ssl"
 ​
 # 部署目录(kubeasz workspace)
 base_dir="/etc/ansible"

9.配置ssh

将ansible控制节点的公钥放到所有出现在ansible配置文件的的节点的/root/.ssh/authorized_keys文件内

 # 查看公钥
 cat .ssh/id_rsa.pub
 # 如果没有的话生成公钥,输入完命令一直回车即可
 ssh-keygen -t rsa
 # 复制公钥粘贴到authorized_keys文件
 vim /root/.ssh/authorized_keys
 # 运行ansible all -m ping测试是否添加成功
 ansible all -m ping
 192.168.1.1 | SUCCESS => {
     "changed": false, 
     "ping": "pong"
 }
 192.168.1.3 | SUCCESS => {
     "changed": false, 
     "ping": "pong"
 }
 192.168.1.4 | SUCCESS => {
     "changed": false, 
     "ping": "pong"
 }
 192.168.1.5 | SUCCESS => {
     "changed": false, 
     "ping": "pong"
 }
 # 显示如上结果为ansible成功

10.整理安装包并运行容器

 #配置easzup的版本号
 export release=2.2.1
 # 离线安装K8s/docker,检查本地文件,正常会提示所有文件已经下载完成
 ./easzup -D
 # 这里笔者使用的k8s 版本 v1.18.2,docker 19.03.8
 # 如需要其他版本可复制easzup到可联网机器上执行以下命令
 #./easzup -D -d 19.03.5 -k v1.18.2
 # 下载离线系统软件包
 #./easzup -P
 #下载完成后复制/etc/ansible的文件到离线机器的/etc/ansible路径即可继续以下操作。
 # 启动 kubeasz 容器
 ./easzup -S
 # 设置参数允许离线安装
 sed -i 's/^INSTALL_SOURCE.*$/INSTALL_SOURCE: "offline"/g' /etc/ansible/roles/chrony/defaults/main.yml
 sed -i 's/^INSTALL_SOURCE.*$/INSTALL_SOURCE: "offline"/g' /etc/ansible/roles/ex-lb/defaults/main.yml
 sed -i 's/^INSTALL_SOURCE.*$/INSTALL_SOURCE: "offline"/g' /etc/ansible/roles/kube-node/defaults/main.yml
 sed -i 's/^INSTALL_SOURCE.*$/INSTALL_SOURCE: "offline"/g' /etc/ansible/roles/prepare/defaults/main.yml

11.准备工作全部完成,执行安装

 #切换到/etc/ansible路径下(也可以不切,注意命令路径即可)
 cd /etc/ansible
 #执行angsible剧本:
 ansible-playbook 01.prepare.yml
 ansible-playbook 02.etcd.yml
 ansible-playbook 03.docker.yml
 ansible-playbook 04.kube-master.yml
 ansible-playbook 05.kube-node.yml
 ansible-playbook 06.network.yml
 ansible-playbook 07.cluster-addon.yml

步骤01.prepare.yml主要完成 创建证书和环境准备

步骤02.etcd.yml主要完成 安装etcd集群

步骤03.docker.yml主要完成 安装docker服务

步骤 04.kube-master.yml主要完成 安装kube-master节点

步骤 05.kube-node.yml主要完成 安装kube-node节点

步骤 06.network.yml主要完成 安装网络组件

步骤 07.cluster-addon.yml主要完成 安装集群主要插件

12.验证安装

 # 验证集群版本   
 kubectl version 
 # 验证节点就绪 (Ready) 状态
 kubectl get node  
 # 验证集群pod状态,默认已安装网络插件、coredns、metrics-server等     
 kubectl get pod -A  
 # 验证集群服务状态    
 kubectl get svc -A 

你可能感兴趣的:(k8s)