如何低成本的搭建一个真实的Kubernetes集群

引言:kubernetes作为当前事实上的容器编排标准,其势头可谓是如日中天,然而,kubernetes一直以来被人诟病的就是其复杂的搭建成本,作为个人,除了用miniKube等工具在个人电脑上模拟一个集群,或者通过虚拟机模拟一个集群,但终归,真实集群和虚拟集群是不同的。我一直在想,如今云服务器已经十分成熟,难道就不能作为搭建kubernetes平台的基础设施吗?

一、架构规划

其实对于现在的云服务来说,各家竞争激烈,价格也打得比较低,但是存在一个问题:为了吸引新用户,云服务厂商一般都对产品首单、新用户首次下单时进行特别大的折扣,入坑后才发现,续费或者购买新服务器动辄上千元💰!实在不是我等普通程序员愿意支出的一笔消费😭。好在我了解到,各云厂商现在在主推一种新的云服务器(可以称之为云服务器的阉割版),比如腾讯云叫“轻量应用服务器”,阿里云肯定也有对应的产品。这种阉割过的服务器,价格实惠,正适合购买来做个人集群。
那么假如我们是新用户(新用户其实很简单,以前注册过的,换个手机号注册就是了,反正一个身份证一般都能绑多个账号,各个云厂商都差不多政策的。),我们以首单优惠买个阉割版服务器,再通过首单优惠买个云服务器,有两个服务器不就能搭一个真正的Kubernetes集群吗?😏
为了方便选择,我也做了一个价格表,目前阿里云、腾讯云都在搞活动,正是入手的好时机:

云厂商轻量服务器最低配置云服务器最低配置活动链接
腾讯云2核2G 200/3年2核2G 298/3年 点击查看
阿里云2核2G 99/年1核2G 261/3年点击查看
华为云-1核2G 158 /1年 (新用户可买3台)点击查看

以上这个表格应该对比的很清晰了,都是各厂商活动页首推的配置,应该是最便宜的了。个人感觉华为云最不实惠,不推荐。
腾讯云别看总价是498,点击这个连接领取新人优惠券,我算下来,差不多373元拿下两个云服务器,3年呐,!简直是买不了吃亏,买不了上当,感觉厂商都要亏本!
贴上我以前做活动时买的,都是1核2G的配置,轻量买了1年(我那时候怕轻量和云服务器不可以在kubernetes集群中互联互通),云服务器买了3年,都要269元,这样一算,2核2G两个3年才373,我简直血亏😭。

image.png

回归主题!当我们以低成本拿到两个服务器后,就可以规划准备搭建集群了,这里我先放个架构图:

截屏2022-02-24 下午7.19.17.png

假设 Node1 是我们买的CVM云服务器, Light Node1 是我们买的轻量应用服务器,它们位于不同的网段,我们需要做好网络规划,让两个网段能互联互通即可。

搭建步骤

1. 各服务器上安装docker、kubelet kubectl kubeadm

要搭建kubernetes集群,首先集群中的每个节点都需要安装好以上这些软件,docker怎么安装网络上教程一大把,我这里就不多介绍了,只是要注意修改/etc/docker/daemon.json的配置:

{
    "registry-mirrors": [
        "https://mirror.ccs.tencentyun.com"
    ],
    "bip": "10.47.0.1/16",
    "exec-opts": ["native.cgroupdriver=systemd"]
}

这里我修改了docker的网段地址,把cgroupdriver改成了systemd(kubernetes要求)。修改docker网段地址是因为:我们要保证节点网络、docker内部网络、kubernetes网络地址CIDR段不要冲突,冲突不好搞的,在规划时就要区别开。这里你要根据你的节点的实际网络地址,配置一个网段,不要从我的示例json中直接复制。

这里给出kubelet kubectl kubeadm的安装方法:

 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/rpm-package-key.gpg
 EOF
 setenforce 0
 yum install -y kubelet-1.22.0 kubeadm-1.22.0 kubectl-1.22.0

yum安装好了以后,systemctl enable kubelet && systemctl start kubelet命令设置成开机启动即可。
同时,我们把两个云服务器的hostname设置成k8s-masterk8s-node1

2. 保证CVM和轻量应用服务器可以互联互通

参考腾讯云文档
配置完成后,CVM和轻量应用服务器应该就可以相互ping通。

