使用kubeadm部署kubernetes集群

2023-05-16

一、安装环境准备

1、安装环境: centos7.5,一个master节点,两个node节点

CentOS Linux release 7.5.1804 (Core)

2、设置/etc/hosts文件的IP和主机名映射

10.20.0.14 k8smaster
10.20.0.15 k8snode1
10.20.0.16 k8snode2

二、总体安装

以下安装步骤若未指明,则都为在master节点的安装

1、配置docker和k8s仓库(/etc/yum.repo.d)

新建kubernetes.repo,编辑内容

[kubernetes]
name=Kubernetes Repo
baseurl=https://mirrors.aliyun.com/kubernetes/yum/repos/kubernetes-el7-x86_64/   #这里使用的是国内阿里云镜像
gpgcheck=1
gpgkey=https://mirrors.aliyun.com/kubernetes/yum/doc/yum-key.gpg
enabled=1

2、docker仓库可直接在/etc/yum.repo.d目录下通过

wget https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo得到

3、执行yum install docker kubelet-1.11.1 kubeadm-1.11.1 kubectl-1.11.1

注1:k8s这三个相关应用后面加入了-1.11.1,指明了安装版本,若需要安装最新版,则不需要加-1.11.1,但k8s版本更新较快,最新版可能不稳定且出问题后网上资料较少排查困难,因此不建议安装最新版

注2:若安装提示gpg key无法安装,则需要手动wget https://mirrors.aliyun.com/kubernetes/yum/doc/yum-key.gpg和wget https://mirrors.aliyun.com/kubernetes/yum/doc/rpm-package-key.gpg

然后手动导入两个密钥文件rpm --import yum-key.gpg  rpm --import rpm-package-key.gpg

三、docker相关安装

4、为了使docker能正常访问bridge-nf-call-iptables ,需要把如下两个文件内容修改为1

/proc/sys/net/bridge/bridge-nf-call-ip6tables

/proc/sys/net/bridge/bridge-nf-call-iptables

若这两个文件原来的值都为0,则参考如下教程修改https://blog.csdn.net/xypds2010/article/details/52212323,否则继续

5、启动docker并设置docker自启动

systemctl start docker
systemctl enable docker

四、kubelet相关安装

6、设置kubelet

1)rpm -ql kubelet 查看kubelet安装了哪些文件

/etc/kubernetes/manifests
/etc/sysconfig/kubelet
/etc/systemd/system/kubelet.service
/usr/bin/kubelet

2)查看配置文件:cat /etc/sysconfig/kubelet

KUBELET_EXTRA_ARGS=

默认参数为空,可以先不用理会,后续有需要再修改

3)设置kubelet开机自启动:

systemctl enable kubelet

五、使用kubeadm完成集群初始化

7、在master节点初始化集群

1)kubeadm init --help查看init相关命令帮助

2)vim /etc/sysconfig/kubelet修改配置选项,忽略swap

3)KUBELET_EXTRA_ARGS="--fail-swap-on=false"

4)初始化

kubeadm init --kubernetes-version=v1.11.1 --pod-network-cidr=10.244.0.0/16 --service-cidr=10.96.0.0/12 --ignore-preflight-errors=Swap

5)如拉取镜像失败,则按如下方式处理

images=(kube-proxy-amd64:v1.11.1 kube-scheduler-amd64:v1.11.1 kube-controller-manager-amd64:v1.11.1 kube-apiserver-amd64:v1.11.1etcd-amd64:3.2.18 pause-amd64:3.1)
for imageName in ${images[@]} ; do
  docker pull mirrorgooglecontainers/$imageName  
  docker tag mirrorgooglecontainers/$imageName k8s.gcr.io/$imageName  
  docker rmi mirrorgooglecontainers/$imageName
done

该命令为从mirrorgooglecontainers仓库拉取images里指定的镜像,并重命名tag,然后删除原来的镜像

由于镜像仓库国内无法访问,因此一般都拉取失败,此时就需要在本地先pull镜像,然后用docker tag命令更改镜像标签

初始化完成之后提示成功

 

6)同时可以看到一条加入当前集群的命令,该命令暂时不要执行,后续在node节点部署完之后再在node节点上安装

