Kubeadm方式搭建K8S集群

news2024/11/19 0:41:06

Kubeadm方式搭建K8S集群

环境准备

在虚拟机里安装三台centos 7.x操作系统

配置系统名称和ip地址(同一网段)如:

角色IP
master192.168.66.100
node1192.168.66.101
node2192.168.66.102

三台机器都要执行的命令:(使用xshell执行命令更方便)

# 关闭防火墙
systemctl stop firewalld
systemctl disable firewalld

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

# swap永久关闭
sed -ri 's/.*swap.*/#&/' /etc/fstab

# 添加hosts
cat >> /etc/hosts << EOF
192.168.66.100 master
192.168.66.101 node1
192.168.66.102 node2
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

在这里插入图片描述

安装Docker(三台机器都需要安装)

配置Docker的阿里yum源

cat >/etc/yum.repos.d/docker.repo<<EOF
[docker-ce-edge]
name=Docker CE Edge - \$basearch
baseurl=https://mirrors.aliyun.com/docker-ce/linux/centos/7/\$basearch/edge
enabled=1
gpgcheck=1
gpgkey=https://mirrors.aliyun.com/docker-ce/linux/centos/gpg
EOF

以yum方式安装docker

# yum安装
yum -y install docker-ce

# 查看docker版本
docker --version  

# 启动docker
systemctl enable docker
systemctl start docker

在这里插入图片描述

配置docker的镜像源

cat >> /etc/docker/daemon.json << EOF
{
  "registry-mirrors": ["https://b9pmyelo.mirror.aliyuncs.com"]
}
EOF

重启docker

systemctl restart docker

添加kubernetes软件源

配置yum的k8s软件源

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

安装kubeadm,kubelet和kubectl

由于版本更新频繁,这里指定版本号部署:

# 安装kubelet、kubeadm、kubectl,同时指定版本
yum install -y kubelet-1.18.0 kubeadm-1.18.0 kubectl-1.18.0
# 设置开机启动
systemctl enable kubelet

部署master节点

在master节点执行(此处的192.168.66.100为小编master机器的ip,需更换)

kubeadm init --apiserver-advertise-address=192.168.66.100 --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

在这里插入图片描述

等待其出现成功提示

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-SQ2t7Y1r-1684324168159)(C:\Users\123\AppData\Roaming\Typora\typora-user-images\image-20230516181608215.png)]

然后按提示在master节点上输入提示命令

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

在这里插入图片描述

按照master生成的代码向集群添加新节点(node1和node2上的操作)

在node1和node2上执行在master上产生的kubeadm join命令:(根据实际而定,下面的是小编机器上的,仅供参考)

在这里插入图片描述

kubeadm join 192.168.66.100:6443 --token 7fqt6v.729wvdcjmgivns7y \
    --discovery-token-ca-cert-hash sha256:ef79029853fa3c5454cbfc5273a636c843db0ab96e4592467b8a1490b6b6d3c6 

我们就可以去Master节点 执行下面命令查看情况

kubectl get node

在这里插入图片描述

部署CNI网络插件

上面的状态还是NotReady,下面我们需要网络插件,来进行联网访问

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

在这里插入图片描述

# 查看状态 
kubectl get pods -n kube-system

在这里插入图片描述

此时还有未处于running状态的pod,再等些时间,再查看状态,全部变为running状态时,执行下面命令查看:

kubectl get node

在这里插入图片描述

运行完成后,此时可以发现,已经变成了Ready状态。若还存在NotReady状态的节点,再等些时间,然后执行kubectl get pods -n kube-system命令,若状态为running,再执行kubectl get node查看即可

测试kubernetes集群

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

# 下载nginx 
kubectl create deployment nginx --image=nginx
# 查看状态
kubectl get pod

出现Running状态时,表示已经成功运行了

在这里插入图片描述

下面我们就需要将端口暴露出去,让其它外界能够访问

# 暴露端口
kubectl expose deployment nginx --port=80 --type=NodePort
# 查看一下对外的端口
kubectl get pod,svc

能够看到,我们已经成功暴露了 80端口 到 30374上

在这里插入图片描述

在浏览器上,访问如下地址(任一一个节点的ip加上面显示的端口)

http://192.168.66.102:30374/

发现我们的nginx已经成功启动了

在这里插入图片描述

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

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

相关文章

Cloudcanal数据同步神器