3. 使用 kubeadm 安装集群的master节点
kubeadm init \ 
--apiserver-advertise-address=172.17.0.3 \
--image-repository registry.aliyuncs.com/google_containers \ 
--kubernetes-version v1.22.0 \ 
--service-cidr=10.96.0.0/12 \ 
--pod-network-cidr=10.244.0.0/16 \
--ignore-preflight-errors=all

这里要感谢阿里云,他们提供的国内镜像地址,可以让我们快速的下载下来kubernetes所需要的镜像。
可以看到,此命令中需要提供kubernetes的service网段和pod网段,也需要注意不要冲突。

4. 安装node节点

安装node节点就非常简单了,当master节点成功安装完毕,命令应该会打印出如何安装node节点的示例,复制下来,在k8s-node1上运行就行了。

5. 开启防火墙的端口

最后,我们需要在云服务器和轻量应用服务器的防火墙中,配置端口联通规则:
在k8s-master上放行:TCP:6443,10250,10251,10252
在k8s-node1 上放行:TCP: 10250

6. 其它工作

最后可能需要配置Flannel、移除master节点的污点等。这里就不再过多介绍,以后有时间,可以再写些博客详细分享一下。目前,我也是学习者的状态。

三、参考资料

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
搭建 Kubernetes 集群可以分为以下几个步骤: 1. 确保所有节点上安装了 Docker 和 kubelet,并启动服务。 2. 安装 kubeadm、kubectl 和 kubelet 工具。 3. 在主节点上使用 kubeadm 初始化 Kubernetes 集群。 4. 加入其他节点到集群中。 5. 部署网络插件。 具体步骤如下: 1. 确保所有节点上安装了 Docker 和 kubelet,并启动服务。 在每个节点上执行以下命令安装依赖项: ``` sudo apt-get update sudo apt-get install -y apt-transport-https curl ``` 安装 Docker: ``` curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add - sudo add-apt-repository "deb [arch=amd64] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable" sudo apt-get update sudo apt-get install -y docker-ce ``` 启动 Docker 服务: ``` sudo systemctl enable docker sudo systemctl start docker ``` 安装 kubelet: ``` sudo apt-get update && sudo apt-get install -y apt-transport-https curl curl -s https://packages.cloud.google.com/apt/doc/apt-key.gpg | sudo apt-key add - cat <<EOF | sudo tee /etc/apt/sources.list.d/kubernetes.list deb https://apt.kubernetes.io/ kubernetes-xenial main EOF sudo apt-get update sudo apt-get install -y kubelet ``` 启动 kubelet 服务: ``` sudo systemctl enable kubelet sudo systemctl start kubelet ``` 2. 安装 kubeadm、kubectl 和 kubelet 工具。 在每个节点上安装 kubeadm、kubectl 和 kubelet 工具: ``` sudo apt-get update && sudo apt-get install -y apt-transport-https curl curl -s https://packages.cloud.google.com/apt/doc/apt-key.gpg | sudo apt-key add - cat <<EOF | sudo tee /etc/apt/sources.list.d/kubernetes.list deb https://apt.kubernetes.io/ kubernetes-xenial main EOF sudo apt-get update sudo apt-get install -y kubelet kubeadm kubectl ``` 3. 在主节点上使用 kubeadm 初始化 Kubernetes 集群。 在主节点上执行以下命令初始化 Kubernetes 集群: ``` sudo kubeadm init --pod-network-cidr=10.244.0.0/16 ``` 初始化完成后,会输出一个类似这样的提示: ``` kubeadm join 192.168.0.100:6443 --token abcdef.0123456789abcdef \ --discovery-token-ca-cert-hash sha256:0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef ``` 将这个命令保存下来,后面加入其他节点时需要使用。 4. 加入其他节点到集群中。 在每个节点上执行第一步中的命令,然后使用第三步中得到的加入命令加入到集群中: ``` sudo kubeadm join 192.168.0.100:6443 --token abcdef.0123456789abcdef \ --discovery-token-ca-cert-hash sha256:0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef ``` 5. 部署网络插件。 Kubernetes 集群需要网络插件才能实现节点之间的通信。这里以 Calico 为例,执行以下命令部署 Calico 网络插件: ``` kubectl apply -f https://docs.projectcalico.org/v3.14/manifests/calico.yaml ``` 部署完成后,可以使用以下命令查看节点状态: ``` kubectl get nodes ``` 如果所有节点都处于 Ready 状态,那么 Kubernetes 集群就搭建完成了。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值