布衣k8s体会

一、前言

咱们在作业、学习进程中触摸到k8s,想要自己进行装备的话又需求很高的服务器本钱,而且装备起来也很麻烦。咱们的学习时刻大多是碎片化的,大多是下课后、下班后,买几台服务器却只有晚上才能用,钱花的实在是不爽。

本文展现运用kubesphere快速的建立一个k8s单主集群,并且删去节点做到开释服务器而不影响集群运行。等到需求学习时增加节点。花最少的钱,学最多的k8s。

推荐咱们有一台稳定的机器,我自身请求了一个腾讯云的2核4G的轻量服务器,作为我的主节点。其他机器我都运用可以随时开释,随时请求的按量付费或许竞价实例服务器(价格十分美丽)。

假如咱们也不想花钱买一台长时刻占有的服务器。那么主节点运用按量付费或许竞价实例服务器也是可以的。当咱们学习结束后,直接开释掉,只需求花费几毛钱。请求服务器的步骤这儿就不展开说了。

本篇文章共运用3台服务器

  • 2核4G(新用户100多块钱买了一年)
  • 2核2G竞价实例(0.04块钱一小时)
  • 4核4G竞价实例(0.12块钱一小时)

咱们在进行装备之前,要保证每台服务器之间ssh拜访,内网互通最好。

其次主节点的6443端口要被从节点能拜访到。

二、装备集群

为了使杂乱的k8s集群装置简单化,并且方便办理,这儿运用kubesphere进行装置。

这一步骤中运用三台中的两台来装备集群

  • 2核4G(新用户100多块钱买了一年),master
  • 2核2G竞价实例(0.04块钱一小时),node1

1.下载 KubeKey

在主节点履行

export KKZONE=cn
curl -sfL https://get-kk.kubesphere.io | VERSION=v3.0.7 sh -

下载结束后会呈现文件kk

平民k8s体验-k8s集群搭建

赋予kk权限

chmod +x kk

假如失利,可以重试几次。这步是到github上下载文件,有些服务器可能拜访github受限,咱们可以在自己的电脑上下载后,上传到服务器。地址:github.com/kubesphere/…

2.运用命令生成装备文件

在主节点履行

./kk create config --with-kubernetes v1.23.10 --with-kubesphere v3.3.2 -f config.yaml

假如咱们想运用其他版别,指定其他版别即可

在生成的装备文件中,咱们只需求重视下面这一段,假如不装备多主,controlPlaneEndpoint也是不必关怀的

平民k8s体验-k8s集群搭建

所以咱们真实需求修正的就是红框里的内容,把hosts中的修正成咱们的节点,然后在roleGroups中为节点分配人物。

平民k8s体验-k8s集群搭建

这儿我把master也当作作业节点运用

运用密钥无暗码登录的实例如下:

hosts:
  - {name: master, address: 192.168.0.2, internalAddress: 192.168.0.2, privateKeyPath: "~/.ssh/id_rsa"}

3.创立集群

在主节点履行

./kk create cluster -f config.yaml

发现提示咱们缺少必要的依靠项

平民k8s体验-k8s集群搭建

在各个节点装置一下

yum -y install conntrack-tools
​
yum -y install socat
​
yum -y install ipvsadm

再次履行./kk create cluster -f config.yaml发现可以进行装置了

装置进程可能需求 10 分钟左右

等呈现

平民k8s体验-k8s集群搭建

就代表装置完结了。

装置完结后运用kubectl get node检查,可以看到集群中有两个节点现已安排妥当了

平民k8s体验-k8s集群搭建

现在,可以通过 <NodeIP:30880 运用默许帐户和暗码 (admin/P@88w0rd) 拜访 KubeSphere 的 Web 控制台。(保证你的30880可以拜访到)

平民k8s体验-k8s集群搭建

参考:kubesphere.io/zh/docs/v3.…

咱们假如在这步遇到其他问题,可以参考官网装备。

三、增加节点

用k8s办理的运用越来越多后,原来0.04元每小时的机器就满意不了我的需求了。现在急需一个更强壮的机器到集群中作业。

第三台机器出厂了:4核4G竞价实例(0.12块钱一小时)

下面把这台1毛钱一小时的机器加入到咱们的集群里

1.修正config.yaml文件

在config.yaml中加入新服务器的地址

平民k8s体验-k8s集群搭建

node2为我增加的新机器

2.为新机器装置k8s所需求的依靠

yum -y install conntrack-tools
​
yum -y install socat
​
yum -y install ipvsadm

3.集群增加新节点

./kk add nodes -f config.yaml

平民k8s体验-k8s集群搭建

运用kubectl get node验证

平民k8s体验-k8s集群搭建

可以看到node2现已加入成功了

四、删去节点

当咱们学习完结、作业结束,或许当咱们觉得服务器的价格让咱们不堪重负的时候,那咱们就该开释按量付费或许竞价实例的服务器了。

我在这儿挑选删去4核4G的服务器,即node2

./kk delete node node2 -f config.yaml

平民k8s体验-k8s集群搭建

在删去进程中会把node2节点上的pod驱赶,也就是布置在node2节点上的pod,会重新布置到其他节点。

平民k8s体验-k8s集群搭建

可以看到现已成功了

当咱们履行删去节点时,假如prometheus-k8s在被删去的节点上,会告诉咱们驱除失利。这是因为默许装备了PodDisruptionBudget,这是为了防止驱赶时pod不可用数量太多,影响正常服务。

运用kubectl get poddisruptionbudget -Akubectl get pdb -A检查

平民k8s体验-k8s集群搭建
看到MAX UNAVAILABLE为N/A,ALLOWED DISRUPTIONS为0,即不答应驱赶,这就是咱们驱赶失利的原因。

pdb中有maxUnavailableminAvailable,他们两个是对立的两个值,代表最大不可用与最大可用。

解决方法:

1.删去该pdb

2.修正pdb装备使其可以答应驱赶

kubectl edit pdb prometheus-k8s -n kubesphere-monitoring-system

咱们修正minAvailable: 1为maxUnavailable:1

平民k8s体验-k8s集群搭建

保存再次检查

平民k8s体验-k8s集群搭建

发现现已答应驱赶了

五、试验一下

创立一个replicas为3的deployment,容器为nginx

apiVersion: apps/v1
kind: Deployment
metadata:
  name: nginx-deployment
  labels:
   app: nginx
spec:
  replicas: 3
  selector:
   matchLabels:
    app: nginx
  template:
   metadata:
    labels:
     app: nginx
   spec:
    containers:
    - name: nginx
     image: nginx:1.14.2
     ports:
     - containerPort: 80

平民k8s体验-k8s集群搭建

可以看到现在我的nginx的pod中的两个在node2节点上,一个在master节点上(因为我把master当作了作业节点)

现在我删去node2节点,那么布置在node2上的nginx应该被驱赶转而布置到其他节点

履行

./kk delete node node2 -f config.yaml

删去node2节点

成功后检查nginx

平民k8s体验-k8s集群搭建

发现nginx现已布置到node1啦

六、总结

这篇文章的初衷是为了让咱们少花时刻在k8s的布置上,少花钱在k8s的服务器上。把多余的精力放在k8s内的学习上。或是让没触摸过k8s想运用的同学们快速的布置一个k8s集群。

一起咱们也应该知道,开释服务器一起,服务器的磁盘也被开释了,磁盘上的数据也就丢失了。咱们在装备存储时应该考虑到这一点。