【13】制作镜像以及重启实例

devtools/2025/1/13 15:44:16/
制作镜像
k8s集群

有两个镜像需要制作,一个是master节点,一个是node节点。

在master节点上成功部署了k8s的控制平面,在node节点上部署了worker节点的配置,不知道打包镜像重启之后集群的状态是什么样的。

确认集群在运行:

root@master:~/iperf# kubectl get nodes
NAME     STATUS   ROLES           AGE   VERSION
master   Ready    control-plane   24h   v1.28.2
node2    Ready    work            23h   v1.28.2
root@master:~/iperf# kubectl get pods --all-namespaces
NAMESPACE        NAME                                       READY   STATUS    RESTARTS       AGE
example-hotrod   example-hotrod-77df45ccfb-lm748            2/2     Running   2 (137m ago)   3h12m
kube-system      calico-kube-controllers-658d97c59c-wpxnc   1/1     Running   0              18h
kube-system      calico-node-nrlph                          1/1     Running   0              18h
kube-system      calico-node-qz8pz                          1/1     Running   1 (137m ago)   18h
kube-system      coredns-6554b8b87f-4qm9x                   1/1     Running   0              24h
kube-system      coredns-6554b8b87f-7hbjs                   1/1     Running   0              24h
kube-system      etcd-master                                1/1     Running   0              24h
kube-system      kube-apiserver-master                      1/1     Running   0              24h
kube-system      kube-controller-manager-master             1/1     Running   0              24h
kube-system      kube-proxy-8jlr5                           1/1     Running   1 (137m ago)   23h
kube-system      kube-proxy-vt2xm                           1/1     Running   0              24h
kube-system      kube-scheduler-master                      1/1     Running   0              24h
root@master:~/iperf# kubectl get svc --all-namespaces
NAMESPACE        NAME             TYPE        CLUSTER-IP     EXTERNAL-IP   PORT(S)                          AGE
default          kubernetes       ClusterIP   10.96.0.1      <none>        443/TCP                          24h
example-hotrod   example-hotrod   NodePort    10.110.11.37   <none>        8080:30188/TCP                   17h
example-hotrod   jaeger           NodePort    10.111.85.38   <none>        6831:32549/UDP,16686:30629/TCP   17h
kube-system      kube-dns         ClusterIP   10.96.0.10     <none>        53/UDP,53/TCP,9153/TCP           24h

删除当前的数据:

进入jeager目录,将此次运行生成的数据删掉

root@master:~/jaeger/data_collect# lscollect_trace_json.py    generated_requests.json   gen_trace.py   trace_collector.log   traces   traces.tar   trace_to_csv.py
root@master:~/jaeger/data_collect# ls
collect_trace_json.py  generated_requests.json  gen_trace.py  trace_collector.log  traces  traces.tar  trace_to_csv.py
root@master:~/jaeger/data_collect# rm generated_requests.json 
root@master:~/jaeger/data_collect# rm -r traces
root@master:~/jaeger/data_collect# rm traces.tar 
performance 

进入根目录下的performance目录,删除相关的csv文件。

进入运行数据存储的目录/mnt/data1,删除里面的数据。

iperf

进入iperf文件夹,删掉iperf_result.csv文件。

随后查看实例是否挂载了云盘。发现只有系统盘。

制作镜像

选中实例,然后创建自定义镜像。名称为k8s_master_20250112。

另一个的名称为k8s_node_20250112。 

验证镜像

为了验证我们的镜像是否成功,也为了熟悉下次创建集群的时候应该重做哪些配置,需要解决哪些问题,用刚才创建的镜像新建两个实例。

用上面的两个镜像重新创建实例之后,进到master节点,此时发现还是原来的集群在运行,可能是镜像保存了之前的状态。所以需要删掉原来的k8s配置,重新初始化。在node和master节点同时执行下面的命令:

kubeadm reset -f

同时根据提示手动清理了下面的文件:

rm -rf /etc/cni/net.d
rm -rf ~/.kube

但是在重新初始化之前,还是要像第一遍配置k8s一样,进行配置的检查. 

1.进入/etc/modules-load.d文件夹,执行./ipvs.conf,重新加载ipvs模块。

cd /etc/modules-load.d
./ipvs.conf
lsmod | grep ip_vs

显示结果如下: 

root@iZuf66eyuxf6qiujl2gvxrZ:/etc/modules-load.d# ls
ipvs.conf  modules.conf
root@iZuf66eyuxf6qiujl2gvxrZ:/etc/modules-load.d# ./ipvs.conf 
root@iZuf66eyuxf6qiujl2gvxrZ:/etc/modules-load.d# lsmod | grep ip_vs
ip_vs_ftp              16384  0
ip_vs_sed              16384  0
ip_vs_nq               16384  0
ip_vs_sh               16384  0
ip_vs_dh               16384  0
ip_vs_lblcr            16384  0
ip_vs_lblc             16384  0
ip_vs_wrr              16384  0
ip_vs_rr               16384  0
ip_vs_wlc              16384  0
ip_vs_lc               16384  0
ip_vs                 176128  22 ip_vs_wlc,ip_vs_rr,ip_vs_dh,ip_vs_lblcr,ip_vs_sh,ip_vs_nq,ip_vs_lblc,ip_vs_wrr,ip_vs_lc,ip_vs_sed,ip_vs_ftp
nf_nat                 49152  3 nft_chain_nat,xt_MASQUERADE,ip_vs_ftp
nf_conntrack          172032  4 xt_conntrack,nf_nat,xt_MASQUERADE,ip_vs
nf_defrag_ipv6         24576  2 nf_conntrack,ip_vs
libcrc32c              16384  6 nf_conntrack,nf_nat,btrfs,nf_tables,raid456,ip_vs

