Kubernetes 最新版本安装部署
介绍
Kubernetes(k8s)
Kubernetes是一个开源的容器编排管理系统,主要功能包括:
- 应用部署
k8s可以快速部署容器化的应用和服务,通过编写YAML格式的配置文件定义部署状态,包括副本数、网络配置、存储等。主要对象类型有:
- Deployment:部署无状态应用
- StatefulSet:部署有状态应用
- DaemonSet:在集群每台机器上运行一个Pod
- Job/CronJob:运行批处理任务
- 服务发现和负载均衡
k8s通过Service资源把一组Pod暴露成一个统一的入口,并提供负载均衡。Service可以给Pod提供固定IP和DNS名称,客户端只需要访问Service就可以流量分发到后端Pod。
常用的Service类型有ClusterIP、NodePort、LoadBalancer。
- 水平扩展/缩减
可以通过更改Deployment的副本数来实现应用扩缩容,k8s会准确控制Pod数目。HPA可以根据CPU使用率自动扩缩容。
- 滚动更新
Deployment支持自动的滚动更新,可以编辑Pod模板来更新镜像版本,k8s以控制台的速率替换旧版本Pod。
- 存储编排
可以用PersistentVolume(PV)和PersistentVolumeClaim(PVC)提供存储卷给Pod挂载,实现状态存储。并支持多种存储系统,如本地、网络存储。
- 配置管理
ConfigMap用于保存配置数据,Pod可以将其挂载为文件或环境变量。Secret可以保存敏感信息。
- 调度
k8s会根据资源使用情况、硬件亲和性、抗亲和性等调度Pod到集群节点。
- 自我修复
k8s会重启或重调度故障的容器,还可以用ReplicaSet确保副本数目,实现高可用。
- 日志与监控
k8s提供日志收集、指标收集等功能,可以集成到监控系统。
主要组件包括kube-apiserver、kube-controller-manager、kube-scheduler、kubelet、kube-proxy等。
Kubernetes版本与推荐Docker版本的对应表(2022年12月)
Kubernetes版本 | Docker版本 |
---|---|
1.24 - 1.25 | 20.10+ |
1.23 | 20.10+ |
1.22 | 20.10+ |
1.21 | 19.03+ |
1.20 | 19.03+ |
1.19 | 18.09+ |
1.18 | 18.09+ |
1.17 | 18.06+ |
1.16 | 18.06+ |
1.15 | 18.06+ |
1.14 | 18.06+ |
1.13 | 17.03+ |
1.12 | 17.03+ |
1.11 | 1.13+ |
1.10 | 1.13+ |
几点说明:
-
Kubernetes 1.24+ 版本已经去除了对Docker的直接接口支持,需要通过containerd + docker CRI使用Docker。
-
对于老版本Kubernetes,需要Docker版本不低于对应版本才能保证功能和稳定性。
-
Docker 18.09版本加入了对Kubernetes CRI的支持。
-
最低支持的Docker版本随Kubernetes版本的升级而不断提高。
-
一般建议使用最新稳定版本的Docker,可以获得更完备的特性和兼容性。
所以在部署Kubernetes集群时,需要注意配置正确版本的Docker或者containerd运行时。
Kubernetes最新版本(v1.24+)移除了对Docker作为容器运行时的原生支持,但这并不意味着完全不支持Docker。
-
Kubernetes仍然支持使用Docker镜像。所有现有的Docker镜像可以直接用在k8s集群中,不需要修改。
-
Kubernetes已经全面拥抱容器运行时接口(CRI)。最新版本的kubelet将通过CRI管理容器,而不是直接通过Docker API。
-
用户可以继续使用Docker作为CRI运行时。只需要安装并配置Docker的CRI插件,即docker-containerd插件,kubelet就可以通过CRI控制Docker。
-
推荐的容器运行时是containerd。它功能丰富,性能好,资源消耗少。docker-containerd确保它可以与Docker镜像兼容。
-
切换到containerd后,节点上仍可以同时运行Docker引擎,用于构建镜像等场景。
-
Kubernetes移除Docker的依赖可以使其支持更多类型的容器运行时,提高其可移植性。
最新k8s版本只是去掉了直接通过Docker API管理容器的方式,但通过添加CRI层,用户仍可以继续使用Docker及其镜像。这带来更多可选择性及未来兼容性。
k8s组件包括Kube-apiserver、kube-scheduler、kube-controller-manager、kubelet、kube-proxy等。使用k8s能够进行自动化容器部署、弹性伸缩、应用监控等,从而减轻干系人员的运维工作量。
内核版本要求
-
Kubernetes 1.23+ 需要内核3.10.0-1160及以上,否则无法安装和运行。
-
这是因为最新的Kubernetes启用了新的内核特性,需要相应版本的内核支持。
-
对于CentOS 7,其默认内核版本为3.10.x,比较老旧,无法满足新版本Kubernetes的需求。
##所有主机操作
Kubernetes集群环境准备
IP | docker version | cri-dockerd | k8s(Kubernetes) | 内核 | centos | CPU/内存 | hostname |
---|---|---|---|---|---|---|---|
192.168.9.9 | 24.0.5 | v0.3.4 | v1.28.0 | 6.4.11-1.el7.elrepo.x86_64 | 7.9 | 2 核 / 4GB | master |
192.168.9.99 | 24.0.5 | v0.3.4 | v1.28.0 | 6.4.11-1.el7.elrepo.x86_64 | 7.9 | 2 核 / 4GB | node1 |
- 至少2台CentOS 7以上服务器,一主多从,主要用于运行master和node组件。
#集群中所有主机设置主机名
#并添加到/etc/hosts里
192.168.9.9:
hostnamectl set-hostname master
bash
#vim /etc/hosts
192.168.9.9 master
192.168.9.99 node1
---
#192.168.9.99:
hostnamectl set-hostname node1
bash
#vim /etc/hosts
192.168.9.9 master
192.168.9.99 node1
#集群中的所有主机做ssh互信
ssh-keygen -t rsa
for i in 192.168.9.9 192.168.9.99 ; do ssh-copy-id $i; done
关闭swap
临时加永久
临时
swapoff -a
永久
vim进入fstab把这行加井号注释掉
vim /etc/fstab
#/dev/mapper/centos-swap swap swap defaults 0 0
关闭防火墙 Selinux
#临时加永久
systemctl st