部署kubernetes-1.27.2(docker engine)

这篇具有很好参考价值的文章主要介绍了部署kubernetes-1.27.2(docker engine)。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

安装底层容器

先部署完成基础环境的文章再部署底层容器,先前说过kubernetes官方文档中有多种底层容器可供使用,本篇文章使用docker作为kubernetes底层容器并尽量遵循官方文档,其他底层容器后面会有其他文章。

部署kubernetes-1.27.2(docker engine)

 根据官方的说法,现在还想使用docker作为kubernetes底层容器,需要cri-dockerd来将docker engine与kubernetes集成,下面会说明。

Docker Engine

Docker Engine 是一款用于构建和运行容器化应用程序的软件。它具有以下特点:

1,简单易用:Docker Engine 提供了一个简单的命令行接口,可以方便地创建、启动、停止和删除容器。

2,轻量级:Docker Engine 容器非常轻量级,可以在几毫秒内启动和停止。

3,可移植性:Docker Engine 容器可以在不同的平台上运行,包括物理机、虚拟机和云环境。

4,可扩展性:Docker Engine 支持通过容器编排工具(如 Kubernetes、Docker Compose 等)进行自动化容器部署、管理和扩缩容等操作。

5,安全性:Docker Engine 提供了一系列安全措施,包括容器隔离、镜像签名和加密等,以确保容器的安全性和稳定性。

Docker Engine和Docker的区别

1,Docker Engine 是 Docker 的核心组件,是用于构建和运行容器化应用程序的基础平台。而普通的 Docker(也称为 Docker 客户端)则是用于与 Docker Engine 进行交互的命令行工具。

2,Docker Engine 包含了 Docker 客户端的所有功能,并且还提供了一系列 API 接口来简化容器管理、镜像管理和网络管理等操作。因此,Docker Engine 更加强大和灵活,可以被用作构建自动化容器化部署和持续集成/持续部署(CI/CD)的基础设施。

3,Docker Engine 可以安装在不同的操作系统上,包括 Linux、Windows 和 macOS 等,而普通的 Docker 则通常只支持运行在 Linux 操作系统上。

安装docker

记得关闭防火墙或者开放端口。根据docker官网的部署方式,centos系统可以直接配置repo源,下载安装即可。如果出现软件包冲突请检查repo源。

[root@localhost ~]# cd /etc/yum.repos.d/
[root@localhost yum.repos.d]# wget https://download.docker.com/linux/centos/docker-ce.repo
#上面是官方连接,这里是我自己存储的备用
#https://github.com/2174873018/Kubernetes/raw/main/docker-ce.repo
[root@localhost yum.repos.d]# yum install docker-ce -y
已加载插件:fastestmirror, langpacks
Loading mirror speeds from cached hostfile
 * base: mirrors.aliyun.com
 * extras: mirrors.aliyun.com
 * updates: mirrors.aliyun.com
软件包 3:docker-ce-23.0.3-1.el7.x86_64 已安装并且是最新版本
无须任何处理

这里也可以使用其他的repo源或者自己的rpm包制作repo源,只要能成功安装docker即可。

安装cri-dockerd

先前说过Docker 本身是一个容器运行时(Container Runtime),它负责管理容器的生命周期,包括创建、启动、停止和销毁等操作。然而,Docker 运行时在设计上并不符合 Kubernetes 等容器编排工具的要求,因此需要使用 CRI(Container Runtime Interface)来与容器编排工具进行交互。

根据kubernetes官网给出的方法,使用源代码仓库中说明的方式进行部署。

在官方的仓库中获取最新版本的软件包,然后继续执行以下步骤。这里使用的时cri-dockerd0.3.1的版本,记得每个节点都要配置。

下面如果没有代理无法访问并下载到软件包可以通过此链接下载(需要百度网盘)。

链接:https://pan.baidu.com/s/1mYGyYwvO4pqnJydXviavhw?pwd=2934 
提取码:2934 

