Linux搭建Kubernetes集群(单Master)【附图文】

文章目录

    • 一、集群环境配置要求
    • 二、主机准备
    • 三、初始环境准备
      • 1.关闭防火墙
      • 2.关闭 selinux
      • 3.关闭swap
      • 4.加载 br_netfilter 模块
      • 5.允许iptables转发流量
      • 6.设置时间同步
    • 四、安装Docker
    • 五、安装kubeadm, kubectl, kubelet
    • 六、在Master节点部署集群
    • 七、将 node 节点加入集群
    • 八、部署 CNI 网络插件

一、集群环境配置要求

master 节点:

  • CPU 两核及以上
  • 内存 4G 及以上
  • 硬盘 20G 及以上

node 节点(配置要求会更高):

  • CPU 四核及以上
  • 内存 8G 及以上
  • 硬盘 40G 及以上

二、主机准备

准备三台虚拟机,分别安装Red Hat系统,一台作为 master 节点,另两台作为 node 节点,且每台虚拟机有自己的专属 IP 地址。

hostnameIP
Master节点master192.168.80.40
Node节点node01192.168.80.39
Node节点node02192.168.80.55

Red Hat7.9镜像下载地址
链接:https://pan.baidu.com/s/1AO_iDLgFCGymHHy9CKrqiA?pwd=c2ne
提取码:c2ne

虚拟机创建和配置注意事项:

  • 硬件最少达到以上最低标准配置;
  • 三台虚拟机的网络连接选择一样的模式; 在这里插入图片描述
  • 创建时禁止swap分区(安装时如果没有禁止swap分区,后续通过命令禁止);
  • 创建完成确保虚拟机可以访问外网,以便下载镜像;
  • 安装weget工具(yum intsall weget);

三、初始环境准备

以下在三个节点都执行(只截取其中一个节点作为示例)

1.关闭防火墙

#临时关闭
systemctl stop firewalld
#永久关闭
systemctl disable firewalld

2.关闭 selinux

#临时关闭
setenforce 0
#永久关闭
sed -i '/selinux/s/enforcing/disabled/' /etc/selinux/config

3.关闭swap

#临时关闭
swapoff -a#永久关闭
vi /etc/fstab  # 将swap一行注释

在这里插入图片描述

#关闭当前的 swap
swapoff -a 
#验证 swap 是否已关闭
cat /proc/swaps
#如果输出为空,则表示 swap 已关闭

在这里插入图片描述

4.加载 br_netfilter 模块

#load mod
modprobe br_netfilter
echo "modprobe br_netfilter" >> /etc/rc.d/rc.local
chmod +x /etc/rc.d/rc.local

5.允许iptables转发流量

#允许iptables转发流量
cat > /etc/sysctl.d/k8s.conf <<EOF
net.bridge.bridge-nf-call-ip6tables = 1
net.bridge.bridge-nf-call-iptables = 1
net.ipv4.ip_forward=1
EOF#使其生效
sysctl --system#检查iptables设置为接受
iptables-save |grep DROP

6.设置时间同步

yum install ntpdate -y
ntpdate time.windows.com

在这里插入图片描述

这里如果报错:

在这里插入图片描述
需要配置DNS服务器:
vi /etc/resolv.conf

#Generated by NetworkManager
nameserver 114.114.114.114
nameserver 8.8.8.8
nameserver 8.8.4.4

四、安装Docker

三个节点都需要安装(只截取其中一个节点作为示例)

cd /etc/yum.repos.d/
wget http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
wget -O /etc/yum.repos.d/CentOS-Base.repo https://mirrors.aliyun.com/repo/Centos-7.repo
#替换文件中每一行里所有的 $releasever 为 7
vi CentOS-Base.repo
#按 Esc 键回到命令模式,输入以下命令进行替换
:%s/$releasever/7/g
($releasever在CentOS中可以自动解析为对应版本,但是redhat不支持自动解析,需要手动替换 备份原yum文件)#安装docker
yum install -y docker-ce-19.03.15-3.el7
#安装完成查看docker版本
docker -v# config docker server 
mkdir -p /etc/docker
cat > /etc/docker/daemon.json <<EOF
{
"insecure-registries": ["0.0.0.0/0"
],
"registry-mirrors": ["https://otvjuhk6.mirror.aliyuncs.com"],
"exec-opts": ["native.cgroupdriver=systemd"],
"log-driver": "json-file",
"log-opts": {"max-size": "100m"
},
"live-restore": true,
"storage-driver": "overlay2",
"storage-opts": ["overlay2.override_kernel_check=true"
]
}
EOF# start docker
systemctl enable docker && systemctl start docker

在这里插入图片描述

五、安装kubeadm, kubectl, kubelet

三个节点都安装(只截取其中一个节点作为示例)

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=1
repo_gpgcheck=1
gpgkey=https://mirrors.aliyun.com/kubernetes/yum/doc/yum-key.gpg https://mirrors.aliyun.com/kubernetes/yum/doc/rpm-package-key.gpg
EOFyum install -y kubelet-1.18.17 kubeadm-1.18.17 kubectl-1.18.17 
systemctl enable kubelet && systemctl start kubelet

