集群配置
节点名称 | 内存 | 硬盘 | 处理器内核总数 | ip |
---|---|---|---|---|
master | 6GB | 40GB | 6 | 192.168.67.166 |
node1 | 6GB | 40GB | 6 | 192.168.67.167 |
node2 | 6GB | 40GB | 6 | 192.168.67.168 |
一、所有节点更改镜像源
curl -o /etc/yum.repos.d/CentOS-Base.repo
二、所有节点安装docker,注意:K8s在1.24以上版本将不再直接支持Docker,因此需要将Kubernetes的Runtime改为Containerd。(安装Docker时会自动安装Containerd)
-- Docker CE 的软件源信息添加到 YUM 软件包管理器的配置中,系统默认镜像不包含docker-ce yum install -y yum-utils yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo -- 卸载旧版本 sudo yum remove docker \ docker-client \ docker-client-latest \ docker-common \ docker-latest \ docker-latest-logrotate \ docker-logrotate \ docker-engine -- 下载docker-ce sudo yum install -y docker-ce-20.10.* docker-ce-cli-20.10.* -- 配置镜像加速https://cr.console.aliyun.com/cn-hangzhou/instances/mirrors mkdir -p /etc/docker sudo tee /etc/docker/daemon.json <<-'EOF' { "registry-mirrors": ["https://sfpt7y1n.mirror.aliyuncs.com"] } EOF sudo systemctl daemon-reload sudo systemctl restart docker
三、所有节点对系统进行配置修改
-- 禁用selinux,让容器可以读取主机文件系统 sed -i 's/enforcing/disabled/' /etc/selinux/config # 永久 -- 关闭swap分区 sed -ri 's/.*swap.*/#&/' /etc/fstab # 永久 -- 重启生效 reboot -- 关闭防火墙 systemctl stop firewalld.service systemctl disable firewalld.service -- 配置hosts sudo tee -a /etc/hosts <<EOF 192.168.67.166 master 192.168.67.167 node1 192.168.67.168 node2 EOF
四、所有节点配置k8s的yum仓库
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=1 repo_gpgcheck=1 gpgkey=https://mirrors.aliyun.com/kubernetes/yum/doc/yum-key.gpg https://mirrors.aliyun.com/kubernetes/yum/doc/yum-key.gpg EOF -- 导入密钥 rpm --import https://mirrors.aliyun.com/kubernetes/yum/doc/yum-key.gpg rpm --import https://mirrors.aliyun.com/kubernetes/yum/doc/rpm-package-key.gpg
五、所有节点安装kubelet,kubeadm,kubelet
yum install -y kubelet-1.25.1-0 kubeadm-1.25.1-0 kubectl-1.25.1-0
六、master节点执行
-- 生成kubeadm配置模板 kubeadm config print init-defaults > kubeadm-config.yaml -- 编辑此配置文件 -- 修改advertiseAddress字段为本机地址 -- 检查criSocket地址是否为下图中所示 -- 检查kubernetesVersion,应与kubeadm version查询得到的版本一致 -- 将imageRepository字段改为registry.cn-hangzhou.aliyuncs.com/google_containers -- 将name字段改为当前master节点的名字 vi kubeadm-config.yaml
-- master节点执行`kubeadm config images list`查看所需下载镜像
-- 更改镜像地址,拉取每个镜像 systemctl start docker docker pull registry.cn-hangzhou.aliyuncs.com/google_containers/kube-apiserver:v1.25.16 docker pull registry.cn-hangzhou.aliyuncs.com/google_containers/kube-controller-manager:v1.25.16 docker pull registry.cn-hangzhou.aliyuncs.com/google_containers/kube-scheduler:v1.25.16 docker pull registry.cn-hangzhou.aliyuncs.com/google_containers/kube-proxy:v1.25.16 docker pull registry.cn-hangzhou.aliyuncs.com/google_containers/pause:3.8 docker pull registry.cn-hangzhou.aliyuncs.com/google_containers/etcd:3.5.4-0 docker pull registry.cn-hangzhou.aliyuncs.com/google_containers/coredns:v1.9.3
七、Containerd作为容器运行时(所有节点执行)
-- 所有节点配置Containerd所需模块,确保在系统启动时自动加载这两个内核模块 cat <<EOF | sudo tee /etc/modules-load.d/containerd.conf overlay br_netfilter EOF -- 所有节点加载模块 modprobe -- overlay modprobe -- br_netfilter -- 所有节点配置Containerd所需内核,为 Kubernetes 的 CRI 和相关网络功能提供支持 cat <<EOF | sudo tee /etc/sysctl.d/99-kubernetes-cri.conf net.bridge.bridge-nf-call-iptables = 1 net.ipv4.ip_forward = 1 net.bridge.bridge-nf-call-ip6tables = 1 EOF -- 所有节点加载内核 sysctl --system -- 所有节点配置Containerd的配置文件 mkdir -p /etc/containerd containerd config default | tee /etc/containerd/config.toml -- 将containerd.runtimes.runc.options中的SystemdCgroup字段修改为true -- tips:进入vi编辑器,按下Esc,底部栏输入 /SystemdCgroup 即可快速定位 -- 接下来将sandbox_image的Pause镜像修改为适合自己版本的地址,可参考第6步中Pause的地址 -- 修改完这两处后保存退出 vi /etc/containerd/config.toml -- 所有节点设置Containerd开机启动 systemctl daemon-reload systemctl enable --now containerd systemctl restart containerd -- 所有节点配置crictl客户端连接的Runtime位置 cat > /etc/crictl.yaml <<EOF runtime-endpoint: unix:///run/containerd/containerd.sock image-endpoint:unix:///run/containerd/containerd.sock timeout:10 debug:false EOF
八、初始化集群(master节点执行)
-- containerd作为runtime,设置开机自启 systemctl enable --now kubelet kubeadm init --config kubeadm-config.yaml -- 若初始化失败,需要检查各项配置是否正确,之后再次初始化,清理命令如下 kubeadm reset -f ; ipvsadm --clear ; rm -rf ~/.kube
初始化成功后如下所示:(注意框出的部分)
-- 在master节点执行上图框出的第一部分: mkdir -p $HOME/.kube sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config sudo chown $(id -u):$(id -g) $HOME/.kube/config -- 在其余node节点执行框出的第二部分: kubeadm join 192.168.67.166:6443 --token abcdef.0123456789abcdef \ --discovery-token-ca-cert-hash sha256:4f35a9073247215976789e99c5f274e8bac36b88b8264252daf60dfd85c16b4b
在master节点输入kubectl get node,显示如下
现在配置网络,以calico为例(https://docs.tigera.io/calico/3.25/getting-started/kubernetes/self-managed-onprem/onpremises)
-- 获取官方模板,在master节点执行 curl https://raw.githubusercontent.com/projectcalico/calico/v3.25.2/manifests/calico.yaml -O kubectl apply -f calico.yaml
等一小会,再次执行kubectl get node
至此集群搭建成功
参考资料:文章来源:https://www.toymoban.com/news/detail-760064.html
《云原生Kubernetes全栈架构师》-杜宽文章来源地址https://www.toymoban.com/news/detail-760064.html
到了这里,关于centos7搭建kubernetes-v1.25.1集群(Containerd作为运行时)的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!