k8s v1.30 完整安装过程及CNI安装过程总结

news2024/11/16 10:36:54

博主未授权任何人或组织机构转载博主任何原创文章,感谢各位对原创的支持!
博主链接

本人就职于国际知名终端厂商,负责modem芯片研发。
在5G早期负责终端数据业务层、核心网相关的开发工作,目前牵头6G技术研究。


博客内容主要围绕:
       5G/6G协议讲解
       高级C语言讲解
       Rust语言讲解



文章目录

  • k8s v1.30 完整安装过程及CNI安装过程总结
    • 一、演示环境介绍
    • 二、初始环境配置(`每个机器都需要运行`)
      • 2.1 配置主机的hosts文件
      • 2.2 关闭系统的交换空间
      • 2.3 配置内核参数
      • 2.4 安装docker
      • 2.5 安装k8s v1.30
      • 2.6 安装cri-docker
    • 三、创建集群(`在master机器上运行下面的命令`)
    • 四、加入工作节点(`在除master的机器上运行`)
    • 五、安装pod网络calico(`只需在master机器上运行`)

k8s v1.30 完整安装过程及CNI安装过程总结

一、演示环境介绍

主机名IP地址
master172.16.1.1
node1172.16.1.2

二、初始环境配置(每个机器都需要运行

2.1 配置主机的hosts文件

sudo cat > /etc/hosts <<EOF
172.16.1.1 master
172.16.1.2 node
EOF

2.2 关闭系统的交换空间

sudo sed -ri 's/^([^#].*swap.*)$/#\1/' /etc/fstab && grep swap /etc/fstab && swapoff -a && free -h

2.3 配置内核参数

sudo cat >> /etc/sysctl.conf <<EOF
vm.swappiness = 0
net.bridge.bridge-nf-call-iptables = 1
net.ipv4.ip_forward = 1
net.bridge.bridge-nf-call-ip6tables = 1
EOF

sudo cat >> /etc/modules-load.d/neutron.conf <<EOF
br_netfilter
EOF

sudo modprobe  br_netfilter
sudo sysctl -p

2.4 安装docker

sudo apt update
sudo apt install -y ca-certificates curl gnupg lsb-release
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /usr/share/keyrings/docker-archive-keyring.gpg
echo "deb [arch=$(dpkg --print-architecture) signed-by=/usr/share/keyrings/docker-archive-keyring.gpg] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null

sudo apt-get update
sudo apt install docker-ce docker-ce-cli containerd.io docker-compose -y
sudo cat > /etc/docker/daemon.json <<EOF
{
"registry-mirrors": [
"https://docker.mirrors.ustc.edu.cn",
"https://hub-mirror.c.163.com",
"https://reg-mirror.qiniu.com",
"https://registry.docker-cn.com"
],
 "exec-opts": ["native.cgroupdriver=systemd"],
 "data-root": "/data/docker",
 "log-driver": "json-file",
 "log-opts": {
	 "max-size": "20m",
	 "max-file": "5"
	}
}
EOF

sudo systemctl restart docker.service
sudo systemctl enable docker.service

2.5 安装k8s v1.30

sudo apt-get update && sudo apt-get install -y apt-transport-https

curl -fsSL https://mirrors.aliyun.com/kubernetes-new/core/stable/v1.30/deb/Release.key | sudo  gpg --dearmor -o /etc/apt/keyrings/kubernetes-apt-keyring.gpg

echo "deb [signed-by=/etc/apt/keyrings/kubernetes-apt-keyring.gpg] https://mirrors.aliyun.com/kubernetes-new/core/stable/v1.30/deb/ /" | sudo  tee /etc/apt/sources.list.d/kubernetes.list

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

sudo systemctl enable kubelet

2.6 安装cri-docker

从* https://github.com/Mirantis/cri-dockerd*下载最新的cri-docker版本,我这里使用的是0.3.15

在这里插入图片描述

因为我的环境是Ubuntu22.04,所以下载了下图中的版本
在这里插入图片描述
运行下面的命令进行下载和安装(注意,如果你下载的版本和我的不一样,要修改第一条命令):

wget https://github.com/Mirantis/cri-dockerd/releases/download/v0.3.15/cri-dockerd_0.3.15.3-0.ubuntu-jammy_amd64.deb

sudo dpkg -i cri-dockerd_0.3.15.3-0.ubuntu-jammy_amd64.deb

下面我们需要配置一下cri-docker的下载源:

sudo sed -ri 's@^(.*fd://).*$@\1 --pod-infra-container-image registry.aliyuncs.com/google_containers/pause@' /usr/lib/systemd/system/cri-docker.service

sudo systemctl daemon-reload && sudo systemctl restart cri-docker && sudo systemctl enable cri-docker

三、创建集群(在master机器上运行下面的命令

生成配置文件

kubeadm config print init-defaults > myCluster.yaml

根据生成的myCluster.yaml配置文件,配置集群参数:

......
localAPIEndpoint:
  # 修改成本master的ip
  advertiseAddress: 172.16.1.1
  bindPort: 6443
nodeRegistration:
  # 修改成cri-dockerd的sock
  criSocket: unix:///run/cri-dockerd.sock
  imagePullPolicy: IfNotPresent
  # 修改成本master的主机名
  name: master
  taints: null
---
......
etcd:
  local:
    # 修改etcd的数据目录
    dataDir: /data/etcd
# 修改加速地址
imageRepository: registry.aliyuncs.com/google_containers
kind: ClusterConfiguration
# 修改成具体对应的版本好
kubernetesVersion: 1.30.1
# 如果是多master节点,就需要添加这项,指向代理的地址,这里就设置成master的节点
controlPlaneEndpoint: "master:6443"
networking:
  dnsDomain: cluster.local
  serviceSubnet: 10.96.0.0/12
  # 添加pod的IP地址
  podSubnet: 10.244.0.0/16 

# 在最后添加上下面两部分
---
apiVersion: kubeproxy.config.k8s.io/v1alpha1
kind: KubeProxyConfiguration
mode: ipvs
---
apiVersion: kubelet.config.k8s.io/v1beta1
kind: KubeletConfiguration
cgroupDriver: systemd 

改好配置文件之后初始化集群

kubeadm init --config=myCluster.yaml

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

四、加入工作节点(在除master的机器上运行

如果你的机器之前加入过一个集群,可以运行下面的命令删除之前的配置信息:
kubeadm reset --cri-socket unix:///run/cri-dockerd.sock

在master节点上运行下面的命令获取加入集群的命令:

kubeadm token create --print-join-command

将返回的命令加上 “–cri-socket unix:///run/cri-dockerd.sock”,在node机器上执行。


五、安装pod网络calico(只需在master机器上运行

下载v3.28版本的calico配置文件(一定是最新版本,旧版本可能与k8s v1.30不兼容,都是泪啊

wget https://github.com/projectcalico/calico/blob/v3.28.0/manifests/tigera-operator.yaml

cat > ippool.yaml << EOF
apiVersion: projectcalico.org/v3
kind: IPPool
metadata:
  name: default
spec:
  cidr: 10.244.0.0/16
  ipipMode: Always
  natOutgoing: true
EOF

cat > custom-resources.yaml << EOF 
apiVersion: operator.tigera.io/v1
kind: Installation
metadata:
  name: default
spec:
  calicoNetwork:
    ipPools:
    - name: default-ipv4-ippool
      blockSize: 26
      cidr: 10.244.0.0/16
      encapsulation: VXLANCrossSubnet
      natOutgoing: Enabled
      nodeSelector: {}

---
apiVersion: operator.tigera.io/v1
kind: APIServer
metadata:
  name: default
spec: {}

EOF

安装calico v3.28

kubectl create -f tigera-operator.yaml
kubectl apply -f ippool.yaml

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

kubectl apply -f custom-resources.yaml


在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1950409.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

自动灭火绳品牌怎么选?欢迎进入自动灭火时代

伴随着科技的快速发展和自动灭火技术的广泛应用&#xff0c;各种各样的自动灭火装置及自动灭火系统已经成为了保障人们生命及财产安全的重要防线。面对不断涌现的自动灭火绳品牌&#xff0c;我们该怎么选择呢&#xff1f; 第一&#xff0c;首先看自动灭火绳的材料成分。 传统的…

计算机网络知识-面试点1

1. 三握四挥 定义&#xff1a; 在计算机网络中&#xff0c;特别是TCP/IP协议中&#xff0c;“三握”指的是三次握手&#xff08;Three-way Handshake&#xff09;&#xff0c;而“四挥”则指的是四次挥手&#xff08;Four-way Handshake&#xff09;。这两个过程分别用于TCP连接…

C# dataGridView 去掉左边多出来空列

1.问题 在使用winform做界面程序时&#xff0c;dataGridView控件创建好后&#xff0c;左侧会多出一列为空&#xff0c;如何删除呢 2.解决方法 你可以在属性窗口中进行设置 如图&#xff1a; 将RowHeadersVisible 属性设置为False 或者代码设置 this.dataGridView1.RowHea…

MFC列表框示例

本文仅供学习交流&#xff0c;严禁用于商业用途&#xff0c;如本文涉及侵权请及时联系本人将于及时删除 目录 1.示例内容 2.程序步骤 3.运行结果 4.代码全文 1.示例内容 编写一个对话框应用程序CMFC_Li6_4_学生信息Dlg&#xff0c;对话框中有一个列表框&#xff0c;当用户…

使用vscode连接开发机进行python debug

什么是debug&#xff1f; 当你刚开始学习Python编程时&#xff0c;可能会遇到代码不按预期运行的情况。这时&#xff0c;你就需要用到“debug”了。简单来说&#xff0c;“debug”就是能再程序中设置中断点并支持一行一行地运行代码&#xff0c;观测程序中变量的变化&#xff…

【MySQL进阶之路 | 高级篇】锁的概述以及读写并发问题

事务的隔离性是由锁来实现的。 1. 概述 锁是计算机协调多个进程或线程并发访问某一资源的机制。在程序开发中会存在很多线程同步的问题&#xff0c;当多个线程并发访问某个数据的时候&#xff0c;尤其是针对一些敏感的数据&#xff08;如订单&#xff0c;金额等&#xff09;&…

面试前端实习常问的关于【ES6新特性】的问题

ES6新特性 日常前端代码开发中&#xff0c;有哪些值得用 ES6 去改进的编程优化或者规范? 常用箭头函数来取代有this指向的函数常用 let 取代 var 命令常用数组/对象的结构赋值来命名变量&#xff08;结构更清晰&#xff0c;语义更明确&#xff0c;可读性更好&#xff09;在长字…

基于Delaunay三角网的平面点云面积计算(python)

1、背景介绍 三维点云密度比较高&#xff0c;可以根据点云数据精确计算物体表面面积&#xff0c;如建筑物水平占地面积、室内房间墙面面积等&#xff0c;如下图&#xff0c;这在实际应用中具有非常重要的作用。其实归根到底&#xff0c;计算上述面积&#xff0c;可以认为计算平…

【Linux】基本指令1

文章目录 1. find2. which3. alias4.whereis5.grep6. sort 、uniq7. linux怎么编辑文件中的内容 1. find 1.1 find: 查找文件所在的位置。&#xff08;当我们进行find搜索的时候&#xff0c;可能需要访问磁盘进而导致效率低下。&#xff09; 1.2 find / file.txt 在Linux系统是…

掏耳神器哪种最好用?力荐四款优质高口碑产品

要说到掏耳神器&#xff0c;市面上有不少声称能掏掏干净耳垢的挖耳勺。例如棉签、螺旋掏耳勺、可视掏耳勺等。那么那种掏耳神器最好用呢&#xff1f;有着多年采耳经验的我&#xff0c;当然把这三种神器都买来尝试过&#xff0c;很明确地告诉大家&#xff0c;只有可视掏耳勺最好…

Oracle集群RAC磁盘管理命令asmcmd的使用

文章目录 ASM磁盘共享简介ASM磁盘共享的优势ASM磁盘组成ASM磁盘共享的应用场景Asmcmd简介Asmcmd的功能Asmcmd的命令Asmcmd的使用注意事项Asmcmd运行模式交互模式运行非交互模式运行ASMCMD命令分类实例管理命令:文件管理命令:磁盘组管理命令:模板管理命令:文件访问管理命令:…

云计算实训室建设可行性报告

一、建设云计算实训室的目的和意义 随着信息技术的飞速发展&#xff0c;云计算作为一种新型的信息服务模式&#xff0c;已经成为推动信息技术创新和促进信息产业发展的重要力量。中高职院校作为培养高素质技能人才的重要基地&#xff0c;应当紧跟时代步伐&#xff0c;加强云计…

com.mysql.cj.jdbc.Driver 爆红

出现这样的问题就是pom.xml文件中没有添加数据库依赖坐标 添加上这个依赖即可&#xff0c;添加完后重新加载一下Maven即可。 如果感觉对你有用就点个赞&#xff01;&#xff01;&#xff01;

第三十二天 Emmet语法生成HTML标签

前身是zen coding 用缩写提高写代码效率 vscode已经集成该语法 写div直接按tab自动生成<div></div>标签 div*3 再按tab 就可以一下生成四个该标签 父子级的标签 例如ul>li div>span 兄弟关系 divp 生成带类名或者id 输入.as 产生 输入#id 产生 默认是div…

如何用 Python 处理和操作 CSV 文件?

CSV&#xff08;Comma-Separated Values&#xff09;文件是一种常见的数据存储格式&#xff0c;广泛用于数据交换和轻量级数据存储。CSV文件以纯文本格式存储表格数据&#xff0c;每一行代表一条记录&#xff0c;字段之间用逗号&#xff08;或其他分隔符&#xff09;分隔。Pyth…

数据结构(5):树和二叉树

1 树的定义 1.1 树的基本概念 分支可以称为边&#xff0c;结点可以用于存放数据结构。 除了根节点&#xff0c;其他节点只有一个前驱&#xff01;&#xff01;&#xff01;&#xff01; 互不相交也就是 只有一个前驱结点&#xff01; 树应用的很广的 1.2 结点之间的关系 直接…

微服务实践和总结

H5原生组件web Component Web Component 是一种用于构建可复用用户界面组件的技术&#xff0c;开发者可以创建自定义的 HTML 标签&#xff0c;并将其封装为包含逻辑和样式的独立组件&#xff0c;从而在任何 Web 应用中重复使用。 <!DOCTYPE html> <html><head…

Python | Leetcode Python题解之第283题移动零

题目&#xff1a; 题解&#xff1a; class Solution:def moveZeroes(self, nums: List[int]) -> None:n len(nums)left right 0while right < n:if nums[right] ! 0:nums[left], nums[right] nums[right], nums[left]left 1right 1

springboot游戏化教育平台-计算机毕业设计源码92424

游戏化教育平台设计与实现 摘 要 游戏化教育平台是一种融合了游戏元素和教育内容的创新型教育工具&#xff0c;旨在提升学习者的学习兴趣和参与度。本论文基于SpringBoot框架&#xff0c;设计并实现了一款游戏化教育平台。该平台包括用户和管理员两大功能模块。对于用户功能而…

Linux开启coredump

在Linux系统中&#xff0c;C/C程序崩溃是常见的问题之一。Coredump是指当一个程序崩溃时&#xff0c;系统把程序运行时的内存数据以二进制文件的形式保存下来&#xff0c;以便程序开发者进行崩溃分析。本文将介绍如何开启并配置Coredump 1、查看并配置coredump 在Linux系统中…