K8s学习笔记1-搭建k8s集群

news2024/11/16 18:53:38

本次使用kubeadm方式,部署1.23.17版本

安装包百度云盘地址:

链接:https://pan.baidu.com/s/1UrIotP253DoyDIYB7G1C0Q 
提取码:8q6a

集群所需虚拟机环境

主机名称IP资源
harbor10.0.0.2301c2g
master10.0.0.2312c4g
worker110.0.0.2322c4g
worker210.0.0.2332c4g

节点环境准备

1.所有节点hosts解析

cat >> /etc/hosts <<EOF
10.0.0.230 harbor harbor.test.com
10.0.0.231 master
10.0.0.232 worker1
10.0.0.233 worker2
EOF

2.harbor节点部署harbor镜像仓库(之前的博客有)

3.每个节点安装docker

yum -y install lrasz

然后将安装包拖进去获取rz -E 上传就好了

· 上传后解压安装

tar xf docker.tar.gz
./install-docker.sh install

· 配置内核转发

[root@master ~]# echo 'net.ipv4.ip_forward = 1' >> /etc/sysctl.conf
[root@master ~]# sysctl -p
net.ipv4.ip_forward = 1

· k8s三个节点每个节点配置docker

vim /etc/docker/daemon.json 

{
  "registry-mirrors": ["https://tuv7rqqq.mirror.aliyuncs.com"],
  "insecure-registries": ["harbor.test.com"],
  "exec-opts": ["native.cgroupdriver=systemd"]
}

· 解析

  "insecure-registries": ["harbor.test.com"], #允许拉取自建仓库harbor仓库的镜像;

   "exec-opts": ["native.cgroupdriver=systemd"]   #kubeadm去寻找的cgroup默认是systemd,而docker不配置的话,默认是cgroupfs,不配置这个,部署k8s时会报错;

· 配置完成后重启docker服务

systemctl restart docker

4.三个节点关闭swap分区

· 查看swap

[root@master ~]# free -h
              total        used        free      shared  buff/cache   available
Mem:           3.8G        275M        2.7G         19M        896M        3.3G
Swap:          2.0G          0B        2.0G

· 关闭swap

[root@master ~]# sed -ni '/^[^#]*swap/s@^@#@p' /etc/fstab

5.三个节点配置允许iptables桥接流量

cat > /etc/modules-load.d/k8s.conf << EOF
br_netfilter
EOF

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

6.关闭防火墙和selinux

· 关闭防火墙和selinux

systemctl stop firewalld
systemctl disable firewalld

· 关闭selinux

 vi /etc/selinux/config

改成:SELINUX=disabled

kubeadm方式部署k8s

1.上传解压软件包

tar xf kubeadm-kubelet-kubectl.tar.gz

2.本地化安装

