Kubernetes集群安装

虚拟机准备

按照三台虚拟机标准,一台控制节点两台工作节点

主机名ip配置要求
master-k8s192.168.242.102GB或更多RAM,2个CPU或更多CPU,硬盘30GB或更多
node01-k8s192.168.242.112GB或更多RAM,2个CPU或更多CPU,硬盘30GB或更多
nide02-k8s192.168.242.122GB或更多RAM,2个CPU或更多CPU,硬盘30GB或更多

系统初始化配置(三台节点相同)

关闭防火墙(不赘述)

关闭 selinux (不赘述)

关闭swap

swapoff -a # 临时关闭vi /etc/fstab #永久关闭 
注释swap开机挂载行 sed -i 's/.swap./#&/' /etc/fstab

设置时间同步

yum install ntpdate -y
ntpdate us.pool.ntp.org
hwclock -w

每台主机添加hosts:

cat >> /etc/hosts << EOF
192.168.242.10 master-k8s
192.168.242.11 node01-k8s
192.168.242.12 node02-k8s
EOF

到这里最好重启一下系统

所有节点安装Docker/kubeadm/kubelet/kubectl

安装Docker(所有节点)

wget https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo -O /etc/yum.repos.d/docker-ce.repo# 看一下可用版本
yum list docker-ce --showduplicates |sort -r
# 安装20版本的docker与客户端
yum -y install docker-ce-20* docker-ce-cli-20*
# 设置docker自启动
systemctl enable docker && systemctl start docker
docker --version

配置Docker加速镜像

vi /etc/docker/daemon.json# 写入以下格式的镜像地址(可用镜像需自行测试是否可用)
{ "registry-mirrors": ["https://docker.xuanyuan.me/"] }# 重启docker
systemctl daemon-reload
systemctl restart docker# 查看生效的镜像(如果生效,会列出生效的镜像地址)
docker info | grep -i -A5 'Registry Mirrors'

安装docker命令补全(可选)

yum install bash-completion -ycurl -L https://raw.githubusercontent.com/docker/compose/1.24.1/contrib/completion/bash/docker-compose -o /etc/bash_completion.d/docker-composesource /etc/bash_completion.d/docker-compose## exit后重新登入即可使用docker命令补全

将桥接的IPv4流量传递到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
vm.swappiness = 0
EOF# 加载br_netfilter模块
modprobe br_netfilter# 查看是否加载
lsmod | grep br_netfilter# 生效
sysctl --system  

在这里插入图片描述

安装kubeadm,kubelet和kubectl(所有节点)

# 添加yum源
vi /etc/yum.repos.d/kubernetes.repo[kubernetes]
name=Kubernetes
baseurl=https://mirrors.aliyun.com/kubernetes/yum/repos/kubernetes-el7-x86_64
enabled=1
gpgcheck=0# 更新yum源
yum clean all
yum makecache fast#  安装kubeadm,kubelet和kubectl
yum install -y kubelet-1.21.0 kubeadm-1.21.0 kubectl-1.21.0
systemctl restart kubelet
systemctl enable kubelet

主节点配置

ssh密钥生成并分发

# 生成密钥
ssh-keygen -t rsa# 分发密钥给工作节点
ssh-copy-id -i .ssh/id_rsa.pub root@node01-k8s
ssh-copy-id -i .ssh/id_rsa.pub root@node02-k8s

部署Kubernetes Master(这一步建议所有节点都做一遍,因为下面很快就会看到血淋淋的教训了!!!)

# 下载依赖(因为实测直接运行下面会提示缺少google_containers……这个镜像,可能是没有1.8.0版本,所以直接手动pull一个,改一下标签名)
docker pull coredns/coredns:1.8.0#  将coredns/coredns:1.8.0 镜像标记为google_containers……docker tag coredns/coredns:1.8.0 registry.aliyuncs.com/google_containers/coredns/coredns:v1.8.0# 这里网络较慢,请耐心等待……

指定阿里云镜像仓库地址

