龙空技术网

基于老旧MacBook废物利用打造7*24在线的个人Kubernetes集群

虫虫安全 1622

前言:

目前同学们对“kubernetesetcddns”大体比较注意,朋友们都需要了解一些“kubernetesetcddns”的相关资讯。那么小编也在网摘上收集了一些有关“kubernetesetcddns””的相关资讯,希望我们能喜欢,姐妹们一起来了解一下吧!

现在云和容器快速发展时代,Kubernetes(k8s)脱颖而出,更是成为了事实上大规模管理容器编排的标准。然而,基于云即使是运行最小的集群也要大费周章,而且需要很多成本,对于迫切想入门熟悉Kubernetes的个人来说,进入的门槛可不小。实际上也有很多折衷的方法让我们简单入门,之前虫虫文章介绍过基于kind的一键K8s环境,本文我们在介绍一个老外用一个老旧MacBook Air安装Minikube,打造一个724在线的Kubernetes集群实验环境的过程,希望能大家学习和启发。

概述

Kubernetes有很多种本地化方案,包括kind,Minikube,k3s,Docker Desktop和Microk8s等。为了保持集群常在线,以保持一些运行时间相关的(cronjobs)或事件驱动的(异步数据处理)工作负载。

通过一个闲置的2012 年的MacBook Air,其CPU支持必要的基于软件的虚拟化,可以安装运行Kubernetes的Linux虚拟机。

功率/成本

因为目标是实现一种低成本的解决方案,所以需要考虑笔记本全天候运行需要耗费的电量。根据苹果公司的规格表,估计该系统(显示屏关闭且工作量相对较小)平均将消耗约10W功率。

定价估算:

10 x 1/1000 x 24 x 30.4 x 0.5 (¥/kWh)

=3.65 ¥/month

安装部署防止机器系统休眠

由于MacBook Air会自动休眠,为了保持机器一直在线需要禁止睡眠。

可以通过电源管理设置(pmset)命令行禁用睡眠。在mac可以通过以下命令使睡眠时间无限长,并在没有显示器连接时防止睡眠:

sudo pmset -a sleep 0;

sudo pmset -a disablesleep 1

在服务器系统上安装Minikube

按照Minikube安装说明,使用VitualBox虚拟机管理程序+ vm-driver在MacBook Air上安装Minikube:

要检查macOS是否支持虚拟化,请在终端上运行以下命令。

sysctl -a | grep -E --color 'machdep.cpu.features|VMX'

linux下为:

grep -E --color 'vmx|svm' /proc/cpuinfo

如果在VMX输出中看到(应该是彩色的),则说明主机已启用VT-x功能。

在macOS上安装Minikube的最简单方法是使用Homebrew:

brew install minikube

还可以通过下载二进制包的方式安装:

curl -Lo minikube  \&& chmod +x minikube

再移动Minikube执行路径即可。

sudo mv minikube /usr/local/bin

Linux下安装也可以通过包管理器安装,比如

yum install minikube

或者下载二进制包

curl -Lo minikube  \&& chmod +x minikube

然后添加执行路径即可。

sudo install minikube /usr/local/bin/
在客户端系统上安装kubectl

在主要开发主机上安装kubectl。但是可以按照Kubectl安装说明安装在计划从中访问群集的系统上。

通过端口转发规则从服务器系统添加到Minikube VM

为了使kubectl命令进入Minikube集群,必须在VM配置中设置端口转发规则,将请求转发到端口8443。该转发通过VirtualBox GUI完成:

客户端上配置.kube/config指向服务器

在minikube start服务器系统上执行命令时,会在kubectl上下文添加到kubectl配置文件 ~/.kube/config:

apiVersion: v1clusters:- cluster:certificate-authority: <PATH-TO-CONFIG>/.minikube/ca.crtserver: : minikubecontexts:- context:cluster: minikubeuser: minikubename: minikubecurrent-context: "minikube"kind: Configpreferences: {}users:- name: minikubeuser:client-certificate: <PATH-TO-CONFIG>/.minikube/client.crtclient-key: <PATH-TO-CONFIG>/.minikube/client.key

需要复制到客户端计算机上(以及client.crt和client.key文件)。将这些文件复制到<PATH-TO-CONFIG>/.minikube-macbook-air客户端系统上,并更新kubectl配置,如下所示:

apiVersion: v1clusters:- cluster:insecure-skip-tls-verify: trueserver: ;INTERNAL-NETWORK-IP>:51928name: minikube-macbook-aircontexts:- context:cluster: minikube-macbook-airuser: minikube-macbook-airname: minikube-macbook-aircurrent-context: "minikube-macbook-air"kind: Configpreferences: {}users:- name: minikube-macbook-airuser:client-certificate: <PATH-TO-CONFIG>/.minikube-macbook-air/client.crtclient-key: <PATH-TO-CONFIG>/.minikube-macbook-air/client.key

该配置既可以直接加入到主.kube/config文件中,也可以存储为单独的配置,并通过设置KUBECONFIG环境变量来使用

注意:insecure-skip-tls-verify:true之所以使用,是因为Minikube设置的证书颁发机构未配置为以这种方式接受来自另一个系统的传入请求。

使用DDNS +路由器端口转发访问本地网络外部

至此,我们已经能够连接到群集,但是需要当客户端和服务器在同一内网时才可以。为了从外网可以连接,还需要配置另外两项:

使用dynu.com(国内可以使用花生壳)设置免费的动态DNS 。完成此操作后,替换<INTERNAL-NETWORK-IP>为<DDNS-DOMAIN-NAME>

将路由器配置为将端口上的传入请求转发51928到MacBook Air,并设置计算机MAC地址保留IP地址,以确保其不变。

这样就能从外部网络成功连接到集群。

结论

通过使用非常便宜的成本,大概一每月包烟的电费(宽带成本未计)。就打造了一个始终在线的Kubernetes集群实验环境(具有单个2 vCPU + 2 GB内存节点),可以进行实验。其实上现在树莓派4B配置达到了双CPU+4G可能效果会更好,有条件的小伙伴可以试试。

标签: #kubernetesetcddns