k8s(Kubernetes)最新版安装部署

Kubernetes 最新版本安装部署


介绍

Kubernetes(k8s)

Kubernetes是一个开源的容器编排管理系统,主要功能包括:

  1. 应用部署

k8s可以快速部署容器化的应用和服务,通过编写YAML格式的配置文件定义部署状态,包括副本数、网络配置、存储等。主要对象类型有:

  • Deployment:部署无状态应用
  • StatefulSet:部署有状态应用
  • DaemonSet:在集群每台机器上运行一个Pod
  • Job/CronJob:运行批处理任务
  1. 服务发现和负载均衡

k8s通过Service资源把一组Pod暴露成一个统一的入口,并提供负载均衡。Service可以给Pod提供固定IP和DNS名称,客户端只需要访问Service就可以流量分发到后端Pod。

常用的Service类型有ClusterIP、NodePort、LoadBalancer。

  1. 水平扩展/缩减

可以通过更改Deployment的副本数来实现应用扩缩容,k8s会准确控制Pod数目。HPA可以根据CPU使用率自动扩缩容。

  1. 滚动更新

Deployment支持自动的滚动更新,可以编辑Pod模板来更新镜像版本,k8s以控制台的速率替换旧版本Pod。

  1. 存储编排

可以用PersistentVolume(PV)和PersistentVolumeClaim(PVC)提供存储卷给Pod挂载,实现状态存储。并支持多种存储系统,如本地、网络存储。

  1. 配置管理

ConfigMap用于保存配置数据,Pod可以将其挂载为文件或环境变量。Secret可以保存敏感信息。

  1. 调度

k8s会根据资源使用情况、硬件亲和性、抗亲和性等调度Pod到集群节点。

  1. 自我修复

k8s会重启或重调度故障的容器,还可以用ReplicaSet确保副本数目,实现高可用。

  1. 日志与监控

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
### Kubernetes 最新版安装部署指南 为了提供关于 Kubernetes 最新版本的安装部署指南,以下是详细的说明: #### 安装前准备 在开始之前,请确保满足以下条件: - 已经安装并配置好 `kubectl` 命令行工具[^1]。 - 集群环境已准备好,并能够通过 `kubectl` 访问集群。 #### 下载 Kubernetes 安装包 可以通过官方文档获取最新的 Kubernetes 版本信息以及下载链接。通常情况下,可以从 Kubernetes 的 GitHub 发布页面找到最新稳定版的二进制文件或 Helm Chart 文件[^5]。 ```bash curl -LO "https://dl.k8s.io/release/$(curl -L -s https://dl.k8s.io/release/stable.txt)/bin/linux/amd64/kubectl" chmod +x ./kubectl sudo mv ./kubectl /usr/local/bin/kubectl ``` 上述命令会自动检测并下载当前最新的 Kubernetes CLI (`kubectl`) 并完成安装。 #### 创建和初始化 Kubernetes 集群 对于本地开发测试或者小型生产环境,可以使用 Minikube 或 Kind 来快速创建单节点 Kubernetes 集群。如果需要完整的多节点高可用集群,则需手动设置 Master 和 Worker 节点。 ##### 使用 kubeadm 初始化集群 这是推荐的方式之一来构建生产级别的 Kubernetes 集群。执行如下操作即可启动初始阶段的工作流程: ```bash sudo swapoff -a # 如果启用了交换分区则先关闭它 sudo apt-get update && sudo apt-get install -y apt-transport-https curl curl -s https://packages.cloud.google.com/apt/doc/apt-key.gpg | sudo apt-key add - echo "deb http://apt.kubernetes.io/ kubernetes-xenial main" | sudo tee /etc/apt/sources.list.d/kubernetes.list sudo apt-get update sudo apt-get install -y kubelet kubeadm kubectl sudo apt-mark hold kubelet kubeadm kubectl # 初始化 master 节点 sudo kubeadm init --pod-network-cidr=10.244.0.0/16 mkdir -p $HOME/.kube sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config sudo chown $(id -u):$(id -g) $HOME/.kube/config # 应用网络插件(例如 Flannel) kubectl apply -f https://raw.githubusercontent.com/coreos/flannel/master/Documentation/kube-flannel.yml ``` 以上脚本完成了基本组件的安装及基础网络架构搭建工作。 #### 添加额外功能模块 根据实际需求可能还需要引入其他附加组件比如 Ingress 控制器、持久化存储支持等。这里列举几个常见的扩展选项及其对应的实现方法: - **Ingress-Nginx**: 提供 HTTP(S) 流量入口服务。 ```bash kubectl create namespace ingress-nginx helm repo add nginx-stable https://helm.nginx.com/stable helm repo update helm install my-release nginx-stable/nginx-ingress \ --set controller.service.type=LoadBalancer \ --namespace ingress-nginx ``` - **Harbor 私有镜像仓库**: 可用于内部容器镜像分发管理。 解压在线安装程序后调整参数再运行脚本来完成整个过程[^4]: ```bash tar xvf harbor-offline-installer-v*.tgz cd harbor/ vi harbor.cfg ./install.sh ``` - **KubeVirt**: 实现基于 KVM 技术的虚拟机实例调度能力。 按照官方指引逐步加载 CRD 定义及相关驱动程序到目标环境中去启用该特性[^3]: ```bash kubectl apply -f https://github.com/kubevirt/kubevirt/releases/download/v*/kubevirt-operator.yaml kubectl apply -f https://github.com/kubevirt/kubevirt/releases/download/v*/kubevirt-cr.yaml ``` 最后一步验证所有 Pod 是否处于健康状态以确认整体方案成功落地生效情况如何: ```bash kubectl get pods --all-namespaces ``` ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值