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

微服务》》Kubernetes (K8S) 集群 安装

关闭交换空间

# 切换 超级管理员身份
# 查看交换空间
free -h
# 关闭交换空间
swapoff -a

在这里插入图片描述

避免开启启动交换空间

# 注释swap开头的行
vim /etc/fstab

在这里插入图片描述

关闭防火墙

# 关闭防火墙  
# 因为K8S 是集群形式存在的  至少三台  一主二从 (一个master  两个node) master 要给其他node节点发送指令  走的 gRPC协议
# 这个通信协议不能跨防火墙  故需要关闭   
ufw disable

在这里插入图片描述

配置 DNS

# 取消注释  配置 DNS   
vim /etc/systemd/resolved.conf

在这里插入图片描述

安装 Docker 、配置docker 镜像加速器

参考资料

安装kubernetes

在这里插入图片描述

apt-get update && apt-get install -y apt-transport-https
curl https://mirrors.aliyun.com/kubernetes/apt/doc/apt-key.gpg | apt-key add - 
cat >/etc/apt/sources.list.d/kubernetes.list <<EOF
# 写入软件源 注意目前使用的Ubuntu的版本是 noble,但阿里云暂且不支持,所以沿用16.04 d xenial
deb https://mirrors.aliyun.com/kubernetes/apt/ kubernetes-$(lsb_release -cs) main
EOF
apt-get update

在这里插入图片描述
》》》安装k8s

apt-get update && apt-get install -y kubelet kubeadm kubectl

查看版本
在这里插入图片描述

锁定版本

防止k8s软件自动升级,通过以下命令进行锁定版本。

sudo apt-mark hold kubelet kubeadm kubectl
如果要取消
sudo apt-mark unhold kubelet kubeadm kubectl

在这里插入图片描述

同步时间

同步时间之前 一定要先同步时区

dpkg-reconfigure tzdata
在这里插入图片描述
》》时间同步
在这里插入图片描述

# 安装ntpdate   
apt-get install ntpdate
# 设置系统时间与网络时间同步(cn.pool.ntp.org ) 是寻找离本机最近的时间服务器 同步时间
ntpdate cn.pool.ntp.org
# 将系统时间写入硬件时间
# 如果hwclock命令没,则需要安装  apt install util-linux-extra
hwclock --systohc

# 确认时间  看时间跟本地是否一致
date 

在这里插入图片描述

修改主机名

》》修改cloud.cfg ,防止重启主机名还原 ,但测试下来 默认不还原

vim /etc/cloud/cloud.cfg
# 该配置默认是False,修改为True 即可
# preserve——>保护,维护 持之以恒 保持
preserve_hostname:true

在这里插入图片描述
》》重新一下,让配置生效, 然后关机

到此 可以把这个 Ubuntu系统 作为最基础的,方便以后快速 新增 一个k8s 节点

基于上面的 克隆 一个 K8S 作为master、两个 节点 Node1、Node2

》》》修改IP、主机名

配置上面基本 一定 一定 一定 要重启

在这里插入图片描述

Kubernetes 安装集群

上面安装Kubernetes》》包含kubeadm、kubectl、kubetel》》
kubeadm 是kubernetes的集群安装工具,能快速安装kubernetes集群,安装kubernetes主要是安装它的各个镜像,而kubeadm已经为我们集成好了运行kubenetes所需要的基本镜像。

安装程序Linux系统 一般安装在 /usr/local中

# cd /usr/local
# 创建 kubernetes 文件夹
# 进入到 kubernetes 文件夹
# 创建 cluster 文件夹
# 进入cluster文件夹
# 导出配置文件  
# kubeadm config print init-defaults --kubeconfig ClusterConfiguration > kubeadm.yml

在这里插入图片描述
》》修改 kubeadm.yml 文件
在这里插入图片描述

把谷歌的镜像仓库地址修改成阿里云的镜像仓库地址
imageRepository: registry.aliyuncs.com/google_containers
在这里插入图片描述

》》配置文件还要到加个Pod

  # 配置POD 所在网段为我们虚拟机不重叠的网段 容器跟容器间通信  可以不需要加双引号
  podSubnet: 10.244.0.0/16

在这里插入图片描述

》》查看所需要的镜像

kubeadm config images list --config kubeadm.yml
在这里插入图片描述
》》拉取镜像
kubeadm config images pull --config kubeadm.yml

报错

ailed to pull image "registry.aliyuncs.com/google_containers/kube-apiserver:v1.28.2": output: time="2025-03-18T10:36:20+08:00" level=fatal msg="validate service connection: CRI v1 image API is not implemented for endpoint \"unix:///var/run/containerd/containerd.sock\": rpc error: code = Unimplemented desc = unknown service runtime.v1.ImageService"
, error: exit status 1
To see the stack trace of this error execute with --v=5 or higher

在这里插入图片描述

》》解决方案

vim /etc/containerd/config.toml 在这里插入图片描述
重启contained服务即可
systemctl restart containerd
在拉取就可以了
在这里插入图片描述
在这里插入图片描述
如果拉取不成功,查看网络配置(要重启)、kubeadm.ym 的 配置