[root@localhost ~]# wget https://github.com/Mirantis/cri-dockerd/releases/download/v0.3.1/cri-dockerd-0.3.1.amd64.tgz
#如果无法访问链接,则检查代理,或者通过其他途径将包导入。
[root@localhost ~]# tar -zxvf cri-dockerd-0.3.1.amd64.tgz
cri-dockerd/
cri-dockerd/cri-dockerd
[root@localhost ~]# cd cri-dockerd
[root@localhost cri-dockerd]# cp cri-dockerd /usr/bin/
[root@localhost cri-dockerd]# chmod 777 /usr/bin/cri-dockerd

接下来需要手搓service和socket文件,在官方说明中给出了service和socket文件提供给我们下载。这里直接写出来,复制即可,注意看清楚下面有两个文件。

#已经添加完成cri-dockerd二进制文件,现在编写service文件。
[root@localhost ~]# vim /etc/systemd/system/cri-docker.service
[Unit]
Description=CRI Interface for Docker Application Container Engine
Documentation=https://docs.mirantis.com
After=network-online.target firewalld.service docker.service
Wants=network-online.target
Requires=cri-docker.socket

[Service]
Type=notify
ExecStart=/usr/bin/cri-dockerd --container-runtime-endpoint fd://
ExecReload=/bin/kill -s HUP $MAINPID
TimeoutSec=0
RestartSec=2
Restart=always

# Note that StartLimit* options were moved from "Service" to "Unit" in systemd 229.
# Both the old, and new location are accepted by systemd 229 and up, so using the old location
# to make them work for either version of systemd.
StartLimitBurst=3

# Note that StartLimitInterval was renamed to StartLimitIntervalSec in systemd 230.
# Both the old, and new name are accepted by systemd 230 and up, so using the old name to make
# this option work for either version of systemd.
StartLimitInterval=60s

# Having non-zero Limit*s causes performance problems due to accounting overhead
# in the kernel. We recommend using cgroups to do container-local accounting.
LimitNOFILE=infinity
LimitNPROC=infinity
LimitCORE=infinity

# Comment TasksMax if your systemd version does not support it.
# Only systemd 226 and above support this option.
TasksMax=infinity
Delegate=yes
KillMode=process

[Install]
WantedBy=multi-user.target

##############编写socket文件
[root@localhost ~]# vim /etc/systemd/system/cri-docker.socket
[Unit]
Description=CRI Docker Socket for the API
PartOf=cri-docker.service

[Socket]
ListenStream=%t/cri-dockerd.sock
SocketMode=0660
SocketUser=root
SocketGroup=docker

[Install]
WantedBy=sockets.target

然后修改service文件,指定pause镜像来源,这里一定要完成,否则后面还是要修改。如果获取到默认使用的pause镜像则可以忽略此步骤。

#在service文件中添加
ExecStart=/usr/bin/cri-dockerd --container-runtime-endpoint fd:// --pod-infra-container-image=registry.k8s.io/pause:3.9
#一般指定pause设定在kubelet的配置当中,kubelet会在创建pod前拉取pause镜像,并缓存它后续使用。
#将此参数放在kubelet中更加常见,但是在某些情况下也会将参数配置在cri-dockerd中,例如当使用自定义的cri运行时。

说明:另外pause容器其实不需要任何功能,它只是用来占据pod中的一个网络命名空间和ipc命名空间,并保持这些命名空间的开放状态。因此,可以使用一个很小的镜像,甚至一个空文件作为容器镜像。所以可以构建一个空镜像,打上标签,然后在指定仓库的时候指定本地镜像。

然后启动cri-docker,保证其正常运行。

[root@master ~]# systemctl daemon-reload
[root@master ~]# systemctl enable cri-docker
Created symlink from /etc/systemd/system/multi-user.target.wants/cri-docker.service to /etc/systemd/system/cri-docker.service
[root@master ~]# systemctl restart cri-docker
#如果错误检查docker是否已经启动。

指定kubeadm默认cri

当docker和cri-docker一起安装的时候,docker默认自带containerd的cri所以会导致kubeadm识别到两个cri,每次使用kubeadm都需要指定一下cri,所以干脆修改kubeadm配置文件,使其本身就使用其中一个cri。

找到10-kubeadm.conf配置文件,然后修改配置文件。

