一 、Kubernetes 概述
k8s用于自动部署、扩展和管理“容器化(containerized)应用程序”的开源系统,可以理解成 K8S 是负责自动化运维管理多个容器化程序(比如 Docker)的集群,是一个生态极其丰富的容器编排框架工具。
二、K8S特性
1.弹性伸缩
使用命令、UI或者基于CPU使用情况自动快速扩容和缩容应用程序实例,
保证应用业务高峰并发时的高可用性;业务低峰时回收资源,以最小成本运行服务。
2.自我修复
在节点故障时重新启动失败的容器,替换和重新部署,保证预期的副本数量;
杀死健康检査失败的容器,并且在未准备好之前不会处理客户端请求,确保线上服务不中断。
3.服务发现和负载均衡
K8S为多个容器提供一个统一访问入口(内部IP地址和一个DNS名称),并且负载均衡关联的所有容器,
使得用户无需考虑容器IP问题。
4.自动发布(默认滚动发布模式)和回滚
K8S采用滚动更新策略更新应用,一次更新一个或者部分Pod,而不是同时删除所有Pod,
如果更新过程中出现问题,将回滚更改,确保升级不影响业务。
5.集中化配置管理和密钥管理
管理机密数据和应用程序配置,而不需要把敏感数据暴露在镜像里,提高敏感数据安全性。
并可以将一些常用的配置存储在K8S中,方便应用程序使用。
6.存储编排,支持外挂存储并对外挂存储资源进行编排
挂载外部存储系统,无论是来自本地存储,公有云(如AWS),
还是网络存储(如NFS、Glusterfs、Ceph)都作为集群资源的一部分使用,极大提高存储使用灵活性。
7.任务批处理运行
提供一次性任务,定时任务;满足批量数据处理和分析的场景。
三、Kubernetes 核心概念
Kubernetes 包含多种类型的资源对象:Pod、Label、Service、Replication 、Ingress、Controller 等。
1.pod
Pod是K8s能够创建和管理的最小单位,一个Pod里可以包含一个或者多个容器应用,Pod里的容器之间共享网络、存储等资源。
一个 Pod 里可以运行多个容器,又叫边车模式(SideCar)。
而在生产环境中一般都是单个容器或者具有强关联互补的多个容器组成一个 Pod。
同一个 Pod 之间的容器可以通过 localhost 互相访问,并且可以挂载 Pod 内所有的数据卷;
但是不同的 Pod 之间的容器不能用 localhost 访问,也不能挂载其他 Pod 的数据卷。
2.Service
在K8S集群内部,为通过标签选择器相关联的一组Pod提供一个统一的访问入口(clusterIP),只支持四层代理转发。
虚拟IP只在集群内部有效。
3.Ingress
作为K8S集群外部接入层,可自定义ingress规则根据用户请求的域名或URL请求路径转发给指定的service,支持七层代理转发。
#举个例子
客户端请求 http://www.xxx.com:port ---> Ingress ---> Service ---> Pod
四、正式安装K8S-kubeadm方式
一、安装之前准备工作
安装基本软件,关闭防火墙,关闭swap
apt install chrony ipvsadm tree ipset -y
systemctl stop ufw
swapoff -a
sed -i '/swap.img/s/^/#/' /etc/fstab
1.hostname修改
hostnamectl set-hostname 新主机名
hostname #查看域名
2.安装容器引擎containerd
apt update
apt install containerd[