K8s - openeuler2203SP1安装 K8s + flannel

article/2025/7/20 18:10:51

环境说明

[root@master-1 ~]# uname -a
Linux master-1 5.10.0-136.12.0.86.oe2203sp1.x86_64 #1 SMP Tue Dec 27 17:50:15 CST 2022 x86_64 x86_64 x86_64 GNU/Linux

安装过程

1、安装 containerd

  1. 下载 tar 包

    # 确保没有使用官方仓库的containerd
    [root@localhost ~]# yum remove containerd -y
    [root@localhost ~]# wget https://github.com/containerd/containerd/releases/download/v1.7.16/containerd-1.7.16-linux-amd64.tar.gz
    [root@localhost ~]# tar -zxvf containerd-1.7.16-linux-amd64.tar.gz 
    [root@localhost ~]# mv bin/* /usr/local/bin/
    
  2. 编写 service 文件

    [root@localhost ~]# vi /usr/lib/systemd/system/containerd.service[Unit]
    Description=containerd container runtime
    Documentation=https://containerd.io
    After=network.target local-fs.target[Service]
    ExecStartPre=-/sbin/modprobe overlay
    ExecStart=/usr/local/bin/containerdType=notify
    Delegate=yes
    KillMode=process
    Restart=always
    RestartSec=5# Having non-zero Limit*s causes performance problems due to accounting overhead
    # in the kernel. We recommend using cgroups to do container-local accounting.
    LimitNPROC=infinity
    LimitCORE=infinity# Comment TasksMax if your systemd version does not supports it.
    # Only systemd 226 and above support this version.
    TasksMax=infinity
    OOMScoreAdjust=-999[Install]
    WantedBy=multi-user.target
    
  3. 修改配置文件

    [root@localhost ~]# mkdir /etc/containerd/
    [root@localhost ~]# containerd config default > /etc/containerd/config.toml 
    # 将cgroup打开
    [root@localhost ~]# vi /etc/containerd/config.toml
    # 找到这一行配置,将false改为true
    139 SystemdCgroup = true
    # 修改sandbox镜像地址
    67 sandbox_image = "registry.aliyuncs.com/google_containers/pause:3.9"
    
  4. 启动服务

    [root@localhost ~]# systemctl daemon-reload
    [root@localhost ~]# systemctl enable --now containerd
    

2、安装 cni 插件

[root@localhost ~]# wget https://github.com/containernetworking/plugins/releases/download/v1.4.1/cni-plugins-linux-amd64-v1.4.1.tgz
[root@localhost ~]# mkdir -p /opt/cni/bin
[root@localhost ~]# tar Cxzvf /opt/cni/bin cni-plugins-linux-amd64-v1.4.1.tgz

3、主机配置

[root@localhost ~]# hostnamectl set-hostname master-1
[root@localhost ~]# echo "127.0.0.1 master-1" >> /etc/hosts
[root@localhost ~]# echo "::1 master-1" >>/etc/hosts[root@master-1 ~]# modprobe bridge
[root@master-1 ~]# modprobe br_netfilter
[root@master-1 ~]# vi /etc/sysctl.conf
net.bridge.bridge-nf-call-ip6tables = 1
net.bridge.bridge-nf-call-iptables = 1
net.ipv4.ip_forward = 1
[root@master-1 ~]# sysctl -p[root@master-1 ~]# setenforce 0
[root@master-1 ~]# sed -i 's/^SELINUX=enforcing$/SELINUX=disabled/' /etc/selinux/config
[root@master-1 ~]# systemctl disable --now firewalld[root@master-1 ~]# swapoff -a

在这里插入图片描述

