一、概述
在安装k8s前需要一系列的前置准备工作,并且集群化所有节点服务器都需要做同样的操作,工作麻烦,使用ansible-playbook可以流程化这些前置工作。安装k8s可以参考Rancher部署k8s集群
二、环境
三、实现逻辑
安装k8s前准备工作:
升级Linux内核—>时间同步—>hostname主机名设置—>etc/hosts文件配置—>关闭防火墙firewalld—>关闭selinux—>关闭swap—>安装docker
使用ansible-playbook进行流程化管理这些流程,一体化部署实施
文件结构目录:
实现流程:
四、代码
k8s.yml
---
- hosts: k8s
remote_user: root
tasks:
- name: ”升级Linux内核“
script: updateLinuxcore.sh
- name: “查看内核启动顺序”
shell: awk -F\' '$1=="menuentry " {print $2}' /etc/grub2.cfg
register: viewLinuxCore_out
- debug:
var: viewLinuxCore_out.stdout_lines
- name: “时间同步ntp”
script: installntp.sh
- name: “查看ntpd状态”
shell: systemctl status ntpd
register: ntpStatus_out
- debug:
var: ntpStatus_out.stdout_lines
- name: “修改主机名”
shell: hostnamectl set-hostname {{ hostname|quote }}
tags: sethostname
- name: “查看主机名”
shell: hostname
register: hostname_out
- debug:
var: hostname_out.stdout_lines
- name: “修改 /etc/hosts”
copy: src=/etc/hosts dest=/etc/hosts
tags: sethosts
- name: "关闭防火墙"
systemd:
name: firewalld
state: stopped
enabled: no
tags: stopfirewalld
- name: "关闭selinux"
shell: setenforce 0 && sed -i 's/^SELINUX=.*/SELINUX=disabled/' /etc/selinux/config
tags: stopselinux
- name: "关闭swap"
lineinfile:
dest: /etc/fstab
regexp: '^swap'
insertafter: '^swap'
line: '#'
tags: closeswap
- name: "安装docker"
script: installdocker.sh
- name: "安装完成,进行重启"
reboot:
reboot_timeout: 3000
updateLinuxcore.sh
#! /bin/bash
#导入ELRepo仓库的公钥
rpm --import https://www.elrepo.org/RPM-GPG-KEY-elrepo.org
#为yum安装ELRepo仓库
rpm -Uvh http://www.elrepo.org/elrepo-release-7.0-3.el7.elrepo.noarch.rpm
#查看可用版本
yum --disablerepo="*" --enablerepo="elrepo-kernel" list available
#安装最新内核
yum --enablerepo=elrepo-kernel -y install kernel-ml
# 查看当前可用内核
#sudo awk -F\' '$1=="menuentry " {print i++ " : " $2}' /etc/grub2.cfg
#升级
grub2-set-default 0
installntp.sh
#! /bin/bash
#查看系统时间
timedatectl
#设置北京时间
timedatectl set-timezone Asia/Shanghai
#安装ntp服务
yum install -y ntp
echo -e 'SYNC_HWCLOCK=yes\nOPTIONS="-g -x"'> /etc/sysconfig/ntpd
#启动ntp服务,开机自启动
systemctl restart ntpd && systemctl enable ntpd
installdocker.sh
#! /bin/bash
yum install -y yum-utils
# 添加yum源,这里添加的是阿里云的yum源
yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
yum -y install docker
# 设置国内镜像加速,你也可以用自己的仓库镜像,这里是我申请的阿里云个人加速镜像
mkdir -p /etc/docker
tee /etc/docker/daemon.json <<-'EOF'
{
"registry-mirrors": ["https://fuchp8pk.mirror.aliyuncs.com"]
}
EOF
# 导入镜像设置
systemctl daemon-reload
# 启动docker
systemctl restart docker
# 设置docker开机启动
systemctl enable docker
五、总结
ansible工具对于这种繁琐工作实现起来很便捷,使用yaml文件使流程文件化,可以进行复制操作,下面几个shell脚本很简单,自行复制后可以优化流程,添加判断,让整体流程可以反复执行操作,k8s.yml文件还可以添加when判断进行优化。