Kubernetes 1.15 安装及组件关系(前期准备工作篇)

一年好景君须记,最是橙黄橘绿时。这篇文章主要讲述Kubernetes 1.15 安装及组件关系(前期准备工作篇)相关的知识,希望能为你提供帮助。


本文按照常见k8s架构图来梳理操作过程,因为现在k8s都已经1.2x版本了,老的技术藏着掖着也没什么用了,故清理磁盘灰尘的时候顺便发到网上,本文篇幅较长可能会写几万字,涉及1.15版本安装、组件说明,一键安装、1.15升级1.19过程与问题、1.19版本安装、组件说明,与1.15版本区别、1.19版本维护、1.2x版本(这个版本还是比较新的,我作为压箱底技术等1.3x版本后再发1.2x版本的的维护)。
下边一张图已经说明了我要干什么了。接下来一点一点走吧!

【Kubernetes 1.15 安装及组件关系(前期准备工作篇)】需要5~6台服务器配置2C4G内存机器即可因后边会结合监控去做,提前打出资源富余量,
本文采用3master 2node方式进行集群部署,生产环境可保留3master 对node进行扩展即可。

192.168.91.11
nginx
192.168.91.18
master-1
192.168.91.19
master-2
192.168.91.20
master-3
192.168.91.21
node-1
192.168.91.22
node-2
1、系统初始化
1.1 初始化工具安装
#所有节点
[root@master-1 ~]# yum install net-tools vim wget lrzsz git -y

1.2 关闭防火墙与Selinux
#所有节点
[root@master-1 ~]# systemctl stop firewalld
[root@master-1 ~]# systemctl disable firewalld
[root@master-1 ~]# sed -i "s/SELINUX=enforcing/SELINUX=disabled/g" /etc/selinux/config
[root@master-1 ~]# reboot

1.3设置时区
#所有节点
[root@master-1 ~]# \\cp /usr/share/zoneinfo/Asia/Shanghai /etc/localtime -rf

1.4关闭交换分区
#所有节点
[root@master-1 ~]# swapoff -a
[root@master-1 ~]# sed -i / swap / s/^\\(.*\\)$/#\\1/g /etc/fstab

1.5设置系统时间同步
#所有节点
[root@master-1 ~]# yum install -y ntpdate
[root@master-1 ~]# ntpdate -u ntp.api.bz
[root@master-1 ~]# echo "*/5 * * * * ntpdate time7.aliyun.com > /dev/null 2> & 1" > > /etc/crontab
[root@master-1 ~]# service crond restart
[root@master-1 ~]# chkconfig crond on
hostnamectl set-hostname master-1

1.6 设置主机名
#所有节点
[root@master-1 ~]# cat > /etc/hosts < < EOF
127.0.0.1localhost localhost.localdomain localhost4 localhost4.localdomain4
::1localhost localhost.localdomain localhost6 localhost6.localdomain6
192.168.91.18master-1
192.168.91.19master-2
192.168.91.20master-3
192.168.91.21node-1
192.168.91.22node-2
EOF

1.7 设置免密码登录
#从任意Master节点分发配置到其他所有的节点(包括其他的Master与Node)
#本例中从master-1分发
[root@master-1 ~]# yum install -y expect
[root@master-1 ~]# ssh-keygen -t rsa -P "" -f /root/.ssh/id_rsa

#密码更换
[root@master-1 ~]# export mypass=123456s
[root@master-1 ~]# name=(master-1 master-2 master-3 node-1 node-2)
[root@master-1 ~]# for i in $name[@]; do
expect -c "
spawn ssh-copy-id -i /root/.ssh/id_rsa.pub root@$i
expect
\\"*yes/no*\\" send \\"yes\\r\\"; exp_continue
\\"*password*\\" send \\"$mypass\\r\\"; exp_continue
\\"*Password*\\" send \\"$mypass\\r\\";
"
done

#连接测试
[root@master-1 ~]#ssh master-2

1.8 优化内核参数
#所有节点
cat > > /etc/sysctl.conf< < EOF
net.bridge.bridge-nf-call-iptables=1
net.bridge.bridge-nf-call-ip6tables=1
net.ipv4.ip_forward=1
vm.swappiness=0
fs.file-max=52706963
fs.nr_open=52706963
EOF

#应用内核配置
modprobe br_netfilter
sysctl -p

1.9 高可用节点安装Keepalived(注:如果采用的是云主机到此基础配置篇结束)
#192.168.91.18/19两台机器
[root@master-1 ~]# yum install -y keepalived

#注意修改网卡地址与SLAVE节点的优先级
[root@master-1 ~]# cat > /etc/keepalived/keepalived.conf < < EOL
global_defs
router_id KUB_LVS

vrrp_script CheckMaster
script "curl -k https://192.168.91.254:6443"
interval 3
timeout 9
fall 2
rise 2

vrrp_instance VI_1
state MASTER
interface ens32
virtual_router_id 61
priority 100
advert_int 1
nopreempt
authentication
auth_type PASS
auth_pass 111111

virtual_ipaddress
192.168.91.254/24 dev ens32

track_script
CheckMaster


EOL

#SLAVE
#修改state为slave, priority 为 90
1.9.2启动keepalived
[root@master-1 ~]# systemctl enable keepalived & & systemctl restart keepalived
[root@master-1 ~]# service keepalived status

1.10安装Nginx
#192.168.91.11机器(在任意服务器部署即可)
#添加版本库
[root@harbor ~]# vim /etc/yum.repos.d/nginx.repo
[nginx]
name=nginx repo
baseurl=http://nginx.org/packages/centos/7/x86_64/
gpgcheck=0
enabled=1

#安装
[root@harbor ~]# yum install nginx-1.12.2 -y

#删除默认页面
[root@harbor harbor]# rm /etc/nginx/conf.d/default.conf -rf

#编辑配置文件
[root@harbor harbor]# vim /etc/nginx/nginx.conf

#最后添加 http之外
stream
log_formatmain$remote_addr $upstream_addr - [$time_local] $status $upstream_bytes_sent;
access_log/var/log/nginx/access.logmain;
upstream apiserver
server 192.168.91.18:6443;
server 192.168.91.19:6443;
server 192.168.91.20:6443;

server
listen 192.168.91.254:6443;
proxy_connect_timeout 1s;
proxy_timeout 2s;
proxy_pass apiserver;


#启动服务
[root@harbor harbor]# chkconfig nginx on
[root@harbor harbor]# service nginx start

至此准备篇完成,明天找时间吧,更新第二部分证书安装篇。

    推荐阅读