yum -y localinstall kubeadm-kubelet-kubectl/*.rpm

3.设置启动及开机自启动k8s

systemctl enable --now kubelet.service

4.查看状态(此时启动失败,不用管,因为还没配置完成,配置完之后自动回启动)

systemctl status kubelet.service

5.初始化master节点

 kubeadm init --kubernetes-version=v1.23.17 --image-repository registry.aliyuncs.com/google_containers  --pod-network-cidr=10.100.0.0/16 --service-cidr=10.200.0.0/16  --service-dns-domain=test.com

        参数解析

--pod-network-cidr=10.100.0.0/16   #pod的网段

--service-cidr=10.200.0.0/16    #service资源的网段

--service-dns-domain=test.com  #service集群的dns解析名称

·如果初始化失败,想要重新初始化 

先执行:kubeadm reset -f
在执行: kubeadm init --kubernetes-version=v1.23.17 --image-repository registry.aliyuncs.com/google_containers  --pod-network-cidr=10.100.0.0/16 --service-cidr=10.200.0.0/16  --service-dns-domain=test.com

·若k8s 初始化失败

·然后查看docker服务,发现docker启动失败

发现硬盘变为只读硬盘

·将只读文件系统变更为可写的

1.查找只读硬盘

2.将硬盘重新挂载
mount -o remount,rw /sys/fs/cgroup
mount -o remount,rw /

重新初始化即可

6.初始化成功后按照提示执行

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

7.验证下master节点组件

·查看master组件

[root@master pod]# kubectl get cs
Warning: v1 ComponentStatus is deprecated in v1.19+
NAME                 STATUS    MESSAGE                         ERROR
controller-manager   Healthy   ok                              
scheduler            Healthy   ok                              
etcd-0               Healthy   {"health":"true","reason":""}   

·查看集群节点,此时只有一个master节点

[root@master pod]# kubectl get nodes
NAME      STATUS   ROLES                  AGE   VERSION
master    Ready    control-plane,master   31h   v1.23.17

8.将worker节点加入到集群中

·在两个worker节点上分别执行执行

kubeadm join 10.0.0.231:6443 --token 0he81g.kbo3vnqqmep9m33p --discovery-token-ca-cert-hash sha256:f865442d8659854db32f692d937c2d8b17e2a07942e8bd7d7bbb8a1d831b3fd1

·若是初始化后很长时间没有将worker节点加入到集群中,token会失效,需要重新生成

token失效报错如下:

master节点重新生成

kubeadm token create --print-join-command

然后在worker节点上分别执行生成的命令即可

9.查看集群状态

·master节点查看

worker节点加入集群后,在master节点上查看,此时发现,状态显示“NotReady,是因为未有CNI网络组件

[root@master ~]# kubectl get nodes
NAME     STATUS     ROLES                  AGE   VERSION
k8s231   NotReady   control-plane,master   13m   v1.23.17
k8s232   NotReady   <none>                 40s   v1.23.17
k8s233   NotReady   <none>                 18s   v1.23.17



10.master节点部署网络组件

·上传flannel组件(kube-flannel.yml)

·修改配置文件信息(修改网段信息--net-conf.json)

net-conf.json: |
    {
      "Network": "10.100.0.0/16",
      "Backend": {
        "Type": "vxlan"
      }
    }

·部署flannel组件

kubectl apply -f kube-flannel.yml

·查看flannel组件是否成功创建pod(每个节点是否都有)

[root@master pod]# kubectl get pods -A -o wide | grep flannel

问题:镜像拉不下来,imagebackoff

这里,如果未更改配置文件中的镜像下载地址,【running】那里会显示【imagebackoff】,这是因为国内把docker给禁了,无法直接从docker官网拉镜像了,可以先把镜像上传到harbor,将镜像下载地址变更为harbor的就好了(进入文件,输入/,然后输入image,将镜像地址变更为harbor地址)

1.修改flannel配置文件

这里是我自己的配置的地址,这个要根据自己配置的来

image: harbor.test.com/k8s/flannel/flannel:v0.22.2
image: harbor.test.com/k8s/flannel/flannel-cni-plugin:v1.2.0
image: harbor.test.com/k8s/flannel/flannel:v0.22.2

配置完成后

2.先删除部署flannel组件
kubectl delete -f kube-flannel.yml
3.重新部署
kubectl apply -f kube-flannel.yml
4.再次查看节点状态
[root@master pod]# kubectl get nodes
NAME      STATUS   ROLES                  AGE   VERSION
master    Ready    control-plane,master   31h   v1.23.17
worker1   Ready    <none>                 30h   v1.23.17
worker2   Ready    <none>                 30h   v1.23.17

至此,k8s集群搭建完毕

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

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

相关文章

全新UI自助图文打印系统源码(含前端小程序源码 PHP后端 数据库)

最新自助图文打印系统和证件照云打印小程序源码PHP后端&#xff0c;为用户用户自助打印的服务&#xff0c;包括但不限于文档、图片、表格等多种格式的文件。此外&#xff0c;它们还提供了诸如美颜、换装、文档打印等功能&#xff0c;以及后台管理系统&#xff0c;方便管理员对打…

7.13 专题训练DP

P1255 数楼梯 - 洛谷 | 计算机科学教育新生态 (luogu.com.cn) ac代码 #include<bits/stdc.h> using namespace std; typedef long long ll; #define IOS ios::sync_with_stdio(0),cin.tie(0),cout.tie(0) const ll mod 1e97;int main() {IOS;int n;cin>>n;int a[…

面向对象与C++进阶—并发与多线程篇

文章目录 18. 并发与多线程篇说在前面(1).线程和进程(2).并发和并行(3).thread(C11)#1.thread库与thread类#2.join和detach方法#3.id类和get_id方法#4.this_thread和系列操作 (4).原子操作#1.为什么是原子?#2.为什么需要原子操作&#xff1f;#3.atomic库 (5).竞态条件(6).线程…

7-1、2、3 IPFS介绍使用及浏览器交互(react+区块链实战)

7-1、2、3 IPFS介绍使用及浏览器交互&#xff08;react区块链实战&#xff09; 7-1 ipfs介绍7-2 IPFS-desktop使用7-3 reactipfs-api浏览器和ipfs交互 7-1 ipfs介绍 IPFS区块链上的文件系统 https://ipfs.io/ 这个网站本身是需要科学上网的 Ipfs是点对点的分布式系统 无限…

TEB局部路径规划算法代码及原理解读

TEB(Timed Elastic Band) 是一个基于图优化的局部路径规划算法&#xff0c;具有较好的动态避障能力&#xff0c;在ROS1/ROS2的导航框架中均被采用。该图优化以g2o优化框架实现&#xff0c;以机器人在各个离散时刻的位姿和离散时刻之间的时间间隔为顶点&#xff0c;约束其中的加…

IEEE(常用)参考文献引用格式详解 | LaTeX参考文献规范(IEEE Trans、Conf、Arxiv)

IEEE参考文献引用格式注意事项 期刊已正式出版&#xff08;有期卷号&#xff09;录用后在线访问即Early access&#xff08;无期卷号&#xff09; Arxiv论文会议论文IEEE缩写进阶其他 IEEE论文投稿前的参考文献格式检查&#xff01;&#xff08;如果一些细节你采用别的形式&…

UE4 解决创建布料报错:三角形退化

**【问题】**创建创建布料时报错&#xff1a;三角形退化 【方法】 1.要重新绑定&#xff1a;导入到ue4为静态网格体&#xff0c;勾选“移除退化”&#xff0c;再导出fbx&#xff0c;再重新绑定 2.不用重新绑定&#xff1a;使用排除法&#xff08;费时&#xff09;&#xff0c…

开放式耳机选哪个牌子好?五大主流王炸爆款推荐!

在快节奏的现代生活中&#xff0c;音乐是不可或缺的慰藉。作为音乐迷&#xff0c;我追求音质卓越与佩戴舒适的耳机。开放式蓝牙耳机&#xff0c;以革新设计和技术&#xff0c;颠覆传统认知&#xff0c;既呈现高品质音乐盛宴&#xff0c;又确保长久佩戴的极致舒适&#xff0c;成…

记一次,由于发布配置引发的alpine中运行sqlite3的错误解决历程思路!

使用net的都知道&#xff0c;打包镜像的时候的基础包有2个选择(实际上更多) 比如我们使用aspnet6.0作为基础包&#xff0c;则有2个选择 mcr.microsoft.com/dotnet/aspnet:6.0 212MB (basic) mcr.microsoft.com/dotnet/aspnet:6.0-alpine 104MB (alpine) 问题回顾 目前的Past…

小红书种草怎么做?

文末领取小红书电商开店运营教程&#xff01; 在如今的社交电商时代&#xff0c;小红书作为国内最大的生活分享社区&#xff0c;已成为了许多人找寻新品、新店、新玩法的必选平台。 小红书上的“种草”文化也日渐盛行&#xff0c;它不仅仅是一个购物指南&#xff0c;更是一种…

Python3极简教程(一小时学完)下

目录 PEP8 代码风格指南 知识点 介绍 愚蠢的一致性就像没脑子的妖怪 代码排版 缩进 制表符还是空格 每行最大长度 空行 源文件编码 导入包 字符串引号 表达式和语句中的空格 不能忍受的情况 其他建议 注释 块注释 行内注释 文档字符串 版本注记 命名约定 …

索引结构与检索原理

一、mysql索引结构 1.BTree索引 [检索原理] 左边列的表格&#xff08;真实数据&#xff09;&#xff0c;右边对应一棵树&#xff0c;树的管度越来越管查询越快。 以下图表的名称为&#xff1a;段区块 硬盘都是长方形的&#xff0c;打了一个封装&#xff0c;里面是一个圆圈…

游戏热更新——AssetBundle

AssetBundle AssetBundle的定义与使用 AssetBundle是一个压缩包包含模型、贴图、预制体、声音、甚至是整个场景&#xff0c;可以在游戏运行的时候被加载 AssetBundle自身保存着相互的依赖关系 压缩包可以使用LZMA和LZ4压缩算法&#xff0c;减少包大小&#xff0c;更快的进行网…

栈(Stack)and leetcode刷题

栈&#xff08;Stack&#xff09;and leetcode刷题 1. 栈&#xff08;Stack&#xff09;的概念2. 栈&#xff08;Stack&#xff09;的实现2.1 用数组实现2.2 用链表实现2.2.1 用单链表实现 3. leetcode刷题3.1 括号匹配问题3.2 栈的弹出压入序列3.3 逆波兰表达式求值中缀表达式…

Cartographer重入门到精通(二):运行作者demo及自己的数据集

在demo数据包上运行cartographer 现在Cartographer和Cartographer的Ros包已经都安装好了&#xff0c;你可以下载官方的数据集到指定的目录&#xff08;比如在Deutsches Museum用背包采集的2D和3D 数据&#xff09;&#xff0c;然后使用roslauch来启动demo。 注&#xff1a;la…

一文了解5G新通话技术演进与业务模型

5G新通话简介 5G新通话&#xff0c;也被称为VoNR&#xff0c;是基于R16及后续协议产生的一种增强型语音通话业务。 它在IMS网络里新增数据通道&#xff08;Data Channel&#xff09;&#xff0c;承载通话时的文本、图片、涂鸦、菜单等信息。它能在传统话音业务基础上提供更多服…

拓扑排序——AcWing 164. 可达性统计

目录 拓扑排序 定义 运用情况 注意事项 解题思路 AcWing 164. 可达性统计 题目描述 运行代码 代码思路 改进思路 拓扑排序 定义 拓扑排序&#xff08;Topological Sort&#xff09;是对有向无环图&#xff08;Directed Acyclic Graph&#xff0c;简称DAG&#xff…

【论文阅读笔记】ASPS: Augmented Segment Anything Model for Polyp Segmentation

1.论文介绍 ASPS: Augmented Segment Anything Model for Polyp Segmentation ASPS&#xff1a;用于息肉分割的扩展SAM模型 2024年 arxiv Paper Code 2.摘要 息肉分割在结直肠癌诊断中起着至关重要的作用。最近&#xff0c;Segment Anything Model(SAM)的出现利用其在大规模…

去水印小程序源码修复版-前端后端内置接口+第三方接口

去水印小程序源码&#xff0c;前端后端&#xff0c;内置接口第三方接口&#xff0c; 修复数据库账号密码错误问题&#xff0c;内置接口支持替换第三方接口&#xff0c; 文件挺全的&#xff0c;可以添加流量主代码&#xff0c;搭建需要准备一台服务器&#xff0c;备案域名和http…

【JVM实战篇】内存调优:内存问题诊断+案例实战

文章目录 诊断内存快照在内存溢出时生成内存快照MAT分析内存快照MAT内存泄漏检测的原理支配树介绍如何在不内存溢出情况下生成堆内存快照&#xff1f;MAT查看支配树MAT如何根据支配树发现内存泄漏 运行程序的内存快照导出和分析快照**大文件的处理** 案例实战案例1&#xff1a;…