Kubernetes 系统简介
k8s是Kubernetes的简称,因为K和S之间有8个字母,所以才会被称为k8s。
Kubernetes(k8s)是Google开源的容器集群管理系统(内部:Borg),它是一个全新的基于容器技术的分布式架构领先方案。在Docker技术的基础上,为容器化的应用提供部署运行、资源调度、服务发现和动态伸缩等一系列完整功能,提高了大规模容器集群管理的便捷性。
Kubernetes是一个完备的分布式系统支撑平台,具有完备的集群管理能力,多扩多层次的安全防护和准入机制、多租户应用支撑能力、透明的服务注册和发现机制、內建智能负载均衡器、强大的故障发现和自我修复能力、服务滚动升级和在线扩容能力、可扩展的资源自动调度机制以及多粒度的资源配额管理能力。同时Kubernetes提供完善的管理工具,涵盖了包括开发、部署测试、运维监控在内的各个环节。
关于k8s更详细的介绍,可以移步至k8s中文文档或者k8s官方网站 ,以便查看更多资料。
一、Kubernetes 部署方式
Kubernetes(k8s)有以下3种主流安装部署方式:
①Minikube安装
②kubeadm方式安装k8s
③二进制方式部署
Minikube是由Kubernetes社区维护的单机版的Kubernetes集群,支持macOS, Linux, and Windows等多种操作系统平台,使用最新的官方stable版本,并支持Kubernetes的大部分功能,从基础的容器编排管理,到高级特性如负载均衡、Ingress,权限控制等。非常适合作为Kubernetes入门,或开发测试环境使用。但不适合使用在生产环境中,所以在此就不详细赘述。
此篇主要介绍kubeadm方式安装k8s,二级制方式部署另外再专门写篇文章介绍。
二、kubeadm安装kubernetes
1.前期准备
kubernetes版本更新迭代非常快,现在已经更新到v1.20。本篇文章基于kubeadm搭建kubernetes v1.18.8版。
环境准备
机器名称 | 机器配置 | 机器系统 | IP地址 | 角色 |
---|---|---|---|---|
master1 | 2C4G | CentOS7.6 | 172.16.55.201 | 主节点 |
node1 | 2C4G | CentOS7.6 | 172.16.55.202 | 工作节点1 |
node2 | 2C4G | CentOS7.6 | 172.16.55.203 | 工作节点1 |
说明:
master采用单节点,多master高可用集群搭建后面文章再介绍。
硬件配置要求:2C2G +;
操作系统要求:CentOS7 +
防火墙说明:如果使用的是云厂商的虚拟机,主节点安全组需放行tcp端口6443、2379-2380、10250-12025,工作节点安全组需放行tcp端口:10250、30000-32767
2.正式开始部署安装
2.1 更换yum源
mv /etc/yum.repos.d/CentOS-Base.repo /etc/yum.repos.d/CentOS-Base.repo.backup
wget -O /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-7.repo
yum clean all
yum makecache
2.2 关闭防火墙和selinux及交换分区
[root@master1 ~]# systemctl stop firewalld
[root@master1 ~]# setenforce 0
[root@master1 ~]# sed -i 's/^SELINUX=.*/SELINUX=disabled/' /etc/selinux/config
[root@master1 ~]# swapoff -a
#永久关闭,修改/etc/fstab,注释掉swap一行
2.3 修改hosts文件
[root@master1 ~]# cat >> /etc/hosts << EOF
172.16.55.201 master1
172.16.55.202 node1
172.16.55.203 node2
EOF
2.4 时间同步
[root@master1 ~]# yum install chrony -y
[root@master1 ~]# systemctl start chronyd
[root@master1 ~]# systemctl enable chronyd
[root@master1 ~]# chronyc sources
2.5 修改内核参数
让iptables能查看桥接流量
[root@master1 ~]# cat > /etc/sysctl.d/k8s.conf << EOF
net.ipv4.ip_forward = 1
net.bridge.bridge-nf-call-ip6tables = 1
net.bridge.bridge-nf-call-iptables = 1
EOF
[root@master1 ~]# sysctl --system
2.6 加载ipvs模块
[root@master1 ~]# modprobe -- ip_vs
[root@master1 ~]# modprobe -- ip_vs_rr
[root@master1 ~]# modprobe -- ip_vs_wrr
[root@master1 ~]# modprobe -- ip_vs_sh
[root@master1 ~]# modprobe -- nf_conntrack_ipv4
[root@master1 ~]# lsmod | grep ip_vs
[root@master1 ~]# lsmod | grep nf_conntrack_ipv4
[root@master1 ~]# yum install -y ipvsadm
2.7 安装并配置docker
3.7.1 修改docker的yum源为阿里源
[root@master1 ~]# wget https://mirrors.aliyun.com/docker-ce/linux/centos/d