[root@master ~]# vim /usr/lib/systemd/system/kubelet.service.d/10-kubeadm.conf
Environment="KUBELET_EXTRA_ARGS=--container-runtime= unix:///run/cri-dockerd.sock"
#添加上面一行内容,sock文件路径根据实际环境设置。
[root@master ~]# systemctl daemon-reload
[root@master ~]# systemctl restart kubelet

获取kubernetes镜像

根据官网的说法,使用kubeadm工具,获取部署kubernetes集群所需镜像。

[root@node2 images]# kubeadm config images list
W0427 10:30:29.946236   17852 images.go:80] could not find officially supported version of etcd for Kubernetes v1.27.2, falling back to the nearest etcd version (3.5.7-0)
registry.k8s.io/kube-apiserver:v1.27.2
registry.k8s.io/kube-controller-manager:v1.27.2
registry.k8s.io/kube-scheduler:v1.27.2
registry.k8s.io/kube-proxy:v1.27.2
registry.k8s.io/pause:3.9
registry.k8s.io/etcd:3.5.7-0
registry.k8s.io/coredns/coredns:v1.10.1
#然后拉取镜像,这里需要指定cri,因为docker底层有containerd,现在还安装了cri
#当有多个cri的时候kubernetes要求指定其中一个cri,没指定cri报错的时候会告知cri路径。
[root@localhost ~]# kubeadm config images pull --cri-socket=unix:///var/run/cri-dockerd.sock

同样在拉取镜像的时候确保代理没有问题,可以成功访问国外镜像源,可以自己准备1.27版本镜像存放到本地,可以在部署的时候拉取本地镜像。

如果是在是找不到此版本镜像,则可以通过github+阿里云构建自己的镜像(实际上就是官方镜像)。自己构建的镜像标签不一致,后面需要注意。

如果实在无法拉取到镜像,可以通过此链接下载,这也是我自己保存的官方镜像。

链接:https://pan.baidu.com/s/1sEao32r2BI4kYGuN2unRIg?pwd=2934 
提取码:2934 

下载好镜像后上传至docker中即可。

[root@master images]# for i in $(ls);do docker load -i $i;done
256bc5c338a6: Loading layer  336.4kB/336.4kB
df1818f16337: Loading layer  48.59MB/48.59MB
Loaded image: registry.k8s.io/coredns/coredns:v1.9.3
9fce6bd02a21: Loading layer  3.676MB/3.676MB
2941b2b36c54: Loading layer  2.257MB/2.257MB
7772ba21d1e3: Loading layer  273.9MB/273.9MB
46efaf9cefbf: Loading layer  1.979MB/1.979MB
620ff9a81da1: Loading layer  19.04MB/19.04MB
Loaded image: registry.k8s.io/etcd:3.5.6-0
28e757e6e258: Loading layer  3.768MB/3.768MB
d47195e6336b: Loading layer  1.538MB/1.538MB
9e2c8ca3c538: Loading layer    130MB/130MB
Loaded image: registry.k8s.io/kube-apiserver:v1.27.2
094b85b8ca91: Loading layer  119.4MB/119.4MB
Loaded image: registry.k8s.io/kube-controller-manager:v1.27.2
8342c4e13d7f: Loading layer  22.19MB/22.19MB
d3060b11e465: Loading layer  45.03MB/45.03MB
Loaded image: registry.k8s.io/kube-proxy:v1.27.2
c469cd94ce95: Loading layer  52.45MB/52.45MB
Loaded image: registry.k8s.io/kube-scheduler:v1.27.2
e3e5579ddd43: Loading layer    746kB/746kB
Loaded image: registry.k8s.io/pause:3.9
[root@master images]# docker images
REPOSITORY                                TAG       IMAGE ID       CREATED         SIZE
registry.k8s.io/kube-apiserver            v1.27.2   91601d91fc4e   5 weeks ago     134MB
registry.k8s.io/kube-scheduler            v1.27.2   205f9de51c6f   5 weeks ago     56.4MB
registry.k8s.io/kube-controller-manager   v1.27.2   939fcea57932   5 weeks ago     123MB
registry.k8s.io/kube-proxy                v1.27.2   81c02dd39967   5 weeks ago     65.6MB
registry.k8s.io/etcd                      3.5.6-0   7f6ebf76b396   5 months ago    299MB
registry.k8s.io/pause                     3.9       ffbd70d47332   6 months ago    744kB
registry.k8s.io/coredns/coredns           v1.9.3    bff821dafb5a   11 months ago   48.8MB