# apiserver-advertise-address值是主机的ip,其他的无需更改kubeadm init \--apiserver-advertise-address=192.168.242.10 \--image-repository registry.aliyuncs.com/google_containers \--kubernetes-version v1.21.0 \--service-cidr=10.96.0.0/12 \--pod-network-cidr=10.244.0.0/16# 这里网络较慢,请耐心等待……

根据提示信息,在Master节点上运行命令

在这里插入图片描述

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

!!!重要提示,上一部完成的时候末尾会显示一个token,请保管好,一会儿添加节点这是凭证!!!

在这里插入图片描述

工作节点配置(所有工作节点)

# 在daemon.json文件中指定驱动
cat /etc/docker/daemon.json{"registry-mirrors": ["https://docker.xuanyuan.me/"],"exec-opts":["native.cgroupdriver=systemd"]}# 确定文件如上含有"exec-opts":["native.cgroupdriver=systemd"]即可。# 重启docker
systemctl restart docker
# 看一下状态,确定上面配置文件没错,docker正常运行
systemctl status docker

将工作节点加入Kubernetes Node(请输入自己的token)

# 所有工作节点均粘贴此命令
kubeadm join 192.168.242.10:6443 --token y868jj.hoknpgwpykqodf41 \--discovery-token-ca-cert-hash sha256:af0db6d53cb1bc5cf66f7fa2cc86f5221c6bca9c5682075c61a88d6bf7c8198e

!!!!!这一步卡住不动的,一定一定要检查自己的防火墙和selinux是否关闭!!!!!!

在主节点上将/etc/kubernetes/admin.conf文件copy到工作节点上

# 主节点上copy文件
scp /etc/kubernetes/admin.conf node01-k8s:/etc/kubernetes/
scp /etc/kubernetes/admin.conf node02-k8s:/etc/kubernetes/# 分别在每个node上运行以下命令:
echo "export KUBECONFIG=/etc/kubernetes/admin.conf" >> ~/.bash_profile
source ~/.bash_profile

加入成功在三台机器上运行kubectl get nodes都会有如下效果**(!!!注意,你的应该是node01和node02状态是Ready,我这里出错了)**

注意,每台机器上都是一样的才说明没问题,某一台不是下图这种就说明有问题!!!

在这里插入图片描述

安装Pod网络插件(主节点)

# 可能需要魔法,如果下载不了就下载到本地后上传服务器wget https://raw.githubusercontent.com/coreos/flannel/master/Documentation/kube-flannel.ymlkubectl apply -f kube-flannel.yml# 注意这里网络可能不好,可以检查一下下载网速,可以看出是在下载中。kubectl get pods -n kube-system也可以看到前两个pod的状态是Pending

如果这里状态变为ImagePullBackOff可以看一下自己的pod详细描述,这里举一个例子

在这里插入图片描述

上面显示ImagePullBackOff,说明有问题,可以使用kubectl describe pod coredns-545d6fc579-rddhk -n kube-system命令进行查看(注意换成自己的pod名)

在这里插入图片描述

可以看到coredns的pod被调度到k8s-node01上了,而这个节点没有对应的镜像,也就是下面图中我说过的,建议都做一遍(为什么现在才说,因为本人忘记配置了,在这里报错后才想起来,括号里的字也是这时候补上的,懒得调整格式了)

在这里插入图片描述

ok,做完这一切,完全恢复正确了。

在这里插入图片描述

这里可以看见master状态也是Ready

在这里插入图片描述

安装命令补全工具(可以Tab补齐命令!)

yum -y install bash-completion
source /usr/share/bash-completion/bash_completion
source <(kubectl completion bash)
echo "source <(kubectl completion bash)" >> ~/.bashrc

!!一定要看!!

集群搭建完结撒花(本文最后两张图的所有STATUS务必是Running和Ready,这才代表你可以完结撒花)

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

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

相关文章

Excel点击单元格内容消失

Excel点击单元格内容消失 前言一、原因说明二、解决方案1.菜单栏中找到“审阅”&#xff0c;选择“撤销工作表保护”2.输入密码3.解除成功 前言 Excel想要编辑单元格内容时&#xff0c;无论是单击还是双击单元格内容都莫名其妙的消失了 一、原因说明 单击或者双击Excel中单元…