4、搭建 K8s

  1. 配置 yum 源

    [root@master-1 ~]# sed -i "s/openEuler-22.03-LTS-SP1/openEuler-23.03/g" /etc/yum.repos.d/openEuler.repo
    
  2. yum 安装

    [root@master-1 ~]# yum install kubernet* cri-tools  -y
    [root@master-1 ~]# systemctl enable kubelet
    
  3. cri 配置

    [root@master-1 ~]# crictl config --set runtime-endpoint=unix:///run/containerd/containerd.sock --set image-endpoint=unix:///run/containerd/containerd.sock
    
  4. 查看版本并初始化

    [root@master-1 ~]# kubeadm version
    kubeadm version: &version.Info{Major:"1", Minor:"24", GitVersion:"v1.24.0", GitCommit:"4ce5a8954017644c5420bae81d72b09b735c21f0", GitTreeState:"archive", BuildDate:"2023-03-28T11:09:13Z", GoVersion:"go1.19.4", Compiler:"gc", Platform:"linux/amd64"}[root@master-1 ~]# kubeadm init --kubernetes-version=v1.24.0 --pod-network-cidr=10.244.0.0/16 --image-repository=registry.aliyuncs.com/google_containers
    
  5. 按照提示信息操作

    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.conf
    
  6. 查看节点状态

    [root@master-1 ~]# kubectl get nodes
    NAME       STATUS     ROLES           AGE   VERSION
    master-1   NotReady   control-plane   14m   v1.24.0
    

5、网络插件安装

  1. 下载 flannel yml

    [root@master-1 ~]# wget https://github.com/flannel-io/flannel/releases/download/v0.26.2/kube-flannel.yml
    
  2. 通过离线下载网站获取镜像

    https://pull.7ii.win/

  3. 导入 k8s.io 命名空间,需要通过 docker 进行转换

    [root@master-1 ~]# docker load < flannel-flannel-v0.26.2-amd64.tar
    [root@master-1 ~]# docker load < flannel-flannel-cni-plugin-v1.6.0-flannel1-amd64.tar[root@master-1 ~]# docker save -o flannel-flannel-cni-plugin-v1.6.0-flannel1-amd64.tar flannel/flannel-cni-plugin:v1.6.0-flannel1
    [root@master-1 ~]# docker save -o flannel-flannel-v0.26.2-amd64.tar flannel/flannel:v0.26.2[root@master-1 ~]# ctr -n k8s.io images import flannel-flannel-v0.26.2-amd64.tar
    [root@master-1 ~]# ctr -n k8s.io images import flannel-flannel-cni-plugin-v1.6.0-flannel1-amd64.tar
    
  4. 调整 yml 镜像拉取策略,在 image 下增加 imagePullPolicy: Never
    在这里插入图片描述

  5. 应用 yml

    [root@master-1 ~]# kubectl apply -f kube-flannel.yml
    
  6. yml 参考

    apiVersion: v1
    kind: Namespace
    metadata:labels:k8s-app: flannelpod-security.kubernetes.io/enforce: privilegedname: kube-flannel
    ---
    apiVersion: v1
    kind: ServiceAccount
    metadata:labels:k8s-app: flannelname: flannelnamespace: kube-flannel
    ---
    apiVersion: rbac.authorization.k8s.io/v1
    kind: ClusterRole
    metadata:labels:k8s-app: flannelname: flannel
    rules:
    - apiGroups:- ""resources:- podsverbs:- get
    - apiGroups:- ""resources:- nodesverbs:- get- list- watch
    - apiGroups:- ""resources:- nodes/statusverbs:- patch
    ---
    apiVersion: rbac.authorization.k8s.io/v1
    kind: ClusterRoleBinding
    metadata:labels:k8s-app: flannelname: flannel
    roleRef:apiGroup: rbac.authorization.k8s.iokind: ClusterRolename: flannel
    subjects:
    - kind: ServiceAccountname: flannelnamespace: kube-flannel
    ---
    apiVersion: v1
    data:cni-conf.json: |{"name": "cbr0","cniVersion": "0.3.1","plugins": [{"type": "flannel","delegate": {"hairpinMode": true,"isDefaultGateway": true}},{"type": "portmap","capabilities": {"portMappings": true}}]}net-conf.json: |{"Network": "10.244.0.0/16","EnableNFTables": false,"Backend": {"Type": "vxlan"}}
    kind: ConfigMap
    metadata:labels:app: flannelk8s-app: flanneltier: nodename: kube-flannel-cfgnamespace: kube-flannel
    ---
    apiVersion: apps/v1
    kind: DaemonSet
    metadata:labels:app: flannelk8s-app: flanneltier: nodename: kube-flannel-dsnamespace: kube-flannel
    spec:selector:matchLabels:app: flannelk8s-app: flanneltemplate:metadata:labels:app: flannelk8s-app: flanneltier: nodespec:affinity:nodeAffinity:requiredDuringSchedulingIgnoredDuringExecution:nodeSelectorTerms:- matchExpressions:- key: kubernetes.io/osoperator: Invalues:- linuxcontainers:- args:- --ip-masq- --kube-subnet-mgrcommand:- /opt/bin/flanneldenv:- name: POD_NAMEvalueFrom:fieldRef:fieldPath: metadata.name- name: POD_NAMESPACEvalueFrom:fieldRef:fieldPath: metadata.namespace- name: EVENT_QUEUE_DEPTHvalue: "5000"image: docker.io/flannel/flannel:v0.26.2imagePullPolicy: Nevername: kube-flannelresources:requests:cpu: 100mmemory: 50MisecurityContext:capabilities:add:- NET_ADMIN- NET_RAWprivileged: falsevolumeMounts:- mountPath: /run/flannelname: run- mountPath: /etc/kube-flannel/name: flannel-cfg- mountPath: /run/xtables.lockname: xtables-lockhostNetwork: trueinitContainers:- args:- -f- /flannel- /opt/cni/bin/flannelcommand:- cpimage: docker.io/flannel/flannel-cni-plugin:v1.6.0-flannel1imagePullPolicy: Nevername: install-cni-pluginvolumeMounts:- mountPath: /opt/cni/binname: cni-plugin- args:- -f- /etc/kube-flannel/cni-conf.json- /etc/cni/net.d/10-flannel.conflistcommand:- cpimage: docker.io/flannel/flannel:v0.26.2imagePullPolicy: Nevername: install-cnivolumeMounts:- mountPath: /etc/cni/net.dname: cni- mountPath: /etc/kube-flannel/name: flannel-cfgpriorityClassName: system-node-criticalserviceAccountName: flanneltolerations:- effect: NoScheduleoperator: Existsvolumes:- hostPath:path: /run/flannelname: run- hostPath:path: /opt/cni/binname: cni-plugin- hostPath:path: /etc/cni/net.dname: cni- configMap:name: kube-flannel-cfgname: flannel-cfg- hostPath:path: /run/xtables.locktype: FileOrCreatename: xtables-lock