kubeadm创建kubernetes集群

生成kubeadm配置文件,然后修改配置文件。

[root@localhost images]# kubeadm config print init-defaults > kubeadm.yaml
[root@localhost images]# cat kubeadm.yaml
apiVersion: kubeadm.k8s.io/v1beta3
bootstrapTokens:
- groups:
  - system:bootstrappers:kubeadm:default-node-token
  token: abcdef.0123456789abcdef
  ttl: 24h0m0s
  usages:
  - signing
  - authentication
kind: InitConfiguration
localAPIEndpoint:
  advertiseAddress: 1.2.3.4
  bindPort: 6443
nodeRegistration:
  criSocket: unix:///var/run/containerd/containerd.sock
  imagePullPolicy: IfNotPresent
  name: node
  taints: null
---
apiServer:
  timeoutForControlPlane: 4m0s
apiVersion: kubeadm.k8s.io/v1beta3
certificatesDir: /etc/kubernetes/pki
clusterName: kubernetes
controllerManager: {}
dns: {}
etcd:
  local:
    dataDir: /var/lib/etcd
imageRepository: registry.k8s.io
kind: ClusterConfiguration
kubernetesVersion: 1.27.0
networking:
  dnsDomain: cluster.local
  serviceSubnet: 10.96.0.0/12
scheduler: {}

修改以下内容,根据自己的集群信息来进行更改。

  advertiseAddress: 192.168.100.10
#修改为master节点ip
  criSocket: unix:///run/cri-dockerd.sock
#根据自己定义的cri来决定,其他系统路径可能有所不同
  serviceSubnet: 10.96.0.0/12
  podSubnet: 10.244.0.0/16
#设置pod划分地址网段。
imageRepository: registry.k8s.io
#当仓库名称和自己的不符时更改,或是更改docker标签。
kubernetesVersion: 1.27.2
#根据自己的kubernetes版本修改。

这里需要注意检查自己的系统是否配置有网关和dns,一般环境下都会有配置,如果没有需要自己添加网关和dns,根据自己的实际情况配置。

[root@master images]# echo -e "GATEWAY=192.168.100.1\nDNS1=192.168.100.1" >> /etc/sysconfig/network-scripts/ifcfg-ens33
[root@master images]# systemctl restart network

最后初始化集群,给予权限。

[root@master images]# kubeadm init --config kubeadm.yaml
#如果出错了就重置,然后重新构建集群 :
#kubeadm reset --cri-socket=unix:///var/run/cri-dockerd.sock
#因为docker的containerd-cri会和cri-dockerd冲突,所以需要指定。
#如果已经修改了kubeadm配置文件请忽略指定cri的步骤。

这里可以通过设置环境变量或者添加config文件来获取权限。

  mkdir -p $HOME/.kube
  sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config
  sudo chown $(id -u):$(id -g) $HOME/.kube/config
#或者使用
export KUBECONFIG=/etc/kubernetes/admin.conf

接下来就是为kubernetes集群安装cni网络插件,完成网络插件的安装集群则会ready。文章来源地址https://www.toymoban.com/news/detail-458663.html