最优化方法Python计算:有约束优化应用——线性Lasso回归预测器

实际应用中&#xff0c;特征维度 n n n通常远大于样本容量 m m m&#xff08; n ≪ m n\ll m n≪m&#xff09;&#xff0c;这种高维小样本场景下特征数据可能含有对标签数据 y i y_i yi​的取值不必要的成分&#xff0c;甚至是噪声。此时&#xff0c;我们希望回归模型中的优化…

如何为APP应用程序选择合适的服务器

搭建一个成功的APP应用程序&#xff0c;服务器选择是至关重要的决策之一。合适的服务器不仅能确保应用流畅运行&#xff0c;还能节省成本并保障安全性。本文将为您详细解析如何为APP选择最佳服务器方案。 一、了解您的APP需求 在选择服务器前&#xff0c;首先需要明确您的应用…

k8s(11) — 探针和钩子

钩子和探针的区别&#xff1a; 在 Kubernetes&#xff08;k8s&#xff09;中&#xff0c;钩子&#xff08;Hooks&#xff09;和探针&#xff08;Probes&#xff09;是保障应用稳定运行的重要机制&#xff0c;不过它们的用途和工作方式存在差异&#xff0c;以下为你详细介绍&…

Kafka消息队列之 【消费者分组】 详解

消费者分组(Consumer Group)是 Kafka 提供的一种强大的消息消费机制,它允许多个消费者协同工作,共同消费一个或多个主题的消息,从而实现高吞吐量、可扩展性和容错性。 基本概念 消费者分组:一组消费者实例的集合,这些消费者实例共同订阅一个或多个主题,并通过分组来协调…

什么是Blender?怎么获取下载Blender格式文件模型

glbxz.com glbxz.com 官方可以下载Blender格式文件模型 BlenderBlender 是一个免费的开源程序&#xff0c;用于建模和动画&#xff0c;最初由一家名为 Neo Geo 的动画工作室作为内部应用程序开发&#xff0c;后来作为自己的程序发布。这是一个称职的程序&#xff0c;近年来由于…

IC ATE集成电路测试学习——PLL测试(一)

PLL测试 什么是PLL&#xff1f; PLL Phase-Locked Loop&#xff08;锁相环&#xff09;它的作用就是&#xff1a;把低速、稳定的外部时钟&#xff0c;转换成芯片内部需要的高速时钟。 PLL的作用 我们知道&#xff0c;芯片的内部不同的模块&#xff0c;很可能用的不是一个频…

ReaRAG:教 AI 思考、搜索和自我纠正以获得事实准确答案(含git实现)

推理模型&#xff08;LRMs&#xff09;的发展取得了显著进展&#xff0c;展现出强大的推理能力&#xff0c;能在复杂任务中表现出色。然而&#xff0c;这些模型在多跳问答&#xff08;QA&#xff09;任务中仍面临挑战&#xff0c;主要归因于其对参数化知识的依赖&#xff0c;导…

第2章——springboot核心机制

一、为何以继承方式引入SpringBoot 1.提出疑问 以前我们在开发项目时&#xff0c;需要什么&#xff0c;引入对应的依赖就行&#xff0c;比如我们需要连接mysql数据&#xff0c;则引入mysql驱动的依赖&#xff0c;如下&#xff1a; <dependency><groupId>com.mys…

网络接入服务商查询

要查询网站的 网络接入服务商&#xff08;即网站服务器托管或接入的ISP公司&#xff09;&#xff0c;可以通过以下方法进行查询&#xff1a; 方法1&#xff1a;通过IP地址查询 步骤1&#xff1a;获取网站IP 使用 ping 命令&#xff1a; ping example.com 返回的IP地址即为服务…

超详细!RxSwift 中的 BehaviorRelay 使用教程(含原理 + 示例 + 实战)