一.背景与需求 最近有个OLAP的需求&#xff0c;我们需要将MySQL的一些数据(这种数据有一种特性就是一旦产生记录&#xff0c;以后不会再进行修改、删除操作&#xff0c;例如登录日志、操作日志等诸如此类)。这种数据特性正好符合Clickhouse的用武之地&#xff0c;我们经过调研最…

【冲刺蓝桥杯】牛客竞赛补题 + 算法模板总结

&#x1f34e; 博客主页&#xff1a;&#x1f319;披星戴月的贾维斯 &#x1f34e; 欢迎关注&#xff1a;&#x1f44d;点赞&#x1f343;收藏&#x1f525;留言 &#x1f347;系列专栏&#xff1a;&#x1f319; C/C专栏 &#x1f319;请不要相信胜利就像山坡上的蒲公英一样唾…

Songtell.CN:用AI解锁您最喜欢的歌曲背后的含义!

&#x1f3a7;听歌不止是享受&#xff0c;还有深度的情感寓意&#xff01; &#x1f3a7;探索音乐真谛&#xff0c;Songtell.CN带你用 AI 解锁歌曲深度含义&#xff01; &#x1f3b6;音乐是人类的共同语言&#xff0c;它能够温暖我们的心灵&#xff0c;带给我们力量和勇气。…

参与辅助服务的用户侧储能优化配置及经济分析(Matlab代码实现)

&#x1f4a5;&#x1f4a5;&#x1f49e;&#x1f49e;欢迎来到本博客❤️❤️&#x1f4a5;&#x1f4a5; &#x1f3c6;博主优势&#xff1a;&#x1f31e;&#x1f31e;&#x1f31e;博客内容尽量做到思维缜密&#xff0c;逻辑清晰&#xff0c;为了方便读者。 ⛳️座右铭&a…

Web APIs之DOM-获取元素

一.Web API基本认知 二.获取DOM对象 三.操作元素内容 四. 操作元素属性 五.定时器-间歇函数 一、Web API基本认知 *作用和分类 *什么是DOM *DOM树 *DOM对象 1.作用和分类 &#xff08;1&#xff09;作用&#xff1a;使用JS去操作html和浏览器 &#xff08;2&#xff09…

【经验分享】一种高内聚低耦合的消息分发模块的设计与实现

【经验分享】一种高内聚低耦合的消息分发模块的设计与实现 又到了每天的open话题&#xff1a;【代码面对面】时刻&#xff0c;让我们一起在摸鱼中学习技术吧。今天的话题是嵌入式的消息分发模块&#xff0c;你会怎么设计和实现&#xff1f; 1 写在前面 老套路&#xff0c;我先…

开源LLM「RWKV」想要打造AI领域的Linux和Android|ChatAI

RWKV想逐步成为最强开源模型&#xff0c;中期计划取代Transformer。能如愿吗&#xff1f; “我们没有护城河&#xff0c;OpenAI也是。”近期&#xff0c;谷歌内部人士在Discord社区匿名共享了一份内部文件&#xff0c;点破了谷歌和OpenAI正面临的来自开源社区的挑战。尽管经外…

QT的qrc文件的创建和编辑

qrc文件&#xff0c;这个是Qt的资源文件&#xff0c;如果在pro文件中不包含的话&#xff0c;在编译的时候会提示找不到相应资源的错误&#xff1b;下面说一下手动修改pro和编写qrc文件的方法: 2.1 添加qrc文件&#xff1b; 2.2 编写qrc文件&#xff1b; 可以用 file…

SocketTools.NET 11.0 Crack

在所有 HTTP 客户端组件中添加对 HTTP/2.0 协议的支持。 2023 年 5 月 17 日 - 10:58新版本 特征 在所有 HTTP 客户端组件中添加了对 HTTP/2.0 协议的支持。 更新了 TLS 1.2&#xff08;及更高版本&#xff09;和 SSH 2.0 的安全选项&#xff0c;以使用 Microsoft Windows 11 和…

关于so的加密和解密(个人记录文件暂不分享)

一往情深深几许,深山夕照深秋雨 文章目录 一、so加密解密的介绍二、框架的so加密1.pom的依赖导入2.编写SoUtil 工具类3.编写处理byte工具类HexCode4.编写接口进行调用接口进行加解密总结提示:以下是本篇文章正文内容,下面案例可供参考 一、so加密解密的介绍 他是和jar包一同…