7)使用kubectl get cs(cs为componentstatus简写)

 

8)使用kubectl get nodes查看集群节点,看到master节点处于NotReady状态,这是因为集群网络组建flannel并未安装

 

9)到GitHub上搜索coreos/flannel仓库,readme文件里可以看到如下安装命令

kubectl apply -f https://raw.githubusercontent.com/coreos/flannel/master/Documentation/kube-flannel.yml

执行该命令会自动拉去kube-proxy和kube-flannel镜像,稍等片刻重新查看节点状态即为Ready状态

 

10)同时使用kubectl get pods -n kube-system查看组建状态,-n后的参数指定了命名空间,status为running代表无误

 

六、在各node节点安装docker和kubelet、kubeadm、kubectl工具

8、至此,master节点部署已经完成,接下需要做的就是在各node节点安装dockers和kubelet、kubeadm、kubectl,然后执行kubeadm join那条命令将节点加入集群

9、分别在node1和node2节点上重复上文一到三的安装步骤(相关配置文件可以直接用scp拷贝到两个节点)

10、然后同样用vim /etc/sysconfig/kubelet命令修改kubelet配置,修改内容为

KUBELET_EXTRA_ARGS="--fail-swap-on=false"

11、执行加入集群的命令,需要添加--ignore-preflight-errors=Swap参数

kubeadm join 10.20.0.14:6443 --token 6dn3ug.44dcfvlnyt5orq63 --discovery-token-ca-cert-hash sha256:35717f83b75e9c3d580e46e1037d8bcbd43ec733c197d963eaf2f8a9f98a79ba  --ignore-preflight-errors=Swap

12、tomg同样由于镜像被墙的,此处加入集群会失败,使用kubectl get pods -n kube-system -o wide命令会看到有两个pod一直在init和creating

13、此时使用kubectl describe pod kube-flannel-ds-amd64-ddtnx -n kube-system查看错误信息,可以看到还是因为镜像拉取失败的问题,因此将flannel、proxy和pause三个镜像使用docker save和docker load命令从master拷贝到node1和node2上,这样kubeadm就会从本地直接使用这些镜像,避免了拉取失败的问题

 

14、当两个节点都加入集群后,使用kubectl get node命令查看集群节点是否就绪

 

使用kubectl get pods -n kube-system -o wide查看pod状态

 

当所有节点都为ready状态且pod可以running起来就代表集群可以正常运转了

七、总结

       使用kubeadm工具可以大大简化k8s部署流程,避免初学者因部署问题而望而却步,主要的坑就是kubeadm指定的仓库无法访问,因此先在本地拉取然后再创建pod资源,就可以避免拉取镜像失败的问题

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

使用kubeadm部署kubernetes集群 的相关文章

