Kubernetes的正确起步是一个挑战。当你想快速完成的时候,你可以创建一个测试或开发环境,或者只是熟悉它的工作原理。你可能没有时间在每次需要时启动多节点集群。在这种情况下,你可以求助于KubeKey,它使得出于开发/测试目的启动Kubernetes部署变得非常容易。
但是,不要认为以这种方式使用KubeKey是大规模部署应用程序和服务的一种手段。笔者将展示的主要是用于测试和开发目的,不要将其视为面向生产的应用程序或服务的解决方案。
为了实现这一点,你需要一个运行中的Ubuntu Server 20.04(或更新版本)实例和一个具有sudo权限的用户。你可能还想让Ubuntu服务器实例有一个完整的桌面环境(这样你就可以部署Kubernetes仪表板了——笔者也会告诉你怎么做)。
安装Docker
需要做的第一件事是安装Docker。我们不再安装标准存储库中的Docker版本,而是更进一步,安装Docker的社区版。
首先,安装必要的依赖关系。登录服务器并发出以下命令:
sudo apt-get install apt-transport-https ca-certificates curl software-properties-common -y
接下来,使用以下命令添加Docker GPG官方密钥:
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add -
使用以下命令添加Docker存储库:
sudo add-apt-repository "deb [arch=amd64] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable"
更新apt并使用以下内容安装Docker:
sudo apt-get update
sudo apt-get install docker-ce -y
通过以下方式启动并启用Docker服务:
sudo systemctl enable --now docker
使用以下命令将用户添加到docker组:
sudo usermod -aG docker $USER
确保更改生效:
newgrp docker
安装KubeKey
在下载KubeKey之前,还有另一个依赖关系需要处理,可以通过以下命令完成:
sudo apt-get install conntrack -y
下载KubeKey二进制文件:
curl -sfL https://get-kk.kubesphere.io | VERSION=v1.2.1 sh -
下载文件后,使用以下命令使其可执行:
chmod u+x kk
让我们通过将文件复制到/user/local/bin目录,使kk可执行,从而可以从任何目录运行。通过以下方式实现:
sudo cp kk /usr/local/bin
通过以下方式验证安装:
kk -h
如果看到打印出来的帮助信息,那么kk可执行文件就可以运行了。
部署集群
现在,我们可以通过以下方式部署集群:
sudo kk create cluster
不幸的是,你必须使用sudo权限来运行这个。这就是为什么笔者认为KubeKey的最佳用例仅用于开发/测试/教育目的的原因之一。
这个过程需要一些时间,因为它必须下载大量二进制文件和其他位才能工作。完成后,你将返回终端窗口,并准备继续。
现在,你应该能够通过以下命令验证kubectl是否已安装:
kubectl --help
这一次,你应该看到kubectl命令的帮助信息。
部署Kubernetes仪表板
让我们更进一步。这不是必需的,但它将有助于让事情变得更容易。使用以下命令部署Kubernetes仪表板:
sudo kubectl apply -f https://raw.githubusercontent.com/kubernetes/dashboard/v2.0.0/aio/deploy/recommended.yaml
部署仪表板后,你需要定位集群的IP地址,这可以通过以下命令完成:
sudo kubectl get svc -n kubernetes-dashboard
你应该会看到kubernetes仪表板与CLUSTER-IP地址和端口号一起以以下形式列出:
kubernetes-dashboard NodePort 10.233.33.37 <none> 443:31693/TCP 57m
你可能希望通过NodePort而不是ClusterIP公开仪表板。这样做,发出命令:
sudo kubectl edit svc kubernetes-dashboard -o yaml -n kubernetes-dashboard
这将在vi编辑器中打开配置文件。你必须先输入i才能进入互动模式。然后向下滚动,直到看到:
type: ClusterIP
将它改为:
type: NodePort
点击escape退出交互模式,然后输入:wq保存并关闭文件。接下来,必须按如下方式运行kubectl proxy命令:
sudo kubectl proxy
在代理运行时,打开一个web浏览器,将其指向sudo kubectl get svc-n kubernetes dashboard命令结果中列出的IP地址和端口号。你将看到登录屏幕,需要一个访问令牌。要检索该令牌,请发出以下命令:
sudo kubectl -n kubernetes-dashboard describe secret $(kubectl -n kubernetes-dashboard get secret | grep admin-user | awk '{print $1}')
这将打印出一长串随机字符。将该字符串复制并粘贴到token字段中,然后你就可以访问Kubernetes仪表板。
这就是如何快速启动Kubernetes开发环境,而不必经历部署整个集群的所有麻烦。这还没有生产就绪,但这是一个很好的方式来跟上Kubernetes的速度,甚至为平台开发。