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

kind部署K8S集群并将“修仙业务“部署到kind集群

文章目录

  • 1. 基础环境
  • 2. 安装kubectl客户端
  • 3. 安装kind
  • 4. kind创建k8s集群
  • 5. 部署修仙业务
  • 6. 踩坑记录
    • 6.1 loadFlannelSubnetEnv failed: open /run/flannel/subnet.env: no such file or directory
    • 6.2 pod拒绝连接

1. 基础环境

  • 虚拟机:类红帽系统
  • 内存:至少4g
  • 处理器:4c
  • 有docker环境
  • yum install -y lvm2

2. 安装kubectl客户端

  • 编写yum下载源-k8s,使用阿里云源:[kubernetes镜像_kubernetes下载地址_kubernetes安装教程-阿里巴巴开源镜像站](https://developer.aliyun.com/mirror/kubernetes?spm=a2c6h.13651102.0.0.560a1b11oZq8XJ)
cat <<EOF | tee /etc/yum.repos.d/kubernetes.repo
[kubernetes]
name=Kubernetes
baseurl=https://mirrors.aliyun.com/kubernetes-new/core/stable/v1.28/rpm/
enabled=1
gpgcheck=1
gpgkey=https://mirrors.aliyun.com/kubernetes-new/core/stable/v1.28/rpm/repodata/repomd.xml.key
EOFsetenforce 0yum install -y  kubectl
# kubeadm kubelet 
systemctl enable kubectl && systemctl start kubectl
  • 设置软链接:ln -s /usr/bin/kubectl /usr/local/bin/kubectl

3. 安装kind

  • kind的github官网:[kubernetes-sigs/kind: Kubernetes IN Docker - local clusters for testing Kubernetes](https://github.com/kubernetes-sigs/kind)
  • 下载kind 1.19
[root@jumpserver ~]# chmod +x kind-linux-amd64 
[root@jumpserver ~]# mv kind-linux-amd64 /usr/local/bin/
  • k8s集群启动文件:kind-1c3w.yaml
  • mkdir -p /etc/kind
  • vim /etc/kind/kind-1c3w.yaml
# kind-1c3w.yaml
kind: Cluster
apiVersion: kind.x-k8s.io/v1alpha4
nodes:- role: control-plane # 控制平面节点extraPortMappings:- containerPort: 31000hostPort: 31000- role: worker        # 工作节点 1- role: worker        # 工作节点 2- role: worker        # 工作节点 3

4. kind创建k8s集群

  • 命令:kind-linux-amd64 create cluster --name 1c3w-cluster --config /etc/kind/kind-1c3w.yaml

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

5. 部署修仙业务

  • 修仙业务配置文件:oldboyedu-network-cni-test.yaml 链接: https://pan.baidu.com/s/1nuqifEZwkD5b0NC_Gmcd7w?pwd=cypu 提取码: cypu

  • kind自带kindnet,类似于flannel,无需再次安装flannel插件;安装后会有bug,请看踩坑记录

    在这里插入图片描述

  • 查看k8s节点:

[root@jumpserver ~]# kubectl get nodes
NAME                         STATUS   ROLES           AGE   VERSION
1c3w-cluster-control-plane   Ready    control-plane   37m   v1.27.1
1c3w-cluster-worker          Ready    <none>          37m   v1.27.1
1c3w-cluster-worker2         Ready    <none>          37m   v1.27.1
1c3w-cluster-worker3         Ready    <none>          37m   v1.27.1
  • 修改业务配置文件,将节点名称该为当前worker节点名称:
[root@jumpserver ~]# cat oldboyedu-network-cni-test.yaml
apiVersion: v1
kind: Pod
metadata:name: xiuxian-v1
spec:nodeName: 1c3w-cluster-worker #修改此处containers:- image: registry.cn-hangzhou.aliyuncs.com/yinzhengjie-k8s/apps:v1 name: xiuxian---apiVersion: v1
kind: Pod
metadata:name: xiuxian-v2
spec:nodeName: 1c3w-cluster-worker2 #修改此处containers:- image: registry.cn-hangzhou.aliyuncs.com/yinzhengjie-k8s/apps:v2name: xiuxian
  • 运行pod:
kubectl delete -f oldboyedu-network-cni-test.yaml
kubectl apply -f oldboyedu-network-cni-test.yaml 
[root@jumpserver ~]# kubectl get pods 
NAME         READY   STATUS    RESTARTS   AGE
xiuxian-v1   1/1     Running   0          13m
xiuxian-v2   1/1     Running   0          13m
  • 端口映射:
    • kubectl port-forward po/xiuxian-v1 --address=0.0.0.0 80:80
    • kubectl port-forward po/xiuxian-v2 --address=0.0.0.0 81:80

在这里插入图片描述

在这里插入图片描述

6. 踩坑记录

6.1 loadFlannelSubnetEnv failed: open /run/flannel/subnet.env: no such file or directory

  • 查看当前容器信息:kubectl describe pod xiuxian-v1

在这里插入图片描述

  Warning  FailedCreatePodSandBox  6m24s                 kubelet  Failed to create pod sandbox: rpc error: code = Unknown desc = failed to setup network for sandbox "7a3053da30112cf3509a53d0376a1a1ad58c604c16248833d9d162f21c3842ee": plugin type="flannel" failed (add): loadFlannelSubnetEnv failed: open /run/flannel/subnet.env: no such file or directory
  • 原因:
之前尝试安装过 Flannel,但安装不完整或失败了,导致集群的 CNI 配置指向了 Flannel,而 Flannel 需要的配置文件 (/run/flannel/subnet.env) 却不存在.
  • 解决方案:
# 删除flannel插件
kubectl delete -f https://github.com/flannel-io/flannel/releases/latest/download/kube-flannel.yml
# 如果url访问失败,可以从浏览器下载该yml文件,再上传至服务器
kubectl delete -f kube-flannel.yml # 删除容器内flannel文件
for i in `docker ps --filter "label=io.x-k8s.kind.cluster" --format "{{.Names}}"`; do    docker exec $i rm -rf /etc/cni/net.d/*flannel* /etc/cni/net.d/10-flannel.conflist ; done# 重启容器中kubectl
for i in `docker ps --filter "label=io.x-k8s.kind.cluster" --format "{{.Names}}"`; do docker exec $i systemctl restart kubelet ; done# 删除启动的pod 
kubectl delete -f oldboyedu-network-cni-test.yaml# 启动pod
kubectl apply -f oldboyedu-network-cni-test.yaml

6.2 pod拒绝连接

[root@jumpserver ~]# kubectl get pods -o wide
NAME         READY   STATUS    RESTARTS   AGE    IP           NODE                  NOMINATED NODE   READINESS GATES
xiuxian-v1   1/1     Running   0          3m9s   10.244.3.3   1c3w-cluster-worker   <none>           <none>
[root@jumpserver ~]# curl 10.244.3.3
curl: (7) Failed to connect to 10.244.3.3 port 80: 拒绝连接
  • 解决方案:
# 进入pod内部
kubectl exec -it xiuxian-v1 -- /bin/sh
# curl 127.0.0.1
# 在容器内部发现curl成功

在这里插入图片描述

  • 需要端口映射,见上面部署业务
[root@jumpserver ~]# kubectl apply -f oldboyedu-network-cni-test.yaml 
pod/xiuxian-v1 created
pod/xiuxian-v2 created
[root@jumpserver ~]# kubectl get pods
NAME         READY   STATUS    RESTARTS   AGE
xiuxian-v1   1/1     Running   0          7s
xiuxian-v2   1/1     Running   0          7s
[root@jumpserver ~]# kubectl get pods -o wide
NAME         READY   STATUS    RESTARTS   AGE   IP           NODE                   NOMINATED NODE   READINESS GATES
xiuxian-v1   1/1     Running   0          10s   10.244.3.6   1c3w-cluster-worker    <none>           <none>
xiuxian-v2   1/1     Running   0          10s   10.244.1.3   1c3w-cluster-worker2   <none>           <none>
[root@jumpserver ~]# curl 10.244.3.6
curl: (7) Failed to connect to 10.244.3.6 port 80: 拒绝连接
[root@jumpserver ~]# kubectl exec -it xiuxian-v1 sh
kubectl exec [POD] [COMMAND] is DEPRECATED and will be removed in a future version. Use kubectl exec [POD] -- [COMMAND] instead.
/ # curl 127.0.0.1
<!DOCTYPE html>
<html><head><meta charset="utf-8"/><title>yinzhengjie apps v1</title><style>div img {width: 900px;height: 600px;margin: 0;}</style></head><body><h1 style="color: green">凡人修仙传 v1 </h1><div><img src="1.jpg"><div></body></html>
http://www.dtcms.com/a/391136.html

相关文章:

  • 《C++程序设计》笔记p2
  • 第1章:项目前言
  • 实现类似word 文档下划线输入功能
  • AR技术赋能高风险作业:重塑安全与效率
  • Axure-图片旋转人机验证
  • web:ts中class、interface、type的区别
  • css中的vm和vh,页面滚动的卡片网页
  • git cherry pick怎么用
  • 40岁从智驾转具身智能之路
  • 串口连接失败排坑步骤
  • QML学习笔记(三)QML基础语法其一:Rectangle及帮助文档的使用
  • 工业相机与镜头靶面尺寸的关系:从原理到选型的避坑指南
  • javaweb tomcat的使用
  • AI 赋能 APP 界面设计公司:从美学到交互的智能升级
  • Java 中的 static:从动机到内存模型、并发与最佳实践
  • 【数据结构与算法(C语言版)】从 0 实现 线性表之顺序表(代码实现增删查功能全解析)
  • MethodSignature signature = (MethodSignature) joinPoint.getSignature()
  • CN2香港服务器是否适合SEO优化?
  • 查看电脑IP地址、修改IP操作,查询本地网络使用的公网IP,判断路由器是否有公网IP,内网IP又怎么让外网上访问
  • 合成孔径雷达干涉测量InSAR:从星载与地基系统原理到多领域应用实战,涵盖数据处理、地形三维重建、形变监测与案例解析
  • Activity 之间跳转时,生命周期的变化
  • SortableItem拖拽组件里的Popconfirm失效
  • [吾爱原创] 图片尺寸调整-支持批量、多格式、缩小、放大、保留元数据、无损质量、最小体积、预览
  • 【C语言】C 语言文件操作全解析:从基础到进阶
  • 《工作流落地篇:工作流中涉及到的主要数据库表》
  • 实验二理解 Java 语言的基本结构和程序设计方法
  • 【开题答辩全过程】以 基于Java的社区医疗预约系统的设计与实现为例,包含答辩的问题和答案
  • 以虚筑实,虚拟仿真技术浇筑水利工程人才培养的数字基座
  • 拟声 0.79.1 | 高颜值,拟态风格,B站歌曲,可下载,可搜索歌词
  • 团体程序设计天梯赛-练习集 L1-038 新世界