随机推荐

  • CentOS 8.5高性能计算开发环境配置备忘

    CentOS 8 5环境配置 在CentOS 8 5系统下配置高性能计算环境 主要包含编译器套件 分布式并行套件 各种数值计算库 Python环境 辅助管理工具 GPU开发环境等 利用CentOS自带的RPM仓库 xff0c 加上OpenH
  • Python3 + BeautifulSoup 爬取Steam热销商品数据

    这次用了BeautifulSoup库来爬取Steam的热销商品 xff0c BeautifulSoup更侧重的是从页面的结构解析 xff0c 根据标签元素等来爬取数据 xff0c 这次遇到两个问题 xff1a 1 Steam热销商品列表经常
  • C语言中用%输出不同内容

    C语言有很多输出函数 xff0c 也有很多输出方式 xff0c 但最基础的还是printf 函数 xff0c 但我们不止能输出想要的内容还能指定输出的方式 xff0c 下面我就对此总结一下 xff0c 本人也是初学者 xff0c 以下内容可
  • 了解script setup语法糖

    了解 lt script setup gt 语法糖 基本语法 lt script setup lang 61 34 ts 34 gt console log 39 hello script setup 39 lt script gt 里面的
  • vscode中修改/重置gitlab远程仓库地址(3种方式)

    vscode中修改 重置gitlab远程仓库地址 方法1 xff1a 更换git远程仓库地址 1 查看当前remotes git remote v 2 修改remotes git remote set url origin https gi
  • Java中时间戳转换日期

    String value 61 34 79898768 34 时间戳 String date 61 stampToDate value 时间戳转换日期 时间戳转换日期方法 public static String stampToDate S
  • SAP-PI/PO ICO中增加过滤条件

  • 今日头条笔试之手串问题

    一 问题描述 题目摘自牛客网 xff0c 可以到牛客网直接查找 xff0c 现直接贴上原题目描述 作为一个手串艺人 xff0c 有金主向你订购了一条包含n个杂色串珠的手串 每个串珠要么无色 xff0c 要么涂了若干种颜色 为了使手串的色彩看
  • VS2015对WDK10驱动程序进行双机调试

    1 设置Visual Studio 2015调试方式 xff1a 主计算机 xff1a WIN7 64位 虚拟机 xff1a WIN7 64位 调试器 xff1a VS2015 调试的软件 xff1a 内核驱动程序 一 主计算机和虚拟机两台
  • Node.js下载及安装步骤

    一 安装环境 1 本机系统 xff1a Windows 11 xff08 64位 xff09 2 Node js xff1a v16 14 2LTS xff08 64位 xff09 二 安装Node js步骤 1 下载对应系统的Node j
  • IDEA中设置默认Maven配置

    一 每次打开项目时修改maven配置 xff08 默认的maven地址可能不是我们想要的 xff0c 可以通过下面方法修改 xff09 二 配置默认的地址 第一种方法太麻烦 xff0c 每次打开项目都需要配置maven xff0c 我们可以
  • sql server 2014下载及安装步骤—图解

    注意 xff1a 1 Win10之后的系统 xff0c 在安装之前需要安装 net framework 3 5 sp1 xff0c 以免后续安装报错 2 Express版本为缩减版 xff0c 无SSMS xff0c 需自行下载 xff0c
  • win11安装IIS步骤—图解

    1 使用快捷键win 43 r 输入control 打开控制面板 xff0c 然后点击程序 xff0c 选择启用或关闭Windows功能 xff0c 勾选Internet Information Services 默认安装IIS 2 通过
  • SqlServer怎么计算两个日期之差,精确到毫秒计算

    DateTime xff1a 字段类型对应的时间格式是 yyyy MM dd HH mm ss fff xff0c 3个f xff0c 精确到1毫秒 ms xff0c 示例 2023 01 07 10 06 15 433 DateTime2
  • 直接在浏览器中访问程序无问题,在IIS中点击浏览网站无反应

    问题 xff1a 直接在浏览器中访问程序无问题 xff0c 在IIS中点击浏览网站无反应 解决方案 xff1a 在设置中点击应用后设置默认的浏览器
  • 在IIS中发布NetCore程序

    需安装的软件 xff0c 如下图所示 软件下载地址 xff1a https dotnet microsoft com en us download dotnet 注意 xff1a 发布的程序版本必须和本地安装的一致 xff0c 否则会报错
  • PotPlayer优化与最高画质设置(最强本地播放器)

    一 前言 软件 xff1a PotPlayer 描述 xff1a 被誉为本地视频最好用的播放器 xff01 PotPlayer下载地址参考 xff1a https potplayer org 推荐Potplayer论坛 xff1a http
  • 基于51单片机定时器计数+74HC595移位寄存器+8位数码管时钟

    基于51单片机 74HC595移位寄存器 8位数码管时钟 Proteus仿真 实例代码 span class token macro property span class token directive hash span span cl
  • 51单片机外部中断使用示例程序

    51单片机外部中断使用示例程序 本实例来源以STC89演示示例 xff0c 为了方便初学者更好的阅读 xff0c 直接将其贴出来 首先分享一份 STC单片机资源一览表 你也可以从https www stcisp com 下载到 xff0c
  • 使用kubeadm部署kubernetes集群

    一 安装环境准备 1 安装环境 xff1a centos7 5 xff0c 一个master节点 xff0c 两个node节点 CentOS Linux release 7 5 1804 Core 2 设置 etc hosts文件的IP和主