Ansible AWX 部署于k8s集群
github地址:https://github.com/ansible/awx
介绍
新版awx需要awx operator去搭建,官方建议使用minikube去部署awx operater,本人在公司测试环境机器中搭建,因为测试环境的网络代理问题,在搭建完minikube后,虚拟出的主机通过docker连接,若ssh后配置docker代理重启后会遇到集群损坏的问题,且minikube ssh后的主机配置很低,在外部也不好访问到内部的服务,诸多不易,最终选择用Kubeadm搭建一个单节点k8s集群,之后的节点扩容也比较方便。
此篇编写时最新的awx版本是21.4.0, 网上博客教程大多还是以17.1.0甚至更老的版本为主,并且都是使用ansible playbook的形式直接部署,所以决定分享自己的踩坑记录供大家学习,因为搭建过程中的有些问题已经修复不能复现,我会引用一些其他博客的教程并解释,若有任何问题欢迎留言,回复不及时还请海涵!
部署虚拟机
[root@k8s-master qateadmin]# hostnamectl
Static hostname: k8s-master
Icon name: computer-vm
Chassis: vm
Machine ID: 0a10d5ce5ae4446eaaca9f5babc65162
Boot ID: b0903daf3ac14d6084ef575b0b655541
Virtualization: kvm
Operating System: CentOS Linux 7 (Core)
CPE OS Name: cpe:/o:centos:centos:7
Kernel: Linux 3.10.0-957.21.2.el7.x86_64
Architecture: x86-64
虚拟机型号如上,配置要求内存不低于4G,CPU核数2个以上,公司申请的机器配置较高就没有这个顾虑。
环境配置
# 关闭防火墙
systemctl stop firewalld
systemctl disable firewalld
# 关闭selinux
sed -i 's/enforcing/disabled/' /etc/selinux/config # 永久
setenforce 0 # 临时
# 关闭swap
swapoff -a # 临时
sed -ri 's/.*swap.*/#&/' /etc/fstab # 永久
# 根据规划设置主机名
hostnamectl set-hostname <hostname>
# 在master添加hosts
cat >> /etc/hosts << EOF
192.168.178.171 k8s-master
192.168.178.172 k8s-node1
192.168.178.173 k8s-node2
EOF
# 将桥接的IPv4流量传递到iptables的链
cat > /etc/sysctl.d/k8s.conf << EOF
net.bridge.bridge-nf-call-ip6tables = 1
net.bridge.bridge-nf-call-iptables = 1
EOF
sysctl --system # 生效
# 时间同步
yum install ntpdate -y
ntpdate time.windows.com
安装 Docker、kubeadm、kubelet:
docker安装可以用daocloud源直接一键安装或者使用脚本安装最新docker:
curl -fsSL https://get.docker.com | bash -s docker --mirror Aliyun
或
curl -sSL https://get.daocloud.io/docker | sh
这里给出菜鸟教程的手册:https://www.runoob.com/docker/centos-docker-install.html
[root@k8s-master qateadmin]# docker version
Client: Docker Engine - Community
Version: 20.10.17
API version: 1.41
Go version: go1.17.11
Git commit: 100c701
Built: Mon Jun 6 23:05:12 2022
OS/Arch: linux/amd64
Context: default
Experimental: true
配置下载加速器:公司的配置要求,自己主机配置时cgroupdriver=systemd
一定要配置
vim /etc/docker/daemon.json
{
"exec-opts": ["native.cgroupdriver=systemd"],
"insecure-registries": [
"k8s.gcr.io",
"gcr.io",
"quay.io"
],
"registry-mirrors": [
"http://k8s.gcr.io",
"http://gcr.io",
"http://quay.io"
]
}
systemctl restart docker
docker info #查看docker信息,进行确认
在公司测试环境中不仅要配置网络代理,也需要配置docker的网络代理,这个给出配置记得替换url: