在CentOS 7上使用kubeadm部署Kubernetes集群

如有错误,敬请谅解!

此文章仅为本人学习笔记,仅供参考,如有冒犯,请联系作者删除!! 


前言:

        Kubernetes是一个开源的容器编排平台,用于管理和自动化部署容器化的应用程序。    

        Kubeadm是Kubernetes官方社区推出的一个用于快速部署Kubernetes集群的工具,它可以帮助我们简化集群部署的过程。

1. 安装要求(可根据自己需求制定,仅供参考)

在开始之前,我们需要满足以下几个条件:

  • 3台虚拟机,操作系统 CentOS7.7-86_x64(我用的是VMWare起的虚拟机)
  • 硬件配置:2核4G 100G
  • 可以访问外网,需要拉取镜像,如果服务器不能上网,需要提前下载镜像并导入节点(如果无法访问外网参考:juejin.cn/post/720504…)
  • 禁止swap分区

2. 准备环境

以下是我本地的虚机IP配置

角色IP
master192.168.91.137
node1192.168.91.138
node2192.168.91.139

在准备好的3台虚机上执行以下命令,初始化环境

# 关闭防火墙 
systemctl stop firewalld 
systemctl disable firewalld # 关闭selinux 
sed -i 's/enforcing/disabled/' /etc/selinux/config # 永久 
setenforce 0 # 临时 # 关闭swap 
swapoff -a # 临时 
sed -ri 's/.*swap.*/#&/' /etc/fstab # 永久 # 根据规划设置主机名 hostnamectl set-hostname <hostname> 
# 在master添加hosts,以下IP地址根据你的实际IP更改 
cat >> /etc/hosts << EOF 
192.168.91.137 k8smaster 
192.168.91.138 k8snode1 
192.168.91.139 k8snode2 
EOF # 将桥接的IPv4流量传递到iptables的链 
cat > /etc/sysctl.d/k8s.conf << EOF 
net.bridge.bridge-nf-call-ip6tables = 1 
net.bridge.bridge-nf-call-iptables = 1 
EOF sysctl --system # 生效 # 时间同步 
yum install ntpdate -y 
ntpdate time.windows.com

3. 所有节点安装Docker/kubeadm/kubelet

3.1 安装Docker

Kubernetes默认CRI(容器运行时)为Docker,因此先安装Docker。

wget https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo -O /etc/yum.repos.d/docker-ce.repo yum -y install docker-ce-18.06.1.ce-3.el7 systemctl enable docker && systemctl start docker docker --version 

配置docker源为国内源

$ cat > /etc/docker/daemon.json << EOF 
{ "registry-mirrors": ["https://b9pmyelo.mirror.aliyuncs.com"] 
} 
EOF # 重启 docker 使配置生效 
systemctl restart docker # 查看docker信息 
docker info

docker 的Registry Mirros如下表示配置成功 

image.png

3.2 添加阿里云YUM软件源

cat > /etc/yum.repos.d/kubernetes.repo << EOF 
[kubernetes] 
name=Kubernetes 
baseurl=https://mirrors.aliyun.com/kubernetes/yum/repos/kubernetes-el7-x86_64 
enabled=1 
gpgcheck=0 
repo_gpgcheck=0 
gpgkey=https://mirrors.aliyun.com/kubernetes/yum/doc/yum-key.gpg https://mirrors.aliyun.com/kubernetes/yum/doc/rpm-package-key.gpg 
EOF

3.3 安装kubeadm,kubelet和kubectl

yum install -y kubelet-1.18.0 kubeadm-1.18.0 kubectl-1.18.0 systemctl enable kubelet

4. 部署Kubernetes Master

在192.168.91.137(Master)执行。 --apiserver-advertise-address={Master节点ip} 由于默认拉取镜像地址k8s.gcr.io国内无法访问,这里指定阿里云镜像仓库地址。

kubeadm init \ --apiserver-advertise-address=192.168.91.137 \ --image-repository registry.aliyuncs.com/google_containers \ --kubernetes-version v1.18.0 \ --service-cidr=10.96.0.0/12 \ --pod-network-cidr=10.244.0.0/16

Master节点出现以下提示信息,表示安装成功 

 安装成功后,按照提示将kube config 文件复制到指定目录,如下:

mkdir -p $HOME/.kube cp -i /etc/kubernetes/admin.conf $HOME/.kube/config chown $(id -u):$(id -g) $HOME/.kube/config kubectl get nodes

5. 加入Kubernetes Node

在192.168.91.138和192.168.91.139(Node)执行。

向集群添加新节点,执行在kubeadm init输出的kubeadm join命令:

$ kubeadm join 192.168.91.137:6443 --token oej61r.n22wnd46np15tea7 \ --discovery-token-ca-cert-hash sha256:ca04c678c4b307e92efe1642da09385fdca4d254f7d15e45b04d29176dc272a0

在k8snode1虚机上执行kubeadm join将k8snode1加入到集群

  在k8snode2虚机上执行kubeadm join将k8snode2加入到集群

 默认token有效期为24小时,当过期之后,该token就不可用了。这时就需要重新创建token,操作如下:

kubeadm token create --print-join-command

6. 部署CNI网络插件

做完以上5步后,发现所有节点都是 NotReady 状态,是因为Kubernetes集群需要一个网络插件来提供容器之间的网络通信。我们可以选择安装Flannel插件,执行以下命令来部署:

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

出现以下说明网络插件安装成功,需要等一会网络插件相关pod才能起来 

d8a7963f76903a90b3385b0af122dfca_.png

若出现以下情况: 

则需要在/etc/hosts下添加主机ip映射信息,具体做法如下:

1、找到域名对应的ip地址
域名ip查询链接:http://ip.tool.chinaz.com/

2、/etc/hosts中添加主机ip映射信息

 在这里插入图片描述

3、重新获取:

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

过几分钟后,执行 kubectl get pods -A,发现在namespace kube-flannel 下网络插件的pod已经处于 Running 状态 

a5f8a6c82d0e105892084fef488d199a_.png

再次执行 kubectl get nodes 查看nodes状态,发现3个节点的状态已经从 NotReady 变成了 Ready,说明集群节点准备就绪,可以正常创建pod等 

249db944340f51a91193d3925233e0d6_.png

7. 测试kubernetes集群

在Kubernetes集群中创建一个pod,验证是否正常运行:

kubectl create deployment nginx --image=nginx $ kubectl expose deployment nginx --port=80 --type=NodePort $ kubectl get pod,svc

如下图,可以看到 nginx pod已经正常运行,而且创建的 svc 对外暴漏的端口是 31874 

03062c39d8c6f4551e3d2c361cf3dc81_.png

 使用3台虚拟机的IP加上端口访问nginx服务 Master虚机IP+端口 

 k8snode1虚机IP+端口

 k82node2虚机IP+端口 

 

说明你可以使用任何一个Node节点的IP地址和NodePort来访问Nginx应用。


如有错误,请联系作者删除

并恳请同行朋友予以斧正,万分感谢!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/93232.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

软文发布问题解答:高效宣传与推广指南

以下是一秒推小编针对软文发布的20个常见问题及回答&#xff1a; 1. 什么是软文&#xff1f; 答&#xff1a;软文是指用文学手法、写作技巧撰写的宣传文章&#xff0c;以实现对特定受众的陈述、说明和推销。 2. 发布软文的目的是什么&#xff1f; 答&#xff1a;发布软文的目…

出现ffmpeg.dll丢失的修复方法分享,教你快速修复ffmpeg.dll文件

当你使用或尝试运行与FFmpeg相关的应用程序时&#xff0c;可能会遇到一个常见的问题&#xff0c;ffmpeg.dll文件丢失。这个动态链接库文件对于正常运行FFmpeg应用程序至关重要。在本文中&#xff0c;我们将详细探讨为什么会出现ffmpeg.dll丢失的情况&#xff0c;并提供一些修复…

奥威BI数据可视化工具:360度呈现数据,告别枯燥表格

随着企业数据量的不断增加&#xff0c;如何有效地进行数据分析与决策变得越来越重要。奥威BI数据可视化工具作为一款强大的数据分析工具&#xff0c;在帮助企业深入挖掘数据价值方面具有显著优势。 奥威BI数据可视化工具是一款基于数据仓库技术的数据分析工具&#xff0c;具有…

海外应用ASO优化的小技巧3

编写准确的应用程序描述&#xff0c;有4000个字符限制。用户可以访问应用程序的主要功能和信息&#xff0c;要说服并推动用户去下载我们的应用&#xff0c;需要使用自然流利的语言。 1、填写应用描述的方案。 我们需要知道该应用有什么用&#xff0c;能够解决什么问题&#xf…

在医疗行业数字孪生能做些什么?

数字孪生技术随着发展正在多行业遍地开花&#xff0c;在之前的文章中也为大家介绍过数字孪生的行业应用&#xff0c;今天带大家一起探讨一下数字孪生在医疗行业的表现。其实数字孪生在医疗行业已有很多应用案例&#xff0c;从医疗诊断到手术模拟&#xff0c;再到药物研发&#…

基于Redis实现点赞及排行榜功能

微信公众号访问地址&#xff1a;基于Redis实现点赞及排行榜功能 推荐文章&#xff1a; 1、SpringBoot整合多数据源&#xff0c;并支持动态新增与切换&#xff08;详细教程&#xff09; 2、​​​​​​Redis中使用lua脚本 3、SpringBoot统一标准响应格式及异常处理 4、Spr…

linux两台服务器互相备份文件(sshpass + crontab)

crontab crontab是linux系统自带的定时调度软件&#xff0c;可用于设置周期性被执行的指令&#xff0c;一般用在每天的非高峰负荷时间段运行作业&#xff0c;可在无需人工干预的情况下运行作业。支持在一周或一月中的不同时段运行。 crontab命令允许用户提交、编辑或删除相应的…

MongoDB:数据库初步应用

一.连接MongoDB 1.MongoDBCompass连接数据库 连接路径:mongodb://用户名:密码localhost:27017/ 2.创建数据库(集合) MongoDB中数据库被称为集合. MongoDBCompass连接后,点击红色框加号创建集合,点击蓝色框加号创建文档(数据表) 文档中的数据结构(相当于表中的列)设计不用管…

