k8s 集群安装(vagrant + virtualbox + CentOS8)
==============================================
主机环境:windows 11
k8s版本:v1.25
dashboard版本:v2.7.0
calico版本: v3.26.1
CentOS8版本:4.18.0-348.7.1.el8_5.x86_64
用到的脚本:
https://gitcode.net/sundongsdu/k8s_cluster
==============================================
1. Vagrant创建虚拟机节点
首先需要在win11主机上安装vagrant与virtualbox,此处不在赘述。
vagrant默认账号:vagrant/vagrant, root/vagrant
然后在win11的Vagrantfile文件所在目录下,执行:
vagrant up 创建虚拟机
通过vagrant status查看状态:
2. 通用配置
##################### 所有节点都需要执行的操作 开始 #################
vagrant ssh kubemaster/worker1/worker2
ssh配置:
vi /etc/ssh/sshd_config
PasswordAuthentication yes
然后执行 systemctl restart sshd.service
配置centos yum源:
设置centos8 mirror list:
sudo sed -i -e "s|mirrorlist=|#mirrorlist=|g" /etc/yum.repos.d/CentOS-*
sudo sed -i -e "s|#baseurl=http://mirror.centos.org|baseurl=http://mirrors.aliyun.com|g" /etc/yum.repos.d/CentOS-*
如果需要设置代理:
vi /etc/yum.conf
增加一行:
proxy=http://your-proxy-server:port
### 升级内核:
yum list installed|grep kernel*
yum update kernel -y
yum -y install kernel-devel kernel-headers
yum list installed|grep kernel*
删除老的内核,比如:
rpm -e kernel-4.18.0-240.1.1.el8_3 kernel-core-4.18.0-240.1.1.el8_3 kernel-modules-4.18.0-240.1.1.el8_3 kernel-tools-4.18.0-240.1.1.el8_3 kernel-tools-libs-4.18.0-240.1.1.el8_3
yum list installed|grep kernel*
安装完以后reboot
==============================================
此处,安装Guest Additions:
yum -y install libX11 libXt libXext libXmu xorg-x11-server-Xorg
yum -y install elfutils-libelf-devel gcc make perl
vbox设置->存储里面挂载VBoxGuestAdditions.iso
mkdir -p /mnt/cdrom
mount /dev/cdrom /mnt/cdrom
cd /mnt/cdrom
./VBoxLinuxAdditions.run
查看:
[root@kubemaster cdrom]# lsmod|grep vboxguest
vboxguest 409600 2 vboxsf
安装完以后reboot
设置VM共享目录
此时的共享目录为:/media/sf_share_dir/
!!! 此处执行configure-vm.sh
##################### 所有节点都需要执行的操作 结束 #################
3. master节点配置
##################### master节点需要执行的操作 开始 #################
3.1 集群 init
执行init:
kubeadm init --apiserver-advertise-address=192.168.56.101 --pod-network-cidr=10.244.0.0/16 --image-repository registry.aliyuncs.com/google_containers
执行结果:
Your Kubernetes control-plane has initialized successfully!
To start using your cluster, you need to run the following as a regular user:
mkdir -p $HOME/.kube
sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config
sudo chown $(id -u):$(id -g) $HOME/.kube/config
Alternatively, if you are the root user, you can run:
export KUBECONFIG=/etc/kubernetes/admin.conf
You should now deploy a pod network to the cluster.
Run "kubectl apply -f [podnetwork].yaml" with one of the options listed at:
https://kubernetes.io/docs/concepts/cluster-administration/addons/
Then you can join any number of worker nodes by running the following on each as root:
kubeadm join 192.168.56.101:6443 --token bl52oq.d2qaxxmcw1cl3wnd \
--discovery-token-ca-cert-hash sha256:75aae5d73711924153d353395365d7bbcd44646f94f7307e58d76b16aebaedc5
如果后续忘记这个join命令,可以在master上重新生成:
kubeadm token create --print-join-command
3.2 安装calico
calico的安装可以参考https://www.cnblogs.com/wangguishe/p/17635391.html
=======================================
安装calico之前可以配置docker镜像加速:
vi /etc/docker/daemon.json
{
"registry-mirrors": ["https://hub-mirror.c.163.com"]
}
systemctl daemon-reload
systemctl restart docker
如果需要配置代理,可以参考https://blog.csdn.net/weixin_45894220/article/details/130085121
=======================================
calico与k8s的版本对应关系:
https://docs.tigera.io/calico/latest/getting-started/kubernetes/requirements
We test Calico v3.26 against the following Kubernetes versions.
v1.24
v1.25
v1.26
v1.27
安装calico:
kubectl apply -f https://raw.githubusercontent.com/projectcalico/calico/v3.26.1/manifests/calico.yaml
安装成功以后:
[root@kubemaster vagrant]# kubectl get pod --all-namespaces
NAMESPACE NAME READY STATUS RESTARTS AGE
kube-system calico-kube-controllers-74cfc9ffcc-tvkkx 1/1 Running 0 6m7s
kube-system calico-node-lzb6w 1/1 Running 0 6m7s
kube-system coredns-c676cc86f-g89d4 1/1 Running 0 13h
kube-system coredns-c676cc86f-n78xv 1/1 Running 0 13h
kube-system etcd-kubemaster 1/1 Running 0 13h
kube-system kube-apiserver-kubemaster 1/1 Running 0 13h
kube-system kube-controller-manager-kubemaster 1/1 Running 1 (3h52m ago) 13h
kube-system kube-proxy-bw82t 1/1 Running 0 13h
kube-system kube-scheduler-kubemaster 1/1 Running 2 (95s ago) 13h
3.3 安装Metrics-Server
official站点:https://github.com/kubernetes-sigs/metrics-server
wget https://github.com/kubernetes-sigs/metrics-server/releases/latest/download/components.yaml
修改yaml:
然后执行:
kubectl apply -f components.yaml
此时通过kubectl get pods --all-namespaces可以看到metrics-server已经running
执行kubectl top node可以查看cpu memory:
3.4 安装dashboard
安装dashboard之前先解除master的限制:
kubectl taint nodes --all node-role.kubernetes.io/control-plane-
k8s与dashboard的版本对应:
https://github.com/kubernetes/dashboard/releases
v2.7.0 Compatibility
Kubernetes version | 1.22 | 1.23 | 1.24 | 1.25 |
---|---|---|---|---|
Compatibility | ? | ? | ? | ✓ |
✓
Fully supported version range.?
Due to breaking changes between Kubernetes API versions, some features might not work correctly in the Dashboard.
wget https://raw.githubusercontent.com/kubernetes/dashboard/v2.7.0/aio/deploy/recommended.yaml
修改其中的 imagePullPolicy: IfNotPresent
kubectl apply -f recommended.yaml
kubectl edit svc kubernetes-dashboard -n kubernetes-dashboard
This will open up a vi screen. Search for the entry ClusterIP and replace it with
NodePort (Case sensitive)
Run the following command to find out the port on which it will listen,
kubectl get svc -n kubernetes-dashboard|grep NodePort|awk '{print
$5}'|cut -f 2 -d :|cut -f 1 -d /
比如此处端口为31768
在vbox上配置端口转发:
创建用户:
参考:https://www.cnblogs.com/wangguishe/p/17582668.html
admin-user.yml
apiVersion: v1
kind: ServiceAccount
metadata:name: admin-usernamespace: kubernetes-dashboard---
apiVersion: rbac.authorization.k8s.io/v1
kind: ClusterRoleBinding
metadata:name: admin-user
roleRef:apiGroup: rbac.authorization.k8s.iokind: ClusterRolename: cluster-admin
subjects:
- kind: ServiceAccountname: admin-usernamespace: kubernetes-dashboard
执行
kubectl apply -f admin-user.yml
配置secret:
admin-user-secret.yaml
apiVersion: v1
kind: Secret
metadata:name: admin-user-secretnamespace: kubernetes-dashboard annotations:kubernetes.io/service-account.name: admin-user
type: kubernetes.io/service-account-token
执行
kubectl apply -f admin-user-secret.yaml
查看Secret:
kubectl get secret -n kubernetes-dashboard
查看token:
kubectl get secret admin-user-secret -n kubernetes-dashboard -o jsonpath={".data.token"} | base64 -d
在windows主机上访问dashboard:
https://127.0.0.1:9443
输入上述的token,
查看工作负载(workloads)注意选择正确的命名空间:
##################### master节点需要执行的操作 结束 #################
4. worker节点配置
##################### worker节点都需要执行的操作 开始 #################
找到上面master节点的join信息并在worker上执行:
kubeadm join 192.168.56.101:6443 --token bl52oq.d2qaxxmcw1cl3wnd \
--discovery-token-ca-cert-hash sha256:75aae5d73711924153d353395365d7bbcd44646f94f7307e58d76b16aebaedc5
注意,需要等到join之后,systemctl status kubelet状态才显示为active (running)
##################### worker节点都需要执行的操作 结束 #################
worker节点加入以后,可以在master节点查看nodes:
查看pods:
如果想查看某个node上的pods,比如worker1:
kubectl get pods --all-namespaces -o wide --field-selector spec.nodeName=worker1
参考:
Multi-node Kubernetes setup on Windows – Technology evangelist
https://medium.com/@srpillai/single-node-kubernetes-on-centos-c8c3507e3e65
https://www.cnblogs.com/wangguishe/p/17582668.html
相关文章:

k8s 集群安装(vagrant + virtualbox + CentOS8)
主机环境:windows 11 k8s版本:v1.25 dashboard版本:v2.7.0 calico版本: v3.26.1 CentOS8版本:4.18.0-348.7.1.el8_5.x86_64 用到的脚本: https://gitcode.net/sundongsdu/k8s_cluster 1. Vagrant创建…...

8、Docker数据卷与数据卷容器
一、数据卷(Data Volumes) 为了很好的实现数据保存和数据共享,Docker提出了Volume这个概念,简单的说就是绕过默认的联合文件系统,而以正常的文件或者目录的形式存在于宿主机上。又被称作数据卷。 数据卷 是一个可供一个或多个容器使用的特殊目…...

大数据与Hadoop入门理论
一、大数据的3种数据类型 1、结构化数据 可定义,有类型、格式、结构的强制约束 如:RDBMS(关系型数据库管理系统) 2、非结构化数据 没有规律没有数据约束可言,很复杂难以解析 如:文本文件,视…...

持续集成部署-k8s-深入了解 Pod:探针
持续集成部署-k8s-深入了解 Pod:探针 1. 探针分类2. 探针探测方式3. 探针参数配置4. 启动探针的应用5. Liveness 探针的应用6. Readiness 探针的应用1. 探针分类 Kubernetes 中的探针是指容器内的进程用于告知 Kubernetes 组件其自身状态的机制; Readiness Probe:就绪探针用…...