到了这里,关于部署kubernetes-1.27.2(docker engine)的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 部署kubernetes-1.27.1(1-2)

    先部署完成基础环境的文章再部署底层容器,先前说过kubernetes官方文档中有多种底层容器可供使用,本篇文章使用docker作为kubernetes底层容器并尽量遵循官方文档,其他底层容器后面会有其他文章。  根据官方的说法,现在还想使用docker作为kubernetes底层容器,需要cri-dockerd来

    2024年02月05日
    浏览(36)
  • kubernetes 1.27.3 集群部署方案

    1.1.1 主机硬件配置说明 cpu 内存 硬盘 角色 主机名 系统版本 8C  8G  1024GB master master01 centos 7.9  8C  16G  1024GB  worker(node)  worker01 centos 7.9  8C  16G  1024GB  worker(node)  worker02 centos 7.9 1.1.2 主机配置 1.1.2.1 主机名配置 由于本次使用3台主机完成kubernetes集群部署,其中1台为master节

    2024年02月15日
    浏览(39)
  • kubernetes 二进制方式部署 1.27.1

    序号 名称 IP地址 CPU/颗 内存/GB 硬盘/GB 描述 1 k8s-master01 192.168.1.11 4 4 100 kube-apiserver、kube-controller-manager、kube-scheduler、etcd、 kubelet、kube-proxy、nfs-client、haproxy、keepalived、nginx 2 k8s-master02 192.168.1.12 4 4 100 kube-apiserver、kube-controller-manager、kube-scheduler、etcd、 kubelet、kube-proxy、nfs-cl

    2024年02月10日
    浏览(47)
  • 使用 kubeadm 部署 kubernetes 1.27.1 版本

    目录 前言 一、搭建前的准备 1. 搭建k8s的平台规划 2. 服务器硬件配置要求 3. 搭建部署的方式 二、搭建流程 1. kubeadm搭建方式 a. 准备工作,系统初始化 c. 设置一下ipv4,否则会失败(此处为坑,不设置无法初始化成功) d. 安装containerd  e. 安装kubectl、kubelet、kubeadm  f. master节点

    2024年02月06日
    浏览(40)
  • ubuntu安装教程及docker安装容器,前后端部署

    1.0、Linux的常用命令 1.1、虚拟机安装Ubuntu20.0.4 1、 2、 3、 4、 5、 6、 7、 8、待补充 9、默认选择 10、 11、 12、 13、 14、 15、修改完成后,点击上面的完成。 16、 17、语言建议英文 防止中文出现问题-----问题可能会有 18、 19、 20、 21、 22、 23、 24、不能使用root用户创建,改回别

    2024年02月04日
    浏览(47)
  • Zabbix最简易安装部署:基于docker容器

    zabbix 读音: 正确读法: [`zæbiks] ,中文发音:擦日阿(ra)贝克斯 zabbix 是一个基于WEB界面的提供分布式系统监视以及网络监视功能的企业级的开源解决方案。 zabbix 能监视各种网络参数,保证服务器系统的安全运营;并提供灵活的通知机制以让系统管理员快速定位/解决存在

    2024年02月12日
    浏览(51)
  • 【Docker】contos7安装 Nacos容器部署单个&&部署集群

                                      🎉🎉欢迎来到我的CSDN主页!🎉🎉                     🏅我是平顶山大师,一个在CSDN分享笔记的博主。📚📚     🌟推荐给大家我的博客专栏《Docker】contos7安装 Nacos容器部署单个部署集群》。🎯🎯                  

    2024年01月23日
    浏览(45)
  • Docker安装Nginx并部署&MySQL容器构建

    将配置文件上传到conf文件夹(数据库配置文件已放到置顶资源中) /soft/mysql/conf/my.cnf:/etc/my.cnf目录为我们配置绑定的目录 /soft/mysql/data:/var/lib/mysql 是将data目录与MySQL目录进行绑定 进入到我们的MySQL容器中(m1为容器名)  进入容器后登录到MySQL 输入密码后进入到MySQL赋予权限 

    2024年01月19日
    浏览(54)
  • 【Docker】安装Nginx容器并部署前后端分离项目

    🎉🎉欢迎来到我的CSDN主页!🎉🎉 🏅我是Java方文山,一个在CSDN分享笔记的博主。📚📚 🌟推荐给大家我的专栏《Docker实战》。🎯🎯 👉点击这里,就可以查看我的主页啦!👇👇 Java方文山的个人主页 🎁如果感觉还不错的话请给我点赞吧!🎁🎁 💖期待你的加入,一起

    2024年01月23日
    浏览(48)
  • Linux 上安装部署Nacos、Docker 创建Nacos容器

    Nacos是一个开源的分布式服务发现和配置管理平台,它可以帮助开发人员实现微服务架构中的服务注册、发现和动态配置管理。 步骤1:准备工作 在开始安装Nacos之前,确保您已经具备以下条件: Linux环境 :您可以选择使用Ubuntu、CentOS或其他基于Linux的发行版。 Java环境 :Na

    2024年02月03日
    浏览(54)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包