目录 前言 1.什么是 BehaviorRelay 2.基本使用方式 3.BehaviorRelay的常用API 4.BehaviorRelay 和其它类型的对比 5.BehaviorRelay的使用场景 1.绑定UITableView 2.MVVM 场景下使用 BehaviorRelay 6.使用注意事项以及建议 1.注意事项 2.使用建议总结 7.推荐阅读 前…

vue-grid-layout实现拖拽修改工作台布局

效果图 vue-grid-layout 文档地址&#xff1a;vue-grid-layout 官网介绍&#xff1a; 使用 // 安装&#xff1a; npm install vue-grid-layout --save// 引用&#xff1a; import { GridLayout, GridItem } from vue-grid-layout// 注册&#xff1a; components:{ GridLay…

windows使用bat脚本激活conda环境

本文不生产技术&#xff0c;只做技术的搬运工&#xff01;&#xff01;&#xff01; 前言 最近需要在windows上使用批处理脚本执行一些python任务&#xff0c;但是被自动激活conda环境给卡住了&#xff0c;研究了一下解决方案 解决方案 call your_conda_path\Scripts\activa…

u-boot学习笔记(四)

文章目录 cmd/sub_cmd/exit.cdo_exit()exit.c可提供的命令及使用方式&#xff1a; ext2.cdo_ext2ls()do_ext2load()ext2.c可提供的命令及使用方式&#xff1a; ext4.cdo_ext4_size()do_ext4_load()do_ext4_ls()do_ext4_write()ext4.c可提供的命令及使用方式&#xff1a; fastbo…

OpenCV 图形API(80)图像与通道拼接函数-----仿射变换函数warpAffine()

操作系统&#xff1a;ubuntu22.04 OpenCV版本&#xff1a;OpenCV4.9 IDE:Visual Studio Code 编程语言&#xff1a;C11 算法描述 对图像应用仿射变换。 函数 warpAffine 使用指定的矩阵对源图像进行变换&#xff1a; dst ( x , y ) src ( M 11 x M 12 y M 13 , M 21 x M…

《React Native热更新实战:用Pushy打造无缝升级体验》

《React Native热更新实战:用Pushy打造应用“空中加油”,实现无缝升级体验》 写在前面:当你的APP需要"空中加油"时… 想象一下这样的场景:凌晨2点,你的React Native应用刚上线就爆出重大BUG,用户差评如潮水般涌来,应用商店审核至少需要3天…此刻你多么希望能…

《社交应用架构生存战:React Native与Flutter的部署容灾决胜法则》

React Native和Flutter作为当下热门的跨平台开发框架&#xff0c;在社交应用开发领域各显神通。今天&#xff0c;我们深入探索它们在高可用架构中的部署与容灾策略。 React Native凭借其独特优势&#xff0c;在社交应用开发中拥有一席之地。它基于JavaScript和React&#xff0…

网络靶场基础知识

一、网络靶场的核心概念 网络靶场&#xff08;Cyber Range&#xff09;是一种基于虚拟化和仿真技术的网络安全训练与测试平台&#xff0c;通过模拟真实网络环境和业务场景&#xff0c;为攻防演练、漏洞验证、安全测试和人才培养提供安全可控的实验空间。其核心目标是通过“虚实…

AutoGen 框架解析:微软开源的多人 Agent 协作新范式

一、引言 在大语言模型&#xff08;LLM&#xff09;快速发展的今天&#xff0c;复杂任务的自动化协作需求日益增长。微软开源的AutoGen 框架&#xff08;GitHub Star 超 10 万&#xff09;提供了一种基于多智能体对话的协作范式&#xff0c;通过自然语言交互实现多角色 Agent …

极简远程革命:节点小宝 — 无公网IP的极速内网穿透远程解决方案

极简远程革命&#xff1a;节点小宝&#xff0c;让家庭与职场无缝互联 ——打破公网桎梏&#xff0c;重塑数字生活新体验 关键词&#xff1a;节点小宝&#xff5c;内网穿透&#xff5c;P2P直连&#xff5c;家庭网络&#xff5c;企业协作&#xff5c;智能组网节点小宝&#xff5…