资讯中心

如何通过kubeadm在aws上快速创建集群?
2023-07-13 15:57:46
阅读()
来源:互联数据
摘要:     为了创建k8s集群,首先需要在公有云上申请2个EC2instance,这里演示的是在aws上申请instance,操作系统选择的ubuntu,创建过程中用默认配置即可,创建instance过程中的.pem文件需要保存好,后续登陆instance需

如何通过kubeadm在aws上创建集群?为了创建k8s集群,首先需要在公有云上申请2个EC2instance,这里演示的是在aws上申请instance,操作系统选择的ubuntu,创建过程中用默认配置即可,创建instance过程中的.pem文件需要保存好,后续登陆instance需要用到。


创建完成后,查看instance的公网IP地址,并通过公网IP地址和pem文件就可登陆到instance上了。登陆到instance的命令:ssh -i /Users/taoli/Downloads/qiaotl.pem ubuntu@xx.xx.xx.xx(这里输入instance的公网IP地址)。


目标:创建三个节点的集群,一个master节点,两个node节点。


kubeadm在aws上创建集群优惠链接https://www.hkt4.com/zt/2023-05-06/


具体步骤如下所示:


步骤一:在aws上申请3个instance,操作系统选择ubuntu


1.登陆aws上,申请3个EC2 instance,node节点join的时候是通过内部IP地址join的,所以在aws上创建EC2 instance请需绑定上Elastic IP,这样即便instance重启后,IP地址也不会变化。

2.执行 swapoff -a 命令关闭分区;执行sudo ufw disable 关闭防火墙

3.为了保障node节点能成功加入master节点,还需要对master和node节点开放如下端口,具体信息可查看官网详细信息。

通过kubeadm在aws上创建集群

步骤二:允许iptables检查桥接流量


1.执行命令 sudo modprobe br_netfilter

执行该命令后会自动化创建目录/proc/sys/net/bridge,并在该目录下自动创建一些文件,后续会用到。


2.为了让你的 Linux 节点上的 iptables 能够正确地查看桥接流量,执行如下命令,将 net.bridge.bridge-nf-call-iptables 设置为

cat <

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

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

EOF


步骤三:安装 kubeadm、kubelet 和 kubectl


1.更新 apt 包索引并安装使用 Kubernetes apt 仓库所需要的包

sudo apt-get update && sudo apt-get install -y apt-transport-https curl containerd

sudo apt-get update && sudo apt-get install -y apt-transport-https

sudo apt-get install curl

sudo apt-get install containerd


2.下载 Google Cloud 公开签名秘钥

sudo curl -fsSLo /usr/share/keyrings/kubernetes-archive-keyring.gpg https://packages.cloud.google.com/apt/doc/apt-key.gpg

sudo curl -fsSLo /usr/share/keyrings/kubernetes-archive-keyring.gpg https://packages.cloud.google.com/apt/doc/apt-key.gpg


3.添加 Kubernetes apt 仓库:

echo "deb [signed-by=/usr/share/keyrings/kubernetes-archive-keyring.gpg] https://apt.kubernetes.io/ kubernetes-xenial main" | sudo tee /etc/apt/sources.list.d/kubernetes.list


4.安装kubeadm、kubelet 和 kubectl并锁定版本

sudo apt-get update

sudo apt-get install -y kubelet kubeadm kubectl

sudo apt-mark hold kubelet kubeadm kubectl

以上三个步骤在master节点和node节点都需要执行。

安装完成后,选取一个节点作为master节点,另外两个节点作为node节点,master节点执行集群初始化命令

kubeadm init --apiserver-advertise-address=10.x.x.x --service-cidr=10.x.x.x/16 --pod-network-cidr=192.168.0.0/16


这里没有使用默认的kubeadm init,--apiserver-advertise-address可以填写master节点的内部ip地址,实际项目中是负载均衡的ip,--service-cidr与--apiserver-advertise-address不要在同一个网段,例如前面是10.0,那么后面这个就是10.1, 对于--pod-network-cidr

flannel 默认是10.244.0.0/16

calico 默认是192.168.0.0/16


需要注意的是:在kubeadm init过程中,如果选用下面的方式安装calico插件,那么kubeadm init的时候一定要设置 --pod-network-cidr=192.168.0.0/16这个参数,否则安装插件后,查看node状态也是NotReady状态。


执行上述命令过程中如下遇到如下错误,那么执行这两条命了,将指设置为1

echo 1 > /proc/sys/net/bridge/bridge-nf-call-iptables

echo 1 > /proc/sys/net/ipv4/ip_forward

kubeadm init命令执行完成后,会显示如下信息,按提示信息copy配置文件,kubeadm join命令需copy下来,这是后面node节点加入的命令。


接下来在master节点安装网络插件,这里选择calico网络插件,具体网络插件安装详细信息可查看这里

kubectl create -f https://docs.projectcalico.org/manifests/tigera-operator.yaml

kubectl create -f https://docs.projectcalico.org/manifests/custom-resources.yaml


插件安装完成后,就可以在node节点上执行copy出来的kubeadm join命令,注意所有node节点也需要执行步骤一、步骤二、步骤三。


node节点join成功后,可在master节点执行kubectl get node命令,查看master和node节点信息,如果都是ready状态,如下图所示,那么说明整个集群安装成功。


如果以后想重启集群,那么在master和node节点上执行kubeadm reset命令,然后在master节点上至下kubeadm init命令,node节点上重新只想kubead join命令即可。


如果遇到这个错误可从如下几个方面进行排查:connection-to-the-server-host-6443-was-refused


1.执行命令查看6443是否被正常监听

netstat -pnlt | grep 6443


2.查看kubelet服务是否处于运行状态

systemctl status kubelet


3.查看containerd服务是否处于运行状态

systemctl status containerd


通过kubeadm在aws上创建集群的步骤就讲到这,您可以根据自己的需求和预算,在互联数据低价选择适合的EC2实例类型和配置,并根据实际使用情况进行计费。AWS的计费方式主要有按需计费、预留实例和按使用量计费等选项。亚马逊VPS(Amazon EC2)主要用于创建和管理虚拟服务器,它提供弹性的计算能力,允许您在云端运行各种应用程序和服务。


0

上一篇:阿里云服务器ECS如何过户到其他账号?
下一篇:如何让AWS人脸识别服务器更安全?
HKT4为您的网站提供全球IDC资源
立即免费测试