本文是向大家分享k8s相关组件及1.16版本的安装部署,它能够让大家初步了解k8s核心组件的原理及k8s的相关优势,有兴趣的同学可以部署安装下。
什么是kubernetes
主要功能包括:
kubernetes特点:
kubernetes 核心组件:
1. master组件
2.Node 组件
1、部署环境说明
本文通过kubeadm搭建一个高可用的k8s集群,kubeadm可以帮助我们快速的搭建k8s集群,高可用主要体现在对master节点组件及etcd存储的高可用,文中使用到的服务器ip及角色对应如下:
版本号: v1.16.3
2、集群架构及部署准备工作
2.1、集群架构说明
高可用主要体现在master相关组件及etcd,master中apiserver是集群的入口,搭建三个master通过keepalived提供一个vip实现高可用,并且添加haproxy来为apiserver提供反向代理的作用,这样来自haproxy的所有请求都将轮询转发到后端的master节点上。如果仅仅使用keepalived,当集群正常工作时,所有流量还是会到具有vip的那台master上,因此加上了haproxy使整个集群的master都能参与进来,集群的健壮性更强。对应架构图如下所示:
2.2、修改hosts及hostname
所有节点修改主机名和hosts文件,文件内容如下
172.30.66.222 master.k8s.io k8s-vip 172.30.66.190 master01.k8s.io k8s-master-01 172.30.66.191 master02.k8s.io k8s-master-02 172.30.66.192 master03.k8s.io k8s-master-03 172.30.66.193 node01.k8s.io k8s-node-01 172.30.66.194 node02.k8s.io k8s-node-02 172.30.66.195 node03.k8s.io k8s-node-03
2.3、其他准备
所有节点操作
· 主机时间同步时间同步可以通过chrony或者ntp来实现,这里不再赘述
· 关闭防火墙关闭centos7自带的firewalld防火墙服务
· 关闭selinux
· 禁用swap kubeadm会检查当前主机是否禁用了swap,如果启动了swap将导致安装不能正常进行,所以需要禁用所有的swap。
# 临时关闭 # swapoff -a && sysctl -w vm.swappiness=0 # 永久关闭,在文件中添加注释 # vim /etc/fstab ... UUID=7bf41652-e6e9-415c-8dd9-e112641b220e /boot xfs defaults 00 #/dev/mapper/centos-swap swap swap defaults 00 # 或者利用sed命令完事儿 # sed -ri '/^[^#]*swap/s@^@#@'/etc/fstab
· 设置系统其它参数
开启路由转发
vim /etc/sysctl.d/k8s.conf net.ipv4.ip_forward =1 net.bridge.bridge-nf-call-ip6tables =1 net.bridge.bridge-nf-call-iptables =1 # modprobe br_netfilter # sysctl -p /etc/sysctl.d/k8s.conf net.ipv4.ip_forward =1 net.bridge.bridge-nf-call-ip6tables =1 net.bridge.bridge-nf-call-iptables =1
设置资源配置文件
# echo "* soft nofile 65536">>/etc/security/limits.conf # echo "* hard nofile 65536">>/etc/security/limits.conf # echo "* soft nproc 65536" >>/etc/security/limits.conf # echo "* hard nproc 65536" >>/etc/security/limits.conf # echo "* soft memlock unlimited" >>/etc/security/limits.conf # echo "* hard memlock unlimited" >>/etc/security/limits.conf
· 安装相关包
# yum install -y conntrack-tools libseccomp libtool-ltdl
3、部署keepalived
在三台master操作
3.1、安装
# yum install -y keepalived
3.2、配置
默认的keepalived配置较复杂,这里用更为简明的方式进行配置,另外的两台master配置和上面类似,只需要修改对应的state配置为BACKUP,priority权重值不同即可,配置中的其他字段这里不做说明。
k8s-master-01的配置:
cat >/etc/keepalived/keepalived.conf <k8s-master-02的配置:
cat >/etc/keepalived/keepalived.conf <k8s-master-03的配置:
cat >/etc/keepalived/keepalived.conf <3.3、启动和检查
在三台master节点都启动服务
# 设置开机启动 # systemctl enable keepalived.service # 启动keepalived # systemctl start keepalived.service # 查看启动状态 # systemctl status keepalived.service 启动后查看k8s-master-01的网卡信息 [root@k8s-master-01~]# ip a s ens160 2: ens160:mtu 1500 qdisc mq state UP qlen 1000 link/ether 00:50:56:b7:2c:71 brd ff:ff:ff:ff:ff:ff inet 172.30.66.190/24 brd 172.30.66.255 scope global ens160 valid_lft forever preferred_lft forever inet 172.30.66.222/32 scope global ens160 valid_lft forever preferred_lft forever inet6 fe80::923a:1078:ee79:b965/64 scope link valid_lft forever preferred_lft forever inet6 尝试停掉k8s-master-01的keepalived服务,查看vip是否能漂移到其他的master,并且重新启动k8s-master-01的keepalived服务,查看vip是否能正常漂移回来,证明配置没有问题。
4、部署haproxy
在三台master操作
4.1、安装
# yum install -y haproxy4.2、配置
三台master节点的配置均相同,配置中声明了后端代理的三个master节点服务器,指定了haproxy运行的端口为16443等,因此16443端口为集群的入口,其他的配置不做赘述。
cat >/etc/haproxy/haproxy.cfg <