3、kubeadm安装

Kubernetes学习目录

1、kubeadm仓库配置

master和node都要配置

1.1、配置yum仓库

1.1.2、配置repo

cat <<EOF > /etc/yum.repos.d/kubernetes.repo
[kubernetes]
name=Kubernetes
baseurl=https://mirrors.aliyun.com/kubernetes/yum/repos/kubernetes-el7-x86_64/
enabled=1
gpgcheck=0
EOF

1.1.2、查询kubeadm历史版本

[root@master1 ~]# yum --showduplicates  search  kubeadm

2、kubeadm安装

master和node都要安装

2.1、安装kubelet kubeadm kubectl【使用1.25.7版本】

yum install kubelet-1.25.7 kubeadm-1.25.7 kubectl-1.25.7 yum install kubelet-1.25.7 kubeadm-1.25.7 kubectl-1.25.7 -y

2.2、安装包的介绍

# 包的介绍
conntrack-tools  # 让系统管理员可与连接跟踪系统进行交互          
cri-tools        # 类似于 docker 的命令行工具                 
kubernetes-cni   # 是容器网络通信的软件                               
socat            # 是kubelet的依赖                      
nftables         # 数据包过滤 

2.3、kubeadm命令帮忙查看

[root@master1 ~]# kubeadm --help

3、配置

3.1、kubelet配置 - 配置cgroup

# 获取docker的cgroups
DOCKER_CGROUPS=$(docker info | grep 'Cgroup Driver' | cut -d ' ' -f4)
echo $DOCKER_CGROUPS
配置kubelet的cgroups 对于kubeadm方式安装的k8s来说,他对于容器运行时的配置需求,默认推荐用systemd 驱动程序,而不是cgroupfs 驱动程序,原因是,我们安装好的kubernetes的kubelet是以 systemd 服务的样式来进行管理。 对于 1.22 版的 k8s,它对于底层Docker的cgroup机制默认采用的就是 systemd方式,我们不用在向之前的版本一样,需要通过改造启动配置文件的方式来让kubelet实现我们的需求。
参考资料 https://kubernetes.io/docs/tasks/administer-cluster/kubeadm/configurecgroup-driver/

3.2、kubelet服务设置开机自启动

systemctl enable kubelet


注意:
   此处没有必要启动kubelet,否则,当kubelet启动后,会一直发生重启现象,使用systemctl status kubelet,你会发现重复报错误信息;
   10月 21 15:49:31 master systemd[1]: kubelet.service: main process exited, code=exited, stat...
   10月 21 15:49:31 master systemd[1]: Unit kubelet.service entered failed state.
   10月 21 15:49:31 master systemd[1]: kubelet.service failed.
  运行journalctl -xefu kubelet 命令查看systemd日志才发现,真正的错误是:   10月 21 15:51:44 master kubelet[1881]: F1021 15:51:44.620873   1881 server.go:190] failed to load Kubelet config file /var/lib/kubelet/config.yaml, error failed to read kubelet config file "/var/lib/kubelet/config.yaml", error: open /var/lib/kubelet/config.yaml: no such file or directory   这个错误在控制节点运行kubeadm init 生成config.yaml文件后会被自动解决,此处可先忽略。因为在环境初始化完成前,这个错误会不停的出现

3.3、kubeadm信息检查

3.3.1、查看集群初始化时候的默认配置

kubeadm config print init-defaults

注意:
   可以重点关注,master和node的注释信息、镜像仓库和子网信息
   这条命令可以生成定制的kubeadm.conf认证文件

3.3.2、检查当前版本的kubeadm所依赖的镜像版本

[root@master1 ~]# kubeadm config images list
registry.k8s.io/kube-apiserver:v1.26.2
registry.k8s.io/kube-controller-manager:v1.26.2
registry.k8s.io/kube-scheduler:v1.26.2
registry.k8s.io/kube-proxy:v1.26.2
registry.k8s.io/pause:3.9
registry.k8s.io/etcd:3.5.6-0
registry.k8s.io/coredns/coredns:v1.9.3

3.3.4、修改containerd脚本【所有节点】

# 生成容器配置
containerd config default > /etc/containerd/config.toml

[root@master1 ~]# grep sandbox_image  /etc/containerd/config.toml
    sandbox_image = "registry.k8s.io/pause:3.6"

# 修改仓库地址,这步骤很重要    
sed -i "s#registry.k8s.io/pause#registry.aliyuncs.com/google_containers/pause#g"  /etc/containerd/config.toml

[root@master1 ~]# grep sandbox_image  /etc/containerd/config.toml
    sandbox_image = "registry.aliyuncs.com/google_containers/pause:3.6"

# 重启容器
systemctl restart containerd

3.3.5、预拉取镜像文件

cat > kubeadm_pull_base.sh <<'EOF'
#!/bin/bash
# 从新的地址下载所需镜像
images=$(kubeadm config images list --kubernetes-version=v1.26.2 | awk -F "/" '{print $2}')
for i in ${images}
do 
docker pull registry.aliyuncs.com/google_containers/$i
# docker tag registry.aliyuncs.com/google_containers/$i registry.k8s.io/$i
# docker rmi registry.aliyuncs.com/google_containers/$i
done
EOF
sh kubeadm_pull_base.sh 

 

posted @ 2023-03-16 10:18  小粉优化大师  阅读(62)  评论(0编辑  收藏  举报