当前位置: 首页 > news >正文

k8s集群安装

目录

一 主机准备

1.1 设备配置

⚠️注意1

⚠️注意2

1.2 环境准备

1.3docker安装

二 安装kubeadm、kubectl、kubelet

2.1 添加镜像源

2.2 安装

三 master节点部署

四 node节点加入集群

五 CNI网络插件calico

六 其他节点使用kubectl

1.拷贝文件

2.添加到环境变量

七 节点离开集群


一 主机准备

1.1 设备配置

内网Ip/外网Name
10.1.57.200/ 12.152.230.21K8s-master(4G4核)
10.1.57.201/39.10.181.51K8s-work2(4G4核)
10.1.57.202/11.230.108.20K8s-work3(4G4核)

⚠️注意1

如果是云服务器,并且内网不在同一网段,则可以参考下面文章进行异地组网

zerotierhttps://blog.csdn.net/hey_lie/article/details/131304142?spm=1001.2014.3001.5501

⚠️注意2

主机的配置master配置可以略差,当node节点的配置最低2核2G【最好按自己的环境按最高的来,否则后期加入kubesphere等会失败】

1.2 环境准备

# 1.关闭防火墙,普通方式,生成环境应开放相应的端口并打开防火墙
#   这里选择关闭防火墙
systemctl stop firewalld
systemctl disable firewalld# 2.关闭selinux,让容器可以读取主机文件系统
#   永久关闭
sed -i 's/enforcing/disabled/' /etc/selinux/config  
#   临时关闭
setenforce 0  # 3.关闭swap
swapoff -a  # 临时
sed -ri 's/.*swap.*/#&/' /etc/fstab    # 永久# 4.根据规划设置主机名k8s-master,k8s-work1,k8s-work2
hostnamectl set-hostname <hostname># 5./etc/hosts中添加dns映射
cat >> /etc/hosts << EOF
10.1.57.200 k8s-master
10.1.57.201 k8s-work1
10.1.57.202 k8s-wokr2
EOF# 6.将桥接的IPv4流量传递到iptables的链
cat > /etc/sysctl.d/k8s.conf << EOF
net.bridge.bridge-nf-call-ip6tables = 1
net.bridge.bridge-nf-call-iptables = 1
EOF# 7.时间同步
yum install ntpdate -y
ntpdate time.windows.com# 8.让配置生效
sysctl --system# 9.重启,关闭swap,需要重启才生效
reboot

1.3docker安装

参考下面的文章

安装指定版本dockerhttps://blog.csdn.net/hey_lie/article/details/131019165?spm=1001.2014.3001.5501


二 安装kubeadm、kubectl、kubelet

2.1 添加镜像源

由于国内网络原因,因此我们需要安装镜像方可下载

参考链接kubernetes镜像_kubernetes下载地址_kubernetes安装教程-阿里巴巴开源镜像站

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=0gpgkey=https://mirrors.aliyun.com/kubernetes/yum/doc/yum-key.gpg https://mirrors.aliyun.com/kubernetes/yum/doc/rpm-package-key.gpg
EOF

2.2 安装

下载

yum install -y kubelet-1.23.6 kubeadm-1.23.6 kubectl-1.23.6

运行

systemctl enable kubelet

三 master节点部署

apiserver-advertise-address:10.1.57.200 为master节点主机的内网ip

image-repository镜像仓库选择阿里云

service-cidr为service网段【一般不用改】

pod-network-cidr为pod网段【一般不用改】

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

执行完成后会出现下面的日志

To start using your cluster, you need to run the following as a regular user:mkdir -p $HOME/.kubesudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/configsudo chown $(id -u):$(id -g) $HOME/.kube/configAlternatively, if you are the root user, you can run:export KUBECONFIG=/etc/kubernetes/admin.confYou 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 10.1.57.200:6443 --token yz9i3n.tuldbmd9decu7t3j \--discovery-token-ca-cert-hash sha256:fad63729371f74839347b1ac0dd772eaff9402a40365f2f07e9331311e451107  

如果在执行过程中出现

/proc/sys/net/ipv4/ip_forward contents are not set to 1

则修改/proc/sys/net/ipv4/ip_forward内容为1后继续重新执行init

echo "1" > /proc/sys/net/ipv4/ip_forward

安装完成后按照日志提示执行管理员配置,使其可以在任意位置执行kubectl

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

验证 执行命令:kubectl get nodes

