首页 > 其他分享 >使用kubeadm搭建多节点k8s集群(chrono《kubernetes入门实战课》笔记整理)

使用kubeadm搭建多节点k8s集群(chrono《kubernetes入门实战课》笔记整理)

时间:2022-12-27 12:00:11浏览次数:44  
标签:name kubernetes chrono -- etc docker kubeadm

 

通过使用minikube,做完了k8s的基础学习和练习,今天开始,使用kubeadm,来搭建更复杂更贴合实际工作的k8s集群。

 

【集群架构】

 

 

多节点集群,应该有大于等于2台node,实验中,先如上图,只有master和worker两个,先进行学习,后期也可以扩充。Master 节点需要运行 apiserver、etcd、scheduler、controller-manager 等组件,管理整个集群,所以对配置要求比较高,至少是 2 核 CPU、4GB 的内存。而 Worker 节点没有管理工作,只运行业务应用,所以配置可以低一些,为了节省资源我给它分配了 1 核 CPU 和 1GB 的内存。我的实验室环境是:

1、console:32vcpu,64g,500g硬盘

2、master:16vcpu、64g,200g硬盘

3、worker:16vcpu、64g、100g硬盘

 

 

【准备工作】--均在worker,master上都要做

1、修改worker,master节点的hostname。我这里就直接命名为master,worker了;

2、woker,master安装docker做为容器运行时(可参考之前docker安装的笔记);

3、在“/etc/docker/daemon.json”里把 cgroup 的驱动程序改成 systemd ,然后重启 Docker,具体命令如下:

 

 

 4、为了让 Kubernetes 能够检查、转发网络流量,需要修改 iptables 的配置,启用“br_netfilter”模块:

1)vi /etc/modules-load.d/k8s.conf,添加br_netfilter;

2)vi /etc/sysctl.d/k8s.conf,输入:

net.bridge.bridge-nf-call-ip6tables = 1

net.bridge.bridge-nf-call-iptables = 1

net.ipv4.ip_forward=1 # better than modify /etc/sysctl.conf

3)sysctl --system

5、修改“/etc/fstab”,关闭 Linux 的 swap 分区,提升 Kubernetes 的性能:

1)swapoff -a

2)sed -ri '/\sswap\s/s/^#?/#/' /etc/fstab

6、重启,做一下快照

 

【安装kubeadm】--worker,master都要做

1、修改软件源:vi /etc/yum.repos.d/kubernetes.repo

[kubernetes]
name=Kubernetes
baseurl=https://mirrors.cloud.tencent.com/kubernetes/yum/repos/kubernetes-el7-x86_64
enabled=1
gpgcheck=0
repo_gpgcheck=0

2、安装:yum install -y kubeadm-1.23.6 kubelet-1.23.6 kubectl-1.23.6

3、检查版本:

 4、锁定版本,避免更新:

1)yum install -y yum-plugin-versionlock

2)yum versionlock add docker-ce docker-ce-cli kubeadm kubelet kubectl

3)yum versionlock list 查看锁定列表

4)yum versionlock clear 清除锁定

5、下载组件的镜像。kubeadm 把 apiserver、etcd、scheduler 等组件都打包成了镜像,以容器的方式启动 Kubernetes,但这些镜像不是放在 Docker Hub 上,而是放在 Google 自己的镜像仓库网站 gcr.io,而它在国内的访问很困难,直接拉取镜像几乎是不可能的。写一个sh脚本,添加如下内容,就可以快速拉齐了:

repo=registry.aliyuncs.com/google_containers

for name in `kubeadm config images list --kubernetes-version v1.23.6`; do

src_name=${name#k8s.gcr.io/}
src_name=${src_name#coredns/}

docker pull $repo/$src_name

docker tag $repo/$src_name $name
docker rmi $repo/$src_name
done

【安装master

1、输入如下命令进行安装。kubeadm 的用法非常简单,只需要一个命令 kubeadm init 就可以把组件在 Master 节点上运行起来,不过它还有很多参数用来调整集群的配置,你可以用 -h 查看。这里说明一下几个重要参数:

  • --pod-network-cidr,设置集群里 Pod 的 IP 地址段;
  • --apiserver-advertise-address,设置 apiserver 的 IP 地址,这里一定一定要注意,需要为ifconfig下的一个真实ip,比如virbr0的地址192.168.122.1,否则会卡在[kubelet-check] Initial timeout of 40s passed.失败;
  • --kubernetes-version,指定 Kubernetes 的版本号。一定要用1.24以下的,因为1.24之后,k8s弃用了docker。

具体输入命令为: kubeadm init --apiserver-advertise-address=192.168.122.1 --kubernetes-version=v1.23.6  --image-repository registry.aliyuncs.com/google_containers --pod-network-cidr=10.244.0.0/16

 

 

 2、在提示成功后,还有一段信息,提示我们要继续操作:

 

 

 所以我们继续操作这三条命令:

1)mkdir -p $HOME/.kube
2)sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config
3)sudo chown $(id -u):$(id -g) $HOME/.kube/config

3、之后注意,最下面还有kubeadm join的提示。其他节点如果想加入集群,需要使用截图中的token和ca证书,所以一定要保存好:

kubeadm join 192.168.122.1:6443 --token irz6ps.8sfm9ze9xovo82ky \
--discovery-token-ca-cert-hash sha256:59cbcdf65c6f3bb6824b0549b22a6109254acda203431273fcd3b2899a4c9933

 

 

 4、现在可以使用kubectl get node命令,检查一下node的添加情况了。这里注意,状态是notready,这是由于还缺少网络插件,集群的内部网络还没有正常运作。

 

 

【安装Flannel 网络插件 

大幅度地方

标签:name,kubernetes,chrono,--,etc,docker,kubeadm
From: https://www.cnblogs.com/1234roro/p/16998127.html

相关文章