通过kubeadm在aws上创建集群

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

具体步骤如下所示:

步骤一:在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节点开放如下端口,具体信息可查看官网详细信息

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

1.执行命令 sudo modprobe br_netfilter

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

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

cat <<EOF | sudo tee /etc/sysctl.d/k8s.conf
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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

taoli-qiao

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值