6、安装结果

[root@master-1 ~]# kubectl get nodes
NAME       STATUS   ROLES           AGE     VERSION
master-1   Ready    control-plane   7m38s   v1.24.0
[root@master-1 ~]#
[root@master-1 ~]#
[root@master-1 ~]# kubectl get pods -A
NAMESPACE      NAME                               READY   STATUS    RESTARTS   AGE
kube-flannel   kube-flannel-ds-rtwp4              1/1     Running   0          98s
kube-system    coredns-74586cf9b6-cdr5n           1/1     Running   0          7m22s
kube-system    coredns-74586cf9b6-hhn72           1/1     Running   0          7m22s
kube-system    etcd-master-1                      1/1     Running   0          7m36s
kube-system    kube-apiserver-master-1            1/1     Running   0          7m36s
kube-system    kube-controller-manager-master-1   1/1     Running   0          7m36s
kube-system    kube-proxy-27tnv                   1/1     Running   0          7m22s
kube-system    kube-scheduler-master-1            1/1     Running   0          7m36s

参考

解决无法拉取flannel镜像:https://blog.csdn.net/qq_46274911/article/details/138486623


http://www.hkcw.cn/article/dnhlOoFbBo.shtml

相关文章

K8S从0完整搭建

介绍 以下搭建的环境使用的是VMware虚拟机。这里大家可以自行选择。K8S每个版本可能都会有差异&#xff0c;请保证相关组件的兼容性。 准备工具 部署版本介绍 名称 版本 描述 centos 7.9 docker 20.10.8 k8s v1.20.10 calico v3.20.0 K8S节点规划 3个m…