来单提醒/客户催单 ----苍穹外卖day9
来单提醒 需求分析 代码开发 注意:前端请求的并不是8080端口;而是先请求Nginx,Nginx进行反向代理以后转发到8080端口 这段代码首先创建了一个orders类用于更新订单状态 并且在更新状态后使用websocket发送给后端提醒 将信息放在map后,使用json的string化方式传给一个接收对象,…...

【单片机】18-红外线遥控
一、红外遥控背景知识 1.人机界面 (1)当面操作:按键,旋转/触摸按键,触摸屏 (2)遥控操作:红外遥控,433M/2.4G无线通信【穿墙能力强】,蓝牙-WIFI-Zigbee-LoRa等…...

【Node.js】module 模块化
认识 node.js Node.js 是一个独立的 JavaScript 运行环境,能独立执行 JS 代码,可以用来编写服务器后端的应用程序。基于Chrome V8 引擎封装,但是没有 DOM 和 BOM。Node.js 没有图形化界面。node -v 检查是否安装成功。node index.js 执行该文…...

Vue中如何进行分布式日志收集与日志分析(如ELK Stack)
在Vue中实现分布式日志收集与日志分析(使用ELK Stack) 日志收集和分析在现代应用程序中是至关重要的,它们可以帮助开发人员监视和诊断应用程序的行为,从而提高应用程序的稳定性和性能。ELK Stack(Elasticsearch、Logs…...

java学习--day23(线程池)
1.线程池Pool 线程池一个容纳了多个线程的容器,其中的线程可以反复的使用。省去了频繁创建线程的对象的操作,无需反复创建线程而消耗更多的资源 在 Java 语言中,并发编程都是通过创建线程池来实现的,而线程池的创建方式也有很多种…...

Unity Golang教程-Shader编写一个流动的云效果
创建目录 一个友好的项目,项目目录结构是很重要的。我们先导入一个登录界面模型资源。 我们先创建Art表示是美术类的资源,资源是模型创建Model文件夹,由于是在登录界面所以创建Login文件夹,下面依次是模型对应的资源,…...

Python数据攻略-Pandas与地理空间数据分析
地理空间数据分析已经成为数据分析不可或缺的一部分。无论是在城市规划、交通分析,还是在环境科学中,地理空间数据都发挥着关键作用。 本文将为初学者和新手提供一个详细的指南,通过使用Python的Pandas库和Geopandas库,来进行地理空间数据分析。 文章目录 用Pandas处理地理…...

sourceTree无法启动
前几天win10系统自动更新后,sourceTree就无法打开了,双击只是图标闪一下,电脑重启后还是无法打开。找到了网上几种方法进行尝试: 方法一:修改配置信息 在自己的电脑路径下: C:\Users\你的用户名\AppData…...

【ARM Coresight 系列文章19 -- Performance Monitoring Unit(性能监测单元)
文章目录 1.1 PMU 介绍1.2 PMU 寄存器1.2.1 PMU 管理寄存器1.2.2 PMU 外设识别寄存器1.2.3 PMU 组件识别寄存器1.3 性能监控事件1.3.1 Cortex-A9 特定事件1.1 PMU 介绍 许多体系结构都包含 PMU(Performance Monitoring Unit)硬件,用于跟踪、计数系统内部的一些底层硬件事件…...

前端学习| 第二章
CSS学习|第一章 前言一、概述1. 语法规定2. 代码风格 二、选择器1. 基础选择器标签选择器类选择器id选择器通配符选择器 2. 复合选择器后代选择器子元素选择器并集选择器伪类选择器链接伪类选择器focus 伪类选择器 三、引入方式四、显示模式1. 块元素2. 行内元素3. 行内块元素4…...

Unity中Shader光强与环境色
文章目录 前言一、实现下图中的小球接受环境光照实现思路:1、在Pass中使用前向渲染模式2、使用系统变量 _LightColor0 获取场景中的主平行灯 二、返回环境中主环境光的rgb固定a(亮度),小球亮度还随之改变的原因三、获取Unity中的环境光的颜色1、Color模式…...

Android9 查看连接多个蓝牙耳机查看使用中的蓝牙耳机
#Android9 查看连接多个蓝牙耳机查看使用中的蓝牙耳机 文章目录 一、主要api:二、BluetoothA2dp 对象的获取三、获取 BluetoothDevice 对象,四、其他: Android 9.0之后,支持一台手机可以同时连接多个蓝牙设备。 但是判断那个蓝牙…...

【EF Core】如何忽略影响导航属性(级联)
文章目录 EF更新和插入时如何忽略更新导航属性级联删除删除主体/父实体断开关系配置级联行为 来源 EF更新和插入时如何忽略更新导航属性 使用Ignore方法: modelBuilder.Entity<Blog>().Ignore(b > b.Posts);使用HasNoKey方法: modelBuilder.…...

【苍穹外卖 | 项目日记】第一天
前言: 我打算用16天的时间写完黑马程序员的苍穹外卖项目,为了督促自己每天坚持写以及记录项目知识点,所以用这种项目日记的方式鞭策自己 目录 前言: 今日完结任务: 今日收获: 1.阅读代码框架…...

WuThreat身份安全云-TVD每日漏洞情报-2023-10-07
漏洞名称:迪普科技DPtech SSL VPN任意文件读取漏洞 漏洞级别:高危 漏洞编号:CNVD-2023-69478 相关涉及:杭州迪普科技股份有限公司 DPtech SSL VPN 漏洞状态:POC 参考链接:https://tvd.wuthreat.com/#/listDetail?TVD_IDTVD-2023-24924 漏洞名称:DTS监控SSL证书操作系统命令注…...

SpringBoot整合Druid配置yml文件
springboot中引入依赖注意,否则yml中配置不生效 <dependencies><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-web</artifactId></dependency><dependency><group…...

如何保证 RabbitMQ 的消息可靠性?
项目开发中经常会使用消息队列来完成异步处理、应用解耦、流量控制等功能。虽然消息队列的出现解决了一些场景下的问题,但是同时也引出了一些问题,其中使用消息队列时如何保证消息的可靠性就是一个常见的问题。如果在项目中遇到需要保证消息一定被消费的…...

图像分类数据集划分(创建ImageNet格式的数据集)
原始数据文件夹如下: ├──data├── 0 类别1├── 1 类别2制作数据集格式如下所示: ├──datasets├── meta│ ├── test.txt # 测试数据集的标注文件│ ├── train.txt # 训练数据集的标注文件│ └── val.txt # 验证…...

ArcGIS Engine:报错无法嵌入互操作类型“ESRI.ArcGIS.Geometry.EnvelopeClass”。请改用适用的接口。
此错误是由于尝试直接实例化ArcGIS COM组件的某些互操作类引起的。这在.NET Framework 4及更高版本中是不被推荐的。 为了解决此问题,你需要确保在工程的引用中将ArcGIS的互操作类型设置为“不嵌入”。 按照以下步骤操作: 在解决方案资源管理器中找到…...

核货宝:服装店收银系统如何选择?收银系统选购指南!
对于各行各业而言,收银系统都是必备的工具。特别是对于像服装店这样的零售门店来说,选择一套适合的收银系统尤为重要。在选择收银系统时,有一些关键的技巧需要注意,以达到软硬件合理搭配、节省开支的目的。下面将分享四个选购服装…...

GB/T 7134-2008 浇筑型工业有机玻璃板材检测
非改性浇筑PMMA板材是指甲基丙烯酸甲酯均聚物板材,或者甲基丙烯酸甲酯与丙烯酸酯类或甲基丙烯酸酯类单体的共聚物板材,通过适当的引发剂本体聚合生产。 GB/T 7134-2008浇筑型工业有机玻璃板材测试项目: 测试项目 测试方法 拉伸强度 GB/T …...

数据采集平台(二)
5. 安装Kafka 5.1 基础架构 为方便扩展,并提高吞吐量,一个topic分为多个partition配合分区的设计,提出消费者组的概念,组内每个消费者并行消费为提高可用性,为每个partition增加若干副本,类似NameNode HA…...

Nginx + PHP 异常排查,open_basedir 异常处理
新上一个网站,通过域名访问失败,排查方法如下: 开启异常日志 开启域名下,nginx的异常日志,并查看日志 tail -f /var/log/nginx/nginx.localhost.error.log开启php的异常日志,该配置位于php.ini文件下 …...

Linux免密登录
目标: 192.168.233.31 ton-pc-003 192.168.233.32 ton-pc-004 在ton-pc-004(以下简称004)免密登录ton-pc-003(以下简称003) 具体流程和说明: 1、在004(客户机)中生成秘钥对 ssh…...

迷宫 蓝桥杯
问题描述 这天, 小明在玩迷宫游戏。 迷宫为一个 nn 的网格图, 小明可以在格子中移动, 左上角为 (1,1), 右下角 (n, n)为终点。迷宫中除了可以向上下左右四个方向移动一格以外, 还有 m 个双向传送门可以使用, 传送门可以连接两个任意格子。 假如小明处在格子(x1,y1), 同时有…...

25 mysql like 是否使用索引
前言 这里主要是 探究一下 explain $sql 中各个 type 诸如 const, ref, range, index, all 的查询的影响, 以及一个初步的效率的判断 这里会调试源码来看一下 各个类型的查询 需要 lookUp 的记录 以及 相关的差异 此系列文章建议从 mysql const 查询 开始看 测试表结构…...