[root@k8s-master ~]# kubectl get nodes
NAME         STATUS     ROLES                  AGE   VERSION
k8s-master   NotReady   control-plane,master   42s   v1.23.6

四 node节点加入集群

在node节点执行上面init时的kubeadm join...命令

执行成功后,在master节点继续查看节点,即可发现节点已经加入成功

[root@k8s-master ~]# kubectl get nodes
NAME         STATUS     ROLES                  AGE     VERSION
k8s-master   NotReady   control-plane,master   2m39s   v1.23.6
k8s-work1    NotReady   <none>                 71s     v1.23.6

如果init日志忘记,需要创建密钥进行加入,具体方式如下:

在master中查看是否存在密钥

kubeadm token list
#返回
TOKEN                     TTL         EXPIRES                USAGES                   
wjxs21.v0tbteb0vahnu2sa   19h         2023-06-08T02:57:15Z   authentication,signing

如果没有则创建一个密钥

kubeadm token create
#返回即使密钥
krblln.39wff92dh0lx48iq

接着通过这个密钥创建一个验证码

执行下面的命令

openssl x509 -pubkey -in /etc/kubernetes/pki/ca.crt | openssl rsa -pubin -outform der 2>/dev/null | \
openssl dgst -sha256 -hex | sed 's/^.* //'

返回一个hash值

#返回一个hash值
46cfc95eecefa09197ca5b25925b20c8816759585969151d04de55c08c8f821f

拼接 sha256:

#前面拼接"sha256:"
sha256:46cfc95eecefa09197ca5b25925b20c8816759585969151d04de55c08c8f821f

node节点执行

密钥为刚才的到的密钥

hash值为刚才的到的hash值

kubeadm join 10.1.57.200:6443 --token 密钥 \--discovery-token-ca-cert-hash hash值

五 CNI网络插件calico

CNI

容器网络接口,就是在网络解决方案由网络插件提供,这些插件配置容器网络则通过CNI定义的接口来完成,也就是CNI定义的是容器运行环境与网络插件之间的接口规范。这个接口只关心容器的网络连接,在创建容器是分配网络,删除容器是移除网络。插件就是对CNI的规范的具体实现

[k8s与calico版本对比参考]  https://docs.tigera.io/calico/latest/getting-started/kubernetes/community-tested 

版本选择为v3.23

选择一个文件夹,下载calico文件

mkdir /opt/k8s/cni
cd /opt/k8s/cni
curl https://docs.projectcalico.org/v3.23/manifests/calico.yaml  -O

下载完成后,编辑该文件

1. 将CALICO_IPV4POOL_CIDR设置为与初始化(master中kubelet init的pod-network-cidr)的 cidr 相同

2. 配置networkmanager

 cat > /etc/NetworkManager/conf.d/calico.conf <<EOF
[keyfile]
unmanaged-devices=interface-name:cali*;interface-name:tunl*;interface-name:vxlan.calico;interface-name:wireguard.cali
EOF

3. 删除镜像 docker.io/ 前缀,避免下载过慢导致失败【能访问外网可以省略】

sed -i 's#docker.io/##g' calico.yaml

4.如果下载很慢,可以提前下载镜像

        如果下载失败,可以去docker hub搜索下载

docker pull quay.io/calico/cni:v3.23.5
docker pull quay.io/calico/kube-controllers:v3.23.5
docker pull quay.io/calico/node:v3.23.5
docker pull quay.io/calico/pod2daemon-flexvol:v3.23.5
docker pull quay.io/calico/typha:v3.23.5

5.构建calico应用

kubectl apply -f calico.yaml

验证

等待一段时间后,查看命名空间为kube-system下的pod,观察calico-node-xxx状态都为running,ready都为1,coredns同样如此,说明网络插件已经安装完成

#查看命名空间为kube-system下的pod
kubectl get pods -n kube-system
#结果如下
NAME                                       READY   STATUS    RESTARTS   AGE
calico-kube-controllers-66bf87d4b8-pvl92   1/1     Running   0          3h43m
calico-node-bm7l2                          1/1     Running   0          3h43m
calico-node-pdzr5                          1/1     Running   0          3h43m
calico-node-wz7cj                          1/1     Running   0          3h43m
coredns-6d8c4cb4d-9nm7p                    1/1     Running   0          5h10m
coredns-6d8c4cb4d-b9glg                    1/1     Running   0          5h10m
#接着查看node状态,应处于ready状态
kubectl get nodes
#信息如下,此时status应该为noready
NAME          STATUS   ROLES                  AGE     VERSION
k8s-master1   Ready    control-plane,master   4h51m   v1.23.6
k8s-work1     Ready    <none>                 4h49m   v1.23.6
k8s-work2     Ready    <none>                 4h48m   v1.23.6