【Kubernetes】k8s的helm扩展之监控管理、日志管理、部署efk【elk的升级版】详细说明

部署prometheus【mon节点】 镜像查看【需要先配置好helm源,这里是配置的ali源】【集群必须通外网才能部署啊】helm search repo prometheus-operator 安装prometheushelm install mon ali/prometheus-operator【后面就是上面查询到的helm信息】 下载完毕以后呢就会有一个helm…

最全Linux centos9环境基于k8s(k3s)搭建HomeAssistant,并接入米家官方XiaoMiHome插件

背景 环境 1、linux centos 9&#xff08;该环境的ip可以被你的其他设备访问到&#xff0c;例如你可以用windows访问到家里的服务器&#xff09; 2、k3s集群已完成部署&#xff0c;参考:国内k3s环境搭建-CSDN博客 3、HA部署方式采用容器化部署 概念 1、k3s&#xff1a;k8…

Git 使用全指南

Git 使用全指南 第一部分&#xff1a;核心概念 什么是 Git&#xff1f; 一个分布式版本控制系统 (DVCS)。目标&#xff1a; 跟踪文件变化、协作开发、回溯历史、管理不同开发线&#xff08;分支&#xff09;。核心思想&#xff1a; 每个开发者都有完整的仓库副本&#xff08;包…

Leetcode 269. 火星词典

1.题目基本信息 1.1.题目描述 现有一种使用英语字母的外星文语言&#xff0c;这门语言的字母顺序与英语顺序不同。 给定一个字符串列表 words &#xff0c;作为这门语言的词典&#xff0c;words 中的字符串已经 按这门新语言的字母顺序进行了排序 。 请你根据该词典还原出此…

若依框架-Feign的应用

代码资料链接&#xff1a;https://download.csdn.net/download/ly1h1/90945836 1.背景 若依的微服务框架&#xff0c;少不了各微服务之间的接口调用&#xff0c;以下是采用feign来进行微服务之间的方法调用。 2.案例说明 在system模块下的某个接口&#xff0c;调用factory&am…

印度奥迪沙邦一巴士翻车 50余人被困 紧急救援展开

6月2日,一辆巴士在印度东部奥迪沙邦的山路上发生翻车事故,车内50多名乘客被困。事故发生在当天清晨,巴士在下坡过程中于弯道上失去平衡,导致车辆失控。事故发生后,当地村民和紧急救援人员迅速展开救援行动,当地政府也派出救援队赶往现场。目前,官方尚未公布具体的伤亡情…

从4小时到20分钟 青岛港科技升级货物“秒通关”

作为中国北方重要的国际航运枢纽,青岛港的航线通达全球700多个港口,一季度集装箱吞吐量同比增速达到了7.4%。在当下复杂多变的国际贸易形势下,这座港口如何找准方向为外贸企业“保驾护航”?港口“流量”剧增折射外贸新机遇在山东港口青岛港前湾港区,这艘前往美国东部的集装…

Flannel MAC地址冲突导致Pod 跨节点通信异常

问题背景 客户在扩容 Kubernetes 节点后&#xff0c;发现部分服务 Pod 跨节点通信异常&#xff0c;表现为&#xff1a; • Pod 间通信间歇性失败&#xff1b; • 某些业务服务异常或响应慢&#xff1b; • 怀疑是网络问题引起的。 问题排查 1️⃣ 初步排查网络路由信息 我们…

[前端计算机网络]资源加载过程的详细性能信息浏览器加载资源的全过程

资源加载过程的详细性能信息 基于 PerformanceResourceTiming 对象对页面中某个资源加载过程的详细性能信息进行采集与封装&#xff0c;并结合了计算机网络中的请求生命周期进行度量。 export function observeEvent():void{const type"resource";const entryHand…

德布劳内将接受那不勒斯体检 加盟在即

据报道,德布劳内将加盟那不勒斯。预计他将在比利时国家队比赛结束后接受那不勒斯的体检。上月公布的比利时世预赛名单中包括了德布劳内。比利时队将在世预赛中先后对阵北马其顿和威尔士,其中与威尔士的比赛将于本月10日北京时间2点45分开球。现年33岁的德布劳内在今夏合同到期…