8年经验来面试20K的测试岗,连基础都不会,还不如招应届生。

公司前段时间缺人&#xff0c;也面了不少测试&#xff0c;结果竟然没有一个合适的。一开始瞄准的就是中级的水准&#xff0c;也没指望来大牛&#xff0c;提供的薪资在10-20k&#xff0c;面试的人很多&#xff0c;但平均水平很让人失望。看简历很多都是3、4年工作经验&#xff0…

抽象编程——九章算术

九章算术 开篇&#xff0c;求最大公约数——辗转相减法 声明三个值 最大值 X 、最小值为 Y、商值 Z 用三个值解决辗转相减法 用最大值减去最小值得到商值&#xff0c;然后去掉原本的最大值&#xff0c;拿原本的最小值与商值作比较&#xff0c;得到第二个最大值与第二个…

Spring AOP介绍与使用

文章目录 1&#xff0c;AOP简介1.1 什么是AOP?1.2 AOP作用1.3 AOP核心概念 2&#xff0c;AOP入门案例2.1 需求分析2.2 思路分析2.3 环境准备2.4 AOP实现步骤步骤1:添加依赖步骤2:定义接口与实现类步骤3:定义通知类和通知步骤4:定义切入点步骤5:制作切面步骤6:将通知类配给容器…

京东太猛,手写hashmap又一次重现江湖

说在前面 在40岁老架构师 尼恩的读者社群(50)中&#xff0c;最近有小伙伴拿到了一线互联网企业如京东、极兔、有赞、希音、百度、网易的面试资格&#xff0c;遇到一个很重要的面试题&#xff1a; 手写一个hashmap&#xff1f; 尼恩读者反馈说&#xff0c;之前总是听人说&#…

栈——“数据结构与算法”

各位uu们&#xff0c;好久不见&#xff01;&#xff01;&#xff01;甚是想念&#xff01;&#xff01;&#xff01; 好久没有更新我们的数据结构与算法专栏啦&#xff0c;最近小雅兰新学了很多知识&#xff0c;第一时间就想迫不及待地和C站的小伙伴们分享呢&#xff0c;下面&a…

LeetCode高频算法刷题记录3

文章目录 1. 搜索旋转排序数组【中等】1.1 题目描述1.2 解题思路1.3 代码实现 2. 有效的括号【简单】2.1 题目描述2.2 解题思路2.3 代码实现 3. 买卖股票的最佳时机【简单】3.1 题目描述3.2 解题思路3.3 代码实现 4. 环形链表【简单】4.1 题目描述4.2 解题思路4.3 代码实现 5. …

ChatGPT Plus 插件最全解读

前言&#xff1a; OpenAI放出大招&#xff0c;向所有ChatGPT Plus用户开放联网功能和众多插件&#xff0c;允许ChatGPT访问互联网并使用70个第三方插件。 本批第三方插件能够全方位覆盖衣食住行、社交、工作以及学习等日常所需&#xff0c;基本上能够扮演24小时私人助理的角色…

SaleSmartly聊天机器人如何帮助您的电商业务

从基于规则的机器人到虚拟助手&#xff0c;聊天机器人正在成为网络交互的标准。越来越多的企业正在使用它们来吸引客户、改善客户服务并增强用户体验。现在有非常多的软件也提供聊天机器人的帮助&#xff0c;比如SaleSmartly&#xff08;ss客服&#xff09;&#xff0c;本文以它…

【包真】我的第一次webpack优化,首屏渲染从9s到1s

目录 前言 1.生产环境关闭productionSourceMap、css sourceMap 2.分析大文件&#xff0c;找出内鬼 3. 逐个包优化 TreeShaking 使用cdn加载第三方js 懒加载有间接依赖的包 moment.js的优化 还有进步空间&#xff1f; 最后 前言 本文基于vue2(虽然vue…

我的小实验项目:实现人体红外采集控制LED灯亮灭

从传感器电路图中找到红外感应&#xff0c;找到接口D2&#xff0c;可以看出&#xff0c;采集的信息从D2进入 从核心板电路图找到D2接口&#xff0c;发现引脚为PB8 并用相似的方法&#xff0c;找到用于代表有人无人的LED灯 在STM32CubeMx里设置 在Keil里设置代码 main.c&#x…