六 其他节点使用kubectl

目前只能在master节点使用kubectl,需要在node节点使用,则需要下面操作

1.拷贝文件

将 master 节点中 /etc/kubernetes/admin.conf 拷贝到需要两个work节点的 /etc/kubernetes 目录中

使用scp命令进行远程拷贝

#scp 文件路径 远程登录用户名@ip:目标文件夹
scp /etc/kubernetes/admin.conf root@k8s-work1:/etc/kubernetes

2.添加到环境变量

#添加环境变量到配置文件
echo "export KUBECONFIG=/etc/kubernetes/admin.conf" >> ~/.bash_profile
#让环境变量文件生效
source ~/.bash_profile

至此,node节点也可以使用kubectl了

七 节点离开集群

#节点停止调度
kubectl cordon nodename
#节点驱逐pod
kubectl drain nodename
#节点删除
kubectl delete node nodename

相关文章:

k8s集群安装

目录 一 主机准备 1.1 设备配置 ⚠️注意1 ⚠️注意2 1.2 环境准备 1.3docker安装 二 安装kubeadm、kubectl、kubelet 2.1 添加镜像源 2.2 安装 三 master节点部署 四 node节点加入集群 五 CNI网络插件calico 六 其他节点使用kubectl 1.拷贝文件 2.添加到环境变量…...

【webrtc】ProcessThreadAttached

RegisterModule 调用所在的线程指针传递给ProcessThreadAttached ProcessThreadAttached 调用不是在worker thread 而是在 registers/deregister 这个module或者 start stop 这个module的时候 ** ** pacedsender是一个moudle -实现了...

Orange pi3初调试

因为树莓派沦为理财产品1年前出手殆尽后&#xff0c;现在唯一一个B性能不足一直没动力调试&#xff0c;沦为吃灰工具。 偶然之间多多给推了个orange产品预售&#xff0c;看了下pi3的参数&#xff0c;这不和赚了差价的3B一个性能吗&#xff1f;果断定了个预售款&#xff0c;在差…...

手机里的视频怎么转换成MP4格式?简单的转换方法分享

MP4格式是一种广泛使用的视频格式&#xff0c;几乎所有设备和操作系统都支持MP4格式的视频播放。无论是使用 iPhone、iPad、安卓手机、电视等各种设备&#xff0c;都可以播放 MP4 格式的视频。这种广泛的兼容性使得 MP4 成为一种非常方便的视频格式&#xff0c;我们可以随时随地…...

Matlab数学建模实战——(Lokta-Volterra掠食者-猎物方程)

1.题目 问题1 该数学建模的第一问和第二问主要是用Matlab求解微分方程组&#xff0c;直接编程即可。 求解 Step1改写 y(1)ry(2)f Step2得y的导数 y(1).2y(1)-ay(1)*y(2)y(2).-y(2)a*y(1)*y(2) Step3编程 clear; a0.01; F(t,y)[2*y(1)-a*y(1)*y(2);-y(2)a*y(1)*y(2)]; […...

windows下软件推荐

起源与目的 选择任何一个系统作为主力系统都是要好好考虑的。 在去年新买了一块1T的SSD后&#xff0c;就好好想了想这个问题。 Arch Linux, Ubuntu, Windows, macOS, deepin都是在考虑范围的。 不过我考虑到使用体验&#xff0c;最终还是选择了windows。 不选择macOS主要是不喜…...

SQlite数据库

SQlite数据库 1.SQLite简介 轻量化&#xff0c;易用的嵌入式数据库&#xff0c;用于设备端的数据管理&#xff0c;可以理解成单点的数据库。传统服务器型数据库用于管理多端设备&#xff0c;更加复杂 SQLite是一个无服务器的数据库&#xff0c;是自包含的。这也称为嵌入式数…...

Doris-问题

1.启动BE报错 设置系统最大打开文件句柄数(注意这里的*不要去掉) 重启生效!!!重启生效!!!重启生效!!! sudo vim /etc/security/limits.conf * soft nofile 65536 * hard nofile 65536 * soft nproc 131072 * hard nproc 131072 重启生效...

