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

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

本人就职于国际知名终端厂商,负责modem芯片研发。

在5G早期负责终端数据业务层、核心网相关的开发工作,目前牵头6G技术研究。

博客内容主要围绕:

5G/6G协议讲解

高级C语言讲解

Rust语言讲解

文章目录

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

相关推荐
景天科技苑16 分钟前
【云原生开发】K8S多集群资源管理平台架构设计
云原生·容器·kubernetes·k8s·云原生开发·k8s管理系统
川石课堂软件测试3 小时前
性能测试|docker容器下搭建JMeter+Grafana+Influxdb监控可视化平台
运维·javascript·深度学习·jmeter·docker·容器·grafana
追风林10 小时前
mac 本地docker-mysql主从复制部署
mysql·macos·docker
城南vision12 小时前
Docker学习—Docker核心概念总结
java·学习·docker
wclass-zhengge12 小时前
Docker篇(Docker Compose)
运维·docker·容器
梦魇梦狸º16 小时前
腾讯轻量云服务器docker拉取不到镜像的问题:拉取超时
docker·容器·github
鬼才血脉16 小时前
docker+mysql配置
mysql·adb·docker
詹姆斯爱研究Java16 小时前
Docker 的基本概念和优势
docker
南猿北者18 小时前
docker镜像仓库常用命令
运维·docker·容器
杨浦老苏18 小时前
Docker可视化管理面板DPanel的安装
运维·docker·群晖