安装chromedriver 115,对应chrome版本115(经检验,116也可以使用)

目录 1. 查看Chrome浏览器的版本2. 找到对应的chromedriver3. 安装ChromeDriver 1. 查看Chrome浏览器的版本 点进这个网站查看&#xff1a;chrome://settings/help &#xff08;真是的&#xff0c;上一秒还是115版本&#xff0c;更新后就是116版本了&#xff0c;好在chromedi…

java版本企业电子招标采购系统源码Spring Cloud + Spring Boot +二次开发

java版本企业电子招标采购系统源码Spring Cloud Spring Boot 二次开发 一、立项管理 1、招标立项申请 功能点&#xff1a;招标类项目立项申请入口&#xff0c;用户可以保存为草稿&#xff0c;提交。 2、非招标立项申请 功能点&#xff1a;非招标立项申请入口、用户可以保存为草…

【JVM】JVM 调优的参数都有哪些?

文章目录 1. 设置堆空间大小2. 虚拟机栈的设置3. 年轻代中Eden区和两个Survivor区的大小比例4. 年轻代晋升老年代阈值5. 设置垃圾回收收集器 1. 设置堆空间大小 设置堆的初始大小和最大大小&#xff0c;为了防止垃圾收集器在初始大小、最大大小之间收缩堆而产生额外的时间&…

JVM——HotSpot的算法细节实现

一、根节点枚举 固定可作为GC Roots的节点主要在全局性的引用&#xff08;如常量或类静态属性&#xff09;与执行上下文&#xff08;如栈帧中的本地变量表&#xff09;中&#xff0c;尽管目标明确&#xff0c;但查找要做到高效很难。现在java应用越来越庞大&#xff0c;光方法区…

辽宁线上3D三维虚拟工厂生产仿真系统应用场景及优势

工厂虚拟仿真是一种基于计算机技术和虚拟现实技术的数字化解决方案&#xff0c;它可以通过模拟工厂中的设备、流程和操作&#xff0c;来为工程师和操作人员提供了一个沉浸式的虚拟环境&#xff0c;帮助他们更好地了解和优化工厂生产过程。 工厂VR三维可视化技术为工业生产提供了…

W5100S-EVB-PICO 做UDP Server进行数据回环测试(七)

前言 前面我们用W5100S-EVB-PICO 开发板在TCP Client和TCP Server模式下&#xff0c;分别进行数据回环测试&#xff0c;本章我们将用开发板在UDP Server模式下进行数据回环测试。 UDP是什么&#xff1f;什么是UDP Server&#xff1f;能干什么&#xff1f; UDP (User Dataqram …

什么是可视化编程?为什么它如此重要?

可视化编程&#xff0c;又叫可视化程序设计&#xff0c;一直以来就是备受讨论的“热门技术”。一方面&#xff0c;程序员抵触它&#xff0c;觉得它不如用代码开发。另一方面&#xff0c;对于产品经理等稍微懂点开发的业余人员&#xff0c;它确实能提供价值。所以&#xff0c;它…

tomcat服务七层搭建动态页面查看

一个服务器多实例复制完成 配置tomcat多实例的环境变量 vim /etc/profile.d/tomcat.sh配置tomcat1和tomcat2的环境变量 进入tomcat1修改配置 测试通信端口是否正常 连接正常 toncat 2 配置修改 修改这三个 端口配置修改完成 修改tomcat1 shudown 分别把启动文件指向tomcat1…

AgentBench::AI Agent 是大模型的未来

最有想象力、最有前景的方向 “Agent 是 LLM(大语言模型)的最有前景的方向。一旦技术成熟,短则几个月,长则更久,它可能就会创造出超级个体。这解释了我们为何对开源模型和 Agent 兴奋,即便投产性不高,但是我们能想象自己有了 Agent 之后就可以没日没夜地以百倍效率做现在…

mysql 8.0.20不停机主从同步

一、环境 CentOS &#xff1a; 7.3.1611 (Core) mysql&#xff1a;8.0.20 二、遇到的问题 1.查看主从同步发现下列问题 error connecting to master repl192.168.0.21:3306 - retry-time: 60 retries: 4 message: Authentication plugin caching_sha2_password reported e…

java版鸿鹄工程项目管理系统 Spring Cloud+Spring Boot+前后端分离构建工程项目管理系统源代码

鸿鹄工程项目管理系统 Spring CloudSpring BootMybatisVueElementUI前后端分离构建工程项目管理系统 1. 项目背景 一、随着公司的快速发展&#xff0c;企业人员和经营规模不断壮大。为了提高工程管理效率、减轻劳动强度、提高信息处理速度和准确性&#xff0c;公司对内部工程管…

SpringBoot整合Minio

SpringBoot整合Minio 在企业开发中&#xff0c;我们经常会使用到文件存储的业务&#xff0c;Minio就是一个不错的文件存储工具&#xff0c;下面我们来看看如何在SpringBoot中整合Minio POM pom文件指定SpringBoot项目所依赖的软件工具包 <?xml version"1.0" …