什么是OA系统,什么是工单系统,有啥区别?

一、OA系统与工单系统介绍 1、什么是OA系统 OA系统全称为Office Automation&#xff0c;即办公自动化系统。它是一种专门为企业和机构的日常办公工作提供服务的综合性软件平台&#xff0c;具有信息管理、流程管理、知识管理&#xff08;档案和业务管理&#xff09;、协同办公…...

DDoS攻击:网络安全的威胁

什么是DDoS攻击&#xff1f; DDoS&#xff08;分布式拒绝服务&#xff09;攻击是一种恶意网络攻击&#xff0c;目的是通过发送大量的请求或占用目标系统的资源&#xff0c;使其无法正常运行。在DDoS攻击中&#xff0c;攻击者使用分布在多个地理位置的多台计算机&#xff08;也称…...

docker版jxTMS使用指南:device的调整

本文讲解4.2版jxTMS对device的调整&#xff0c;整个系列的文章请查看&#xff1a;docker版jxTMS使用指南&#xff1a;4.2版升级内容 docker版本的使用&#xff0c;请参考docker版jxTMS使用指南 4.0版jxTMS的说明&#xff0c;请查看&#xff1a;4.0版升级内容 为了适应拉取模…...

AI智能语音机器人的功能和作用都有哪些?

智能语音机器人是一种能够使用自然语言处理技术和人工智能算法&#xff0c;通过声音与用户进行交互的机器人。它可以回答用户提出的问题、处理用户的投诉、提供产品或服务的相关信息等等。 实现一个智能语音机器人需要涉及多个技术领域&#xff0c;包括自然语言处理、语音识别…...

vue3+vite+Ts 基于Antv/x6 绘制流程图

需求效果&#xff1a; 需求&#xff1a; 实现一个流程图&#xff0c;双击可对相应的组件进行一些功能操作&#xff1b; 工具栈&#xff1a; 这里使用antv/x6&#xff0c; 基于vue3vitets进行开发 官网地址&#xff1a; https://x6.antv.antgroup.com/examples/showcase/pra…...

sys V 进程间通信之消息队列

note msgget获取内核消息队列实例 msgctl可以删除内核消息队列实例 msgsnd\msgrcv函数注意struct msgbuf字段的填充 code #include <stdio.h> #include <stdlib.h> #include <string.h> #include <time.h> #include <unistd.h> #include &l…...

Android 报错,闪退(错误)日志保存到手机内存中,以文本文件的形式保存

1.直接贴代码 import android.app.AlarmManager; import android.app.PendingIntent; import android.content.Context; import android.content.Intent; import android.os.Environment; import android.util.Log;import com.nuotu.atmBookClient.App;import java.io.File; i…...

flutter聊天界面-加号【➕】更多展开相机、相册等操作Panel

flutter聊天界面-加号【➕】更多展开相机、相册等操作Panel 在之前实现了flutter聊天界面的自定义表情的展示&#xff0c;这里记录一下更多操作展开的相机、相册等操作功能实现。 一、查看效果 更多操作展开的相机、相册等操作功能实现。 二、代码实现 展开的操作按钮可能比…...

浅析泵站自动化技术的发展趋势

摘要&#xff1a;基于泵站对我国水利及水务事业的重要性&#xff0c;文章以城市供水行业大型泵站为对象&#xff0c;分析了泵站自动化技术 发展现状&#xff0c;结合泵站自动化技术的发展需求&#xff0c;从管控一体化、系统自诊断、运行信息实时化管理等方面展望了泵 站自动化…...

5.4.1 虚拟专用网VPN

5.4.1 虚拟专用网VPN 我们已经学习了因特网的路由协议&#xff08;5.3.1 因特网的路由协议&#xff08;一&#xff09;、5.3.2 因特网的路由协议&#xff08;二&#xff09;基于距离向量算法的RIP协议、5.3.3 因特网的路由协议&#xff08;三&#xff09;OSPF协议、5.3.4 因特…...

第42节:cesium 火焰效果(含源码+视频)

结果示例: 完整源码: <template><div class="viewer"><!-- :shouldAnimate="true" 添加动画 --><vc-viewer @ready...

MySQL基础篇第5章(排序与分页)