#  这步骤不需要的,只是测试这个路径是否可以从拉取
docker pull registry.aliyuncs.com/google_containers/kube-apiserver:v1.28.2
docker pull registry.aliyuncs.com/google_containers/kube-controller-manager:v1.28.2
docker pull registry.aliyuncs.com/google_containers/kube-scheduler:v1.28.2
docker pull registry.aliyuncs.com/google_containers/kube-proxy:v1.28.2
docker pull registry.aliyuncs.com/google_containers/pause:3.9
docker pull registry.aliyuncs.com/google_containers/etcd:3.5.9-0
docker pull registry.aliyuncs.com/google_containers/coredns:v1.10.1

安装主节点 》》注意 注意 注意只主节点才需要 初始化的

# --experimental-upload-certs 可以在后续执行加入节点时自动分发证书文件
# tee kubeadm-init.log 输出日志的
# tee命令的功能是用于读取标准输入的数据,将其内容转交到标准输出设备中,同时保存成文件。
kubeadm init --config=kubeadm.yml --experimental-upload-certs  | tee kubeadm-init.log

在这里插入图片描述
k8s 1.8版本之后就不支持这个 选项了

kubeadm init --config=kubeadm.yml --upload-certs  | tee kubeadm-init.log

》》如果报错

[init] Using Kubernetes version: v1.28.2
[preflight] Running pre-flight checks
error execution phase preflight: [preflight] Some fatal errors occurred:
	[ERROR FileContent--proc-sys-net-bridge-bridge-nf-call-iptables]: /proc/sys/net/bridge/bridge-nf-call-iptables does not exist
[preflight] If you know what you are doing, you can make a check non-fatal with `--ignore-preflight-errors=...`
To see the stack trace of this error execute with --v=5 or higher

kubeadm init --config=kubeadm.yml --upload-certs --ignore-preflight-errors=all | tee kubeadm-init.log

》》安装中会出现

[wait-control-plane] Waiting for the kubelet to boot up the control plane as static Pods from directory "/etc/kubernetes/manifests". This can take up to 4m0s
[kubelet-check] Initial timeout of 40s passed.

在这里插入图片描述
》》解决问题:《《

# 1.修改Containerd配置
cd /etc/containerd
# 生成默认配置文件,Containerd的配置文件使用TOML格式,然后打开修改。(如果之前存在可以删除)
containerd config default > /etc/containerd/config.toml
# 打开修改:
vim /etc/containerd/config.toml
将 sandbox_image = "registry.k8s.io/pause:3.8" 
改为 sanbox_image = "registry.aliyuncs.com/google_containers/pause:3.9"
SystemdCgroup = false 改为 SystemdCgroup = true

在这里插入图片描述
在这里插入图片描述
保存退出,重启Containerd

sudo systemctl restart containerd

# containerd  重启之后
kubeadm reset    重置一下  
# 进入  
cd /usr/local/kubernetes/cluster
# 在初始化一下
kubeadm init --config=kubeadm.yml --upload-certs --ignore-preflight-errors=all | tee kubeadm-init.log

成功 成功

在这里插入图片描述

在这里插入图片描述

#  mkdir -p $HOME/.kube
#  sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config
#  这个两个命令 要分别执行

kubectl get node

在这里插入图片描述

节点加入Master

在这里插入图片描述
在这里插入图片描述
如果报错

error execution phase preflight: [preflight] Some fatal errors occurred:
	[ERROR FileContent--proc-sys-net-bridge-bridge-nf-call-iptables]: /proc/sys/net/bridge/bridge-nf-call-iptables does not exist

解决方法

 echo "1" >/proc/sys/net/bridge/bridge-nf-call-iptables
 modprobe br_netfilter

在这里插入图片描述
在这里插入图片描述

集群网络配置

参考资料

相关文章:

  • Linux 告警:使用企业微信发送通知
  • 【玩转全栈】---- Django 基于 Websocket 实现群聊(解决channel连接不了)
  • 目标和 (leetcode 494
  • 解决SpringCloud整合Nacos启动报Client not connected, current status:STARTING
  • [C++面试] 迭代器面试点(难点)
  • 一个KADB测试实践
  • Leetcode 378. 有序矩阵中第 K 小的元素 二分查找
  • gonet开源游戏服务器环境配置
  • leetcode127.单词接龙
  • 在 Linux下使用 Python 3.11 和 FastAPI 搭建带免费证书的 HTTPS 服务器
  • HarmonyOS开发,A持有B,B引用A的场景会不会导致内存泄漏,看这里!
  • python|exm6-1try-except结构|raise关键字|异常类型
  • Cannot find module @rollup/rollup-win32-x64-msvc
  • AES 简介 以及 C# 和 js 实现【加密知多少系列_3】
  • 鸿蒙Next开发与未来发展的变革:全场景操作系统的全新纪元
  • UE4学习笔记 FPS游戏制作10 制作UI准星
  • Linux 修改国内镜像源
  • 基于Debian搭建FTP服务器
  • 腾讯云创建DeepSeek AI应用及使用教程
  • 人工智能和量子时代的网络安全
  • 美国再工业化进程需要中国的产业支持
  • 宣布停火后,印控克什米尔地区再次传出爆炸声
  • 广西百色通报:极端强对流天气致墙体倒塌,3人遇难7人受伤
  • 解放军仪仗分队参加白俄罗斯纪念苏联伟大卫国战争胜利80周年阅兵活动
  • 中国科协发声:屡禁不止的奇葩论文再次敲响学风建设警钟
  • 体坛联播|郑钦文收获红土赛季首胜,国际乒联公布财报