在这里插入图片描述

六、在Master节点部署集群

在 master 节点中执行以下命令,将apiserver-advertise-address 和
kubernetes-version修改为自己的Master节点IP和kube 版本号。

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

执行完成后会生成两条命令
在这里插入图片描述
使用命令docker images查看系统中的镜像,可以看到我们需要的镜像均已安装完成。
在这里插入图片描述

七、将 node 节点加入集群

执行上一步输出的两条命令
在这里插入图片描述1.开启 kubectl 工具的使用(该命令在master节点中执行)

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

在这里插入图片描述

2.将 node 节点加入 master 中的集群(该命令在两个工作节点node中执行)

kubeadm join 192.168.80.40:6443 --token hmyqja.2xhx66gzlcbqrbkx \--discovery-token-ca-cert-hash sha256:f176209fbc7b2310a6f5251f3d7445ef3786aa5fc241c384627597da6394327a

在这里插入图片描述
在这里插入图片描述
执行完成后在master节点使用kubectl get nodes查看此时集群中的工作节点状态,可以看到node1 和 node2 工作节点已加入至 master 中的集群,但是状态都是NotReady。

在这里插入图片描述

在master节点使用kubectl get pods -n kube-system命令查看运行状态
可以看到有两个pod是处于Pending,因为没有安装网络组件。
在这里插入图片描述

八、部署 CNI 网络插件

在上述操作完成后,各个工作节点已经加入了集群,但是它们的状态都是 NoReady,这是由于无它们无法跨主机通信的原因。而 CNI 网络插件的主要功能就是实现 pod 资源能够跨宿主机进行通信。

在master节点中执行以下命令:

kubectl apply -f https://docs.projectcalico.org/v3.10/manifests/calico.yaml

在这里插入图片描述

再次查看运行状态已全部running

kubectl get pods -n kube-system

在这里插入图片描述
再次查看节点状态已全部Ready

kubectl get nodes

在这里插入图片描述
Kubernetes 集群搭建完成。

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

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

相关文章

(一)Readme 了解kurator

Kurator 是一个开源的分布式云原生平台&#xff0c;旨在帮助用户构建自己的分布式云原生基础设施&#xff0c;并出金企业进行数字化转型。 概览 云原生软件栈&#xff1a;kurator结合了多种流行的云原生软件栈&#xff08;Kubernetes、Istio、Prometheus等&#xff09;&#…

CSS(四)——CSS Text(文本)

