博主未授权任何人或组织机构转载博主任何原创文章,感谢各位对原创的支持!
博主链接
本人就职于国际知名终端厂商,负责modem芯片研发。
在5G早期负责终端数据业务层、核心网相关的开发工作,目前牵头6G技术研究。
博客内容主要围绕:
5G/6G协议讲解
高级C语言讲解
Rust语言讲解
文章目录
- [k8s v1.30 完整安装过程及CNI安装过程总结](#k8s v1.30 完整安装过程及CNI安装过程总结)
-
- 一、演示环境介绍
- 二、初始环境配置(`每个机器都需要运行`)
-
- [2.1 配置主机的hosts文件](#2.1 配置主机的hosts文件)
- [2.2 关闭系统的交换空间](#2.2 关闭系统的交换空间)
- [2.3 配置内核参数](#2.3 配置内核参数)
- [2.4 安装docker](#2.4 安装docker)
- [2.5 安装k8s v1.30](#2.5 安装k8s v1.30)
- [2.6 安装cri-docker](#2.6 安装cri-docker)
- 三、创建集群(`在master机器上运行下面的命令`)
- 四、加入工作节点(`在除master的机器上运行`)
- 五、安装pod网络calico(`只需在master机器上运行`)
k8s v1.30 完整安装过程及CNI安装过程总结
一、演示环境介绍
主机名 | IP地址 |
---|---|
master | 172.16.1.1 |
node1 | 172.16.1.2 |
二、初始环境配置(每个机器都需要运行
)
2.1 配置主机的hosts文件
bash
sudo cat > /etc/hosts <<EOF
172.16.1.1 master
172.16.1.2 node
EOF
2.2 关闭系统的交换空间
bash
sudo sed -ri 's/^([^#].*swap.*)$/#\1/' /etc/fstab && grep swap /etc/fstab && swapoff -a && free -h
2.3 配置内核参数
bash
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
bash
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
bash
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,所以下载了下图中的版本
运行下面的命令进行下载和安装(注意,如果你下载的版本和我的不一样,要修改第一条命令):
bash
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的下载源:
bash
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机器上运行下面的命令
)
生成配置文件
bash
kubeadm config print init-defaults > myCluster.yaml
根据生成的myCluster.yaml配置文件,配置集群参数:
bash
......
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
改好配置文件之后初始化集群
bash
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节点上运行下面的命令获取加入集群的命令:
bash
kubeadm token create --print-join-command
将返回的命令加上 "--cri-socket unix:///run/cri-dockerd.sock",在node机器上执行。
五、安装pod网络calico(只需在master机器上运行
)
下载v3.28版本的calico配置文件(一定是最新版本,旧版本可能与k8s v1.30不兼容,都是泪啊)
bash
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
bash
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