文章目录 1、排序1.1 排序规则1.2 单列排序1.3 多列排序 2、分页2.1 背景2.2 实现规则2.3 拓展 1、排序 1.1 排序规则 使用 ORDER BY 子句排序 ASC&#xff08;ascend&#xff09;: 升序DESC&#xff08;descend&#xff09;:降序 ORDER BY 子句在SELECT语句的结尾。 1.2 …...

未来机器人的大脑:如何用神经网络模拟器实现更智能的决策?

编辑&#xff1a;陈萍萍的公主一点人工一点智能 未来机器人的大脑&#xff1a;如何用神经网络模拟器实现更智能的决策&#xff1f;RWM通过双自回归机制有效解决了复合误差、部分可观测性和随机动力学等关键挑战&#xff0c;在不依赖领域特定归纳偏见的条件下实现了卓越的预测准…...

深入剖析AI大模型:大模型时代的 Prompt 工程全解析

今天聊的内容&#xff0c;我认为是AI开发里面非常重要的内容。它在AI开发里无处不在&#xff0c;当你对 AI 助手说 "用李白的风格写一首关于人工智能的诗"&#xff0c;或者让翻译模型 "将这段合同翻译成商务日语" 时&#xff0c;输入的这句话就是 Prompt。…...

Linux-07 ubuntu 的 chrome 启动不了

文章目录 问题原因解决步骤一、卸载旧版chrome二、重新安装chorme三、启动不了&#xff0c;报错如下四、启动不了&#xff0c;解决如下 总结 问题原因 在应用中可以看到chrome&#xff0c;但是打不开(说明&#xff1a;原来的ubuntu系统出问题了&#xff0c;这个是备用的硬盘&a…...

uniapp中使用aixos 报错

问题&#xff1a; 在uniapp中使用aixos&#xff0c;运行后报如下错误&#xff1a; AxiosError: There is no suitable adapter to dispatch the request since : - adapter xhr is not supported by the environment - adapter http is not available in the build 解决方案&…...

分布式增量爬虫实现方案

之前我们在讨论的是分布式爬虫如何实现增量爬取。增量爬虫的目标是只爬取新产生或发生变化的页面&#xff0c;避免重复抓取&#xff0c;以节省资源和时间。 在分布式环境下&#xff0c;增量爬虫的实现需要考虑多个爬虫节点之间的协调和去重。 另一种思路&#xff1a;将增量判…...

Mac下Android Studio扫描根目录卡死问题记录

环境信息 操作系统: macOS 15.5 (Apple M2芯片)Android Studio版本: Meerkat Feature Drop | 2024.3.2 Patch 1 (Build #AI-243.26053.27.2432.13536105, 2025年5月22日构建) 问题现象 在项目开发过程中&#xff0c;提示一个依赖外部头文件的cpp源文件需要同步&#xff0c;点…...

【Linux】Linux 系统默认的目录及作用说明

博主介绍&#xff1a;✌全网粉丝23W&#xff0c;CSDN博客专家、Java领域优质创作者&#xff0c;掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java技术领域✌ 技术范围&#xff1a;SpringBoot、SpringCloud、Vue、SSM、HTML、Nodejs、Python、MySQL、PostgreSQL、大数据、物…...

接口自动化测试:HttpRunner基础

相关文档 HttpRunner V3.x中文文档 HttpRunner 用户指南 使用HttpRunner 3.x实现接口自动化测试 HttpRunner介绍 HttpRunner 是一个开源的 API 测试工具&#xff0c;支持 HTTP(S)/HTTP2/WebSocket/RPC 等网络协议&#xff0c;涵盖接口测试、性能测试、数字体验监测等测试类型…...

快刀集(1): 一刀斩断视频片头广告

一刀流&#xff1a;用一个简单脚本&#xff0c;秒杀视频片头广告&#xff0c;还你清爽观影体验。 1. 引子 作为一个爱生活、爱学习、爱收藏高清资源的老码农&#xff0c;平时写代码之余看看电影、补补片&#xff0c;是再正常不过的事。 电影嘛&#xff0c;要沉浸&#xff0c;…...

基于PHP的连锁酒店管理系统

有需要请加文章底部Q哦 可远程调试 基于PHP的连锁酒店管理系统 一 介绍 连锁酒店管理系统基于原生PHP开发&#xff0c;数据库mysql&#xff0c;前端bootstrap。系统角色分为用户和管理员。 技术栈 phpmysqlbootstrapphpstudyvscode 二 功能 用户 1 注册/登录/注销 2 个人中…...