k8s1.3、containerd2.0部署实战

参考博客

containerd二进制安装与使用测试

containerd可以和docker共存,直接二进制安装,nerdctl-full包含containerd和nerdctl命令行工具可以代替docker单机使用

下载nerdctl-full

建议下载-full版本

下载后解压到/usr/local目录下

tar xvf nerdctl-full-2.0.0-linux-amd64.tar.gz -C /usr/local/

修改镜像源

# 如果不用自己替换成好用的地址
mkdir -p /etc/containerd/certs.d/_default/
cat<< EOF > /etc/containerd/certs.d/_default/hosts.toml
[host."https://docker.unsee.tech"]
  capabilities = ["pull", "resolve"] 
  skip_verify = true
  
EOF

创建配置文件

touch /etc/containerd/config.toml 

tee /etc/containerd/config.toml <<EOF
version = 3

[plugins]
  [plugins.'io.containerd.cri.v1.images']

    [plugins.'io.containerd.cri.v1.images'.pinned_images]
      sandbox = 'registry.aliyuncs.com/google_containers/pause:3.10'

    [plugins.'io.containerd.cri.v1.images'.registry]
      config_path = '/etc/containerd/certs.d'
	  
  [plugins.'io.containerd.cri.v1.runtime']
  
    [plugins.'io.containerd.cri.v1.runtime'.cni]
      bin_dir = '/usr/local/libexec/cni'
      conf_dir = '/etc/cni/net.d'
	  
EOF 

启动containerd服务

systemctl enable containerd.service --now

测试拉取镜像

nerdctl pull busybox
nerdctl run -it busybox:latest

k8s安装

一共就安装4个包,有用的就3个,go语言开发的包包含的文件都比较少,这里采用阿里Debian源其他系统参考

阿里源


apt update && apt-get install -y apt-transport-https
curl -fsSL https://mirrors.aliyun.com/kubernetes-new/core/stable/v1.31/deb/Release.key |
    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.31/deb/ /" |
    tee /etc/apt/sources.list.d/kubernetes.list
apt update
aptinstall -y kubelet kubeadm kubectl

命令行补全

cat  >> ~/.bashrc <<EOF
source <(kubectl completion bash)
source <(nerdctl completion bash)
source <(crictl completion bash)
source <(ctr completion bash)
source <(kubeadm completion bash)
EOF

修改hosts文件


cat >> /etc/hosts << EOF
192.168.222.100 master
192.168.222.101 node1
192.168.222.102 node2
EOF

开启端口转发


cat > /etc/sysctl.d/k8s.conf << EOF
#开启网桥模式,可将网桥的流量传递给iptables链
#加载br_netfilter模块,会自动将br.iptale两个参数设置为1
#net.bridge.bridge-nf-call-ip6tables = 1
#net.bridge.bridge-nf-ca11-iptables = 1
#关闭ipv6协议
net.ipv6.conf.all.disable_ipv6=1
#开启转发
net.ipv4.ip_forward=1
EOF

sysctl --system

#加载内核模块
modprobe br_netfilter
cat > /etc/modules-load.d/k8s.conf << EOF
br_netfilter
EOF

拉取镜像加速

#括号内的版本可以用下面的命令查询
# kubeadm config image list 

images=(
	kube-apiserver:v1.31.3
	kube-controller-manager:v1.31.3
	kube-scheduler:v1.31.3
	kube-proxy:v1.31.3
	pause:3.10
    coredns/coredns:v1.11.3
    etcd:3.5.15-0
)

for imageName in ${images[@]};do
	nerdctl pull registry.aliyuncs.com/google_containers/$imageName
	nerdctl tag registry.aliyuncs.com/google_containers/$imageName k8s.gcr.io/$imageName
	nerdctl rmi registry.aliyuncs.com/google_containers/$imageName 
done

master节点执行集群初始化命令

kubeadm init \
	--apiserver-advertise-address=192.168.222.100 \
	--image-repository registry.aliyuncs.com/google_containers \
	--kubernetes-version=v1.31.3 \
	--service-cidr=10.96.0.0/12 \
	--pod-network-cidr=10.244.0.0/16
mkdir -p $HOME/.kube
cp -i /etc/kubernetes/admin.conf $HOME/.kube/config
chown $(id -u):$(id -g) $HOME/.kube/config

#配置kubectl环境变量

cat <<EOF >> /root/.bashrc
export KUBECONFIG=/etc/kubernetes/admin.conf
EOF

source /root/.bashrc

管理面板kuboard

nerdctl run -d \
  --restart=unless-stopped \
  --name=kuboard \
  -p 80:80/tcp \
  -p 10081:10081/tcp \
  -e KUBOARD_ENDPOINT="http://192.168.23.120:80" \
  -e KUBOARD_AGENT_SERVER_TCP_PORT="10081" \
  -v /root/kuboard-data:/data \
  eipwork/kuboard:v3
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值