《在人间》是2025最难看懂的剧吗 烧脑剧情挑战观众

《在人间》这部剧集让艺绽君感到难以评价。这种“难评”并非贬义,而是因为观剧过程中真实地感受到了大脑爆炸、脑细胞死了不少,只能用一个相对中立的词汇来形容这部“神剧”。《在人间》共8集,隶属于爱奇艺的微尘剧场,这一剧场以短小精悍的作品著称。主创团队中有知名导演兼…

警方辟谣北京有人高空撒一千万:不是故意的,系工人施工碰倒钱箱 干活不慎掉落

5月29日,北京昌平区住总万科天地一带发生了一起撒钱事件。有市民发帖称,有人在楼上撒了一千万元。视频画面显示,空中飘着几张纸币,一些市民在楼下接钱。次日,北京七里渠派出所工作人员表示,当事人是因为工作时不小心掉落了钱,并提醒市民不要听信网络谣言。至于掉落的金钱…

96岁老兵走失找回 曾为陈毅元帅送信 抗战英雄平安归家

6月2日,山东省济宁市一救援队成功找回了走失的96岁高龄抗战老兵吕企荣老人,老人身体无碍。吕企荣家住泗水县济河街道何家庄村。5月31日早晨7时许,老人从家中步行到村北侧的小公园遛弯,直到中午都没有回家。家属通过监控发现,老人沿着城区北侧万象城附近道路一直向北走,直…

地磁暴雷暴大风与暴雨交织登场 双预警齐发

6月2日6时,中央气象台发布暴雨蓝色预警和强对流天气蓝色预警,覆盖福建、广东、广西等十余省份。中国气象局国家空间天气监测预警中心指出,6月1日至3日可能连续发生地磁暴,6月2日左右,我国北部有机会出现较为明显的极光,部分地区甚至有出现红绿复合极光的可能。预计6月2日…

6月1日起 新疆伊尔克什坦口岸试行24小时货运通关

6月1日,新疆伊尔克什坦口岸货运通道正式启动为期6个月的24小时通关试行。随着首批出入境货车有序通关,该口岸成为中国首个面向吉尔吉斯斯坦实行24小时货运通关的公路口岸。伊尔克什坦口岸位于新疆克孜勒苏柯尔克孜自治州乌恰县,是我国最西端的陆路口岸。口岸主要出口日用百货…

美防长炒作中国威胁论难获东盟支持 东盟强调战略自主

在新加坡举行的第22届香格里拉对话会上,美国国防部长赫格塞思极力渲染所谓的“中国威胁”,以迫使盟国增加军费开支。然而,东盟国家的国防部长们强调了“战略自主”的概念。菲律宾国防部长吉尔伯特特奥多罗表示,菲律宾作为美国的条约盟友,并非没有战略自主的棋子。他虽然仍…

Python 训练营打卡 Day 32-官方文档的阅读

我们已经掌握了相当多的机器学习和python基础知识&#xff0c;现在面对一个全新的官方库&#xff0c;看看是否可以借助官方文档的写法了解其如何使用 我们以pdpbox这个机器学习解释性库来介绍如何使用官方文档 以鸢尾花三分类项目来演示如何查看官方文档 import pandas as pd…

USB子系统和type-c接口快速理解

USB子系统 USB硬件基础 在了解LINUX 的USB驱动之前&#xff0c;我们肯定是要了解相关硬件内容的&#xff0c;如下给出了三种常用的USB接口。 特性 Type A (2.0) Type A 3.0 Type C 接口形状 长方形&#xff0c;单向插入 与 Type A 2.0 相同 椭圆形&#xff0c;可双…

DQN和DDQN(进阶版)

来源&#xff1a; *《第五章 深度强化学习 Q网络》.ppt --周炜星、谢文杰 一、前言 Q表格、Q网络与策略函数 Q表格是有限的离散的&#xff0c;而神经网络可以是无限的。 对于动作有限的智能体来说&#xff0c;使用Q网络获得当下状态的对于每个动作的 状态-动作值 。那么 a…