2.修改内核参数

modprobe br_netfilter
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

3.设置容器运行时

crictl config runtime-endpoint unix:///run/containerd/containerd.sock

 4.拉取镜像

# 使用 ctr 命令拉取所需镜像
ctr -n k8s.io images pull registry.aliyuncs.com/google_containers/kube-apiserver:v1.28.2
ctr -n k8s.io images pull registry.aliyuncs.com/google_containers/kube-controller-manager:v1.28.2
ctr -n k8s.io images pull registry.aliyuncs.com/google_containers/kube-scheduler:v1.28.2
ctr -n k8s.io images pull registry.aliyuncs.com/google_containers/kube-proxy:v1.28.2
ctr -n k8s.io images pull registry.aliyuncs.com/google_containers/pause:3.9
ctr -n k8s.io images pull registry.aliyuncs.com/google_containers/etcd:3.5.7-0
ctr -n k8s.io images pull registry.aliyuncs.com/google_containers/coredns:v1.10.1

5.修改master节点上kubeadm.yaml的信息。控制节点ip和控制节点名称。

6.重启docker和containerd

systemctl restart docker
systemctl restart containerd

 7.执行下面命令

kubeadm init --config=kubeadm.yaml --ignore-preflight-errors=SystemVerification

初始化成功。 

8.配置kubectl

.kube 是 kubectl 默认查找配置的目录,admin.conf 是 kubeadm 在初始化集群时创建的管理员配置文件,它包含了访问集群所需的所有信息:API server 的地址和端口,集群的证书信息,用户认证信息(证书、token等),将admin.conf放置到.kube里面。

mkdir -p $HOME/.kube
cp -i /etc/kubernetes/admin.conf $HOME/.kube/config
chown $(id -u):$(id -g) $HOME/.kube/config  # 赋予正确权限
export KUBECONFIG=/etc/kubernetes/admin.conf

export KUBECONFIG=/etc/kubernetes/admin.conf 是告诉kubectl去哪里找配置文件。 

随后查看kubectl get nodes,发现控制平面已经初始化成功,有些pod也开始运行了。

9.将kubeadm join命令粘贴到node节点。

10.kubectl apply -f calico.yaml,可以看到集群开始运行。

 

 运行jeager

后来发现要改的地方实在太多了,还不如保持master节点不变,一直换node节点。

至少镜像是成功的。


http://www.ppmy.cn/devtools/150174.html

相关文章

使用 SQL 和表格数据进行问答和 RAG(6)—将指定目录下的 CSV 或 Excel 文件导入 SQLite 数据库

将指定目录下的 CSV 或 Excel 文件导入 SQLite 数据库。以下是详细代码逻辑&#xff1a; 1. 类结构 该类包含三个主要方法&#xff1a; _prepare_db&#xff1a;负责将文件夹中的 CSV 和 XLSX 文件转换为 SQL 表。_validate_db&#xff1a;用于验证 SQL 数据库中创建的表是否…

HTML和CSS相关的问题,为什么某些元素的字体无法加载?

当你在HTML和CSS中遇到字体无法加载的情况时&#xff0c;通常是由几个常见的问题引起的。以下是一些可能导致字体无法加载的原因&#xff0c;以及如何解决这些问题。 常见原因及解决方法 字体文件路径错误字体格式不兼容缺少字体的font-face声明字体加载顺序问题浏览器缓存问…

网络安全学习记录

没有网络安全,就没有国家安全 网络安全等级保护:技术要求与管理要求 技术要求:(1)安全物理环境(2)安全通信环境(3)安全区域边界(4)安全计算环境(5)安全管理中心 管理要求:(1)安全管理制度(2)安全管理机构(3)安全人员管理(4)安全建设管理(5)安全运维管理 计算机信息系统面临的…

探索OpenAI API:Python开发者的快速上手指南

随着人工智能技术的快速发展&#xff0c;OpenAI的API接口成为了开发者和企业实现智能应用的重要工具。借助OpenAI强大的语言模型&#xff0c;我们可以在自己的应用中轻松集成自然语言处理&#xff08;NLP&#xff09;能力&#xff0c;处理复杂的语言任务&#xff0c;如文本生成…

网络安全常见的35个安全框架及模型

大家读完觉得有帮助记得关注和点赞&#xff01;&#xff01;&#xff01; 01、概述 网络安全专业机构制定的一套标准、准则和程序&#xff0c;旨在帮助组织了解和管理面临的网络安全风险。优秀的安全框架及模型应该为用户提供一种可靠方法&#xff0c;帮助其实现网络安全建设…

基于SpringBoot的物业管理系统

作者&#xff1a;计算机学姐 开发技术&#xff1a;SpringBoot、SSM、Vue、MySQL、JSP、ElementUI、Python、小程序等&#xff0c;“文末源码”。 专栏推荐&#xff1a;前后端分离项目源码、SpringBoot项目源码、Vue项目源码、SSM项目源码、微信小程序源码 精品专栏&#xff1a;…

算法题(33):长度最小的子数组

审题: 需要我们找到满足元素之和大于等于target的最小子数组的元素个数&#xff0c;并返回 思路&#xff1a; 核心&#xff1a;子数组共有n种起点&#xff0c;nums数组的每个元素都可以充当子数组的首元素&#xff0c;我们只需要先确定子数组的首元素&#xff0c;然后往后查找满…

在UE5中使用视差贴图

视差贴图是一项不用改动模型顶点&#xff0c;通过对相机向量进行计算、修改通过视差实现模型凹凸感的技术&#xff0c;通常运用于地面&#xff0c;配合法线贴图增强凹凸表现。 UE中封装了视差贴图节点ParallaxOcclusionMapping&#xff0c;可以很方便的制作出效果较好的视差效…