CSS Text(文本&#xff09; 文本颜色 颜色属性被用来设置文字的颜色。 颜色是通过CSS最经常的指定&#xff1a; 十六进制值 - 如: &#xff03;FF0000 一个RGB值 - 如: RGB(255,0,0) 颜色的名称 - 如: red 一个网页的背景颜色是指在主体内的选择&#xff0c;即<body…

【C语言】英寸英尺转换米

运行的结果为 我们百度一下 恒明显我们的答案错了,那这个是为什么呢? 问题就出现在计算的地方,c语言规定两个整数计算,那么小数的部分会被丢弃. 如果计算的两个数中有一个数为小数,那么会将两个数都变为小数在进行计算,结果也会是小数. 那么我们现在就有解决办法了. 方法一…

【时时三省】unity test 测试框架 下载

目录 1&#xff0c;unity test 测试框架介绍 2&#xff0c;源码下载 3&#xff0c;目录架构 4&#xff0c;git for window 下载安装方法&#xff1a; 1&#xff0c;unity test 测试框架介绍 Unity是一个用于C语言的轻量级单元测试框架。它由Throw The Switch团队开发&#…

Umi-OCR:功能强大且易于使用的本地照片识别软件

Umi-OCR是一款开源且免费的离线OCR&#xff08;光学字符识别&#xff09;软件&#xff0c;可让您轻松从照片中提取文本。它支持多种语言&#xff0c;并具有许多其他功能使其成为照片识别任务的绝佳选择。 Umi-OCR的优势 离线操作&#xff1a; Umi-OCR无需互联网连接即可工作&…

鸿蒙开发仓颉语言【在工程中使用Hyperion TCP框架】

3. 在工程中使用Hyperion TCP框架 3.1 导入Hyperion TCP框架的静态库 在工程的module.json中引入Hyperion TCP框架的静态库&#xff1a; "package_requires": {"package_option": {"hyperion_hyperion.buffer": "${path_to_hyperion_proj…

基于Windows系统和linux系统,实现samba文件共享服务,

1.设置IP地址&#xff1a; vim /etc/sysconfig/network-scripts/ifcfg-ens33 2.关闭防火墙和selinux [roots ~]# systemctl stop firewalld [roots ~]# systemctl disable firewalld [roots ~]# vim /etc/selinux/config [roots ~]# setenforce 0 [roots ~]# 3.重启网络服…

Adobe国际认证详解-职业发展规划指南

Adobe国际认证&#xff0c;又称为Adobe Certified Professional&#xff08;简称ACP&#xff09;&#xff0c;是Adobe公司CEO签发的权威国际认证体系。这一认证体系基于Adobe核心技术及岗位实际应用操作能力的测评&#xff0c;旨在为用户提供创意软件的专业认证。 Adobe国际认证…

设计分享—国外医疗行业界面设计

医疗诊断界面是一个直观且信息丰富的数字平台&#xff0c;它集成了患者基本信息、病史记录、当前症状描述、检查结果展示以及智能诊断建议等功能于一体。 界面设计简洁明了&#xff0c;便于医生快速浏览关键信息&#xff0c;同时利用先进的算法辅助医生进行精准诊断&#xff0…

dou dian滑块captchaBody

声明(lianxi a15018601872) 本文章中所有内容仅供学习交流使用&#xff0c;不用于其他任何目的&#xff0c;抓包内容、敏感网址、数据接口等均已做脱敏处理&#xff0c;严禁用于商业用途和非法用途&#xff0c;否则由此产生的一切后果均与作者无关&#xff01; 前言(lianxi a…

最短路径 | 743. 网络延迟时间之 Dijkstra 算法和 Floyd 算法

目录 1 基于 Dijkstra 算法1.1 代码说明1.2 完整代码 2 基于 Floyd 算法2.1 代码说明2.2 完整代码 前言&#xff1a;我在做「399. 除法求值」时&#xff0c;看到了基于 Floyd 算法的解决方案&#xff0c;突然想起来自己还没有做过最短路径相关的题。因此找来了「743. 网络…

【黑马java基础】特殊文件,日志

目录 特殊文件&#xff1a;Properties属性文件特点、作用使用Properties读取属性文件里的键值对数据使用properties把键值对数据写到属性文件中去案例 特殊文件&#xff1a;XML文件概述读取XML文件中的数据把数据写出到XML文件中去补充知识&#xff1a;约束XML文件的编写[了解]…

HarmonyOS 本地真机运行

目录 官网地址 1.开发工具设置签名 2.手机开启开发者模式 3.使用USB连接方式 4.使用无线调试连接方式 5.常见的问题 官网地址 使用真机运行应用 使用本地真机运行应用/服务 1.开发工具设置签名 官网应用/服务签名 1.左上角文件--项目结构-勾选自动生成签名-Sign in登录 2…

Apache2服务介绍

apache2 安装使用配置web访问配置虚拟主机配置代理正向代理反向代理 官网 互联网上排名第一的 HTTP 服务器&#xff0c;Apache HTTP 服务器项目致力于开发和维护适用于现代操作系统&#xff08;包括 UNIX 和 Windows&#xff09;的开源 HTTP 服务器。该项目的目标是提供安全、…

【译】设计已死

文章概括&#xff1a; 本文探讨了人工智能&#xff08;AI&#xff09;的崛起如何可能使设计师甚至设计本身变得过时。作者借用尼采的名言“上帝已死”&#xff0c;引出设计在AI时代面临的困境&#xff0c;并分析了 AI 对设计行业的深远影响。 思维导图&#xff1a; 人类创造的…

GPT模型为什么能生成有意义的文本

GPT模型的底层&#xff0c;其实是谷歌团队推出的Transformer模型。但是在GPT-3出现之前&#xff0c;大家一直对它没有多少了解。直到它的参数数量突破1750亿个的时候&#xff0c;它才建立起一个庞大的神经网络&#xff0c;这个神经网络最突出的特点是大数据、大模型和大计算。其…

书生浦语多模态简述——学习笔记

多模态学习概念 多模态它是研究异构且相互连接数据的科学。它涵盖了从原始的器官信号到抽象概念的多种模态。 比如说我们语音和语言是我们理解人类交流的关键模态&#xff0c;而情感和图像就为我们提供了对环境和对象的感知&#xff0c;通过分析这些模态&#xff0c;我们就可…

技术成神之路:设计模式(九)观察者模式

介绍 观察者模式&#xff08;Observer Pattern&#xff09;是一种行为设计模式。它允许一个对象&#xff08;称为主题或可观察者&#xff09;来监视并通知一组依赖于这个对象的其他对象&#xff08;称为观察者&#xff09;&#xff0c;以便在主题状态发生变化时自动更新观察者的…

Python中高效处理大数据的几种方法

随着数据量的爆炸性增长&#xff0c;如何在Python中高效地处理大数据成为了许多开发者和数据科学家的关注焦点。Python以其简洁的语法和丰富的库支持&#xff0c;在数据处理领域占据了重要地位。本文将介绍几种在Python中高效处理大数据的常用方法。 目录 1. 使用Pandas进行数…

双向链表(C语言版)

1. 双向链表的结构 注意&#xff1a;这里的“带头”跟单链表的“头结点”是两个概念&#xff0c;实际上在单链表阶段称呼不太严谨&#xff0c;但是为了更好地理解就直接称为单链表的头结点。带头链表里的头结点&#xff0c;实际为“哨兵位”&#xff0c;哨兵位结点不存储任何有…