想必很多初学者都被Kubernetes的各种概念绕晕过,今天我们扔掉理论,直接上手,尝试用5分钟构建一套简单的Kubernetes集群来玩。
用到的相关技术栈如下:
- K3s
- Helm
- Traefik
- echo-server
服务器准备
假设已经准备好了两台 Ubuntu Server 18.04 虚拟机,分别为Server1和Agent1,最低配置需求为1核CPU,1GB内存。
K3s 安装
K3s是Rancher出品的轻量级Kubernetes实现,易于配置和使用,非常适合我们练习。
服务端安装
进入Server1服务器终端,以此运行以下命令:
# 安装K3s服务
curl -sfL https://get.k3s.io | sh -
# 配置文件添加符号链接,方便其他项目访问
ln -s /etc/rancher/k3s/k3s.yaml ~/.kube/config
# 安装完之后,查看节点状态
kubectl get node
# 获取Token,用于下一步Agent服务配置
cat /var/lib/rancher/k3s/server/node-token
Agent端安装
进入Agent1服务器终端,以此运行以下命令:
# 安装
curl -sfL https://get.k3s.io | sh -
# 配置运行Agent,其中server1-ip替换成实际A服务器的实际IP,server1-token替换成上一步获取到的A服务器的Token
sudo k3s agent --server https://server1-ip:6443 --token server1-token
至此,完成了简单的集群的配置,可以再次在Server1服务器上查看节点状态,确保顺利。
kubectl get node
Helm 安装
Helm是Kubernetes的包管理方案。通过维护Helm Chart模板加values.yaml文件,,把Kubernetes的复杂配置封装起来,让用户可以专注实际需求,能够快速部署服务。
Helm 3是最新版本,相比之前版本,安装和使用也更加简单了。
再次进入Server1终端:
# 安装Helm
curl https://raw.githubusercontent.com/helm/helm/master/scripts/get-helm-3 | bash
# 添加若干 Repo
helm repo add stable https://kubernetes-charts.storage.googleapis.com/
# 用于接下来的Echo-Server
helm repo add ealenn https://ealenn.github.io/charts
# 更新
helm repo update
echo-server 安装
最后一步,我们来安装一个简单的服务,用于验证我们的集群,这里选择的是echo-server,它能够返回你的Request的全部内容,在开发时可以用于调试请求。
创建echo-server-values.yaml文件,内容如下:
其中的<your-domain-name.com>部分,替换成实际的域名
replicaCount: 1
application:
enable:
environment: false
ingress:
enabled: true
hosts:
- host: echo.test-k8s.com
paths:
- /
依然进入Server1终端:
helm install echo-server ealenn/echo-server -f echo-server-values.yaml
访问
因为我们没有实际绑定域名,所以需要通过修改本地电脑上的Hosts文件来访问,添加如下内容:
其中<server-1-ip>替换成Server1的实际IP
<server-1-ip> echo.test-k8s.com
然后就可以在浏览器中访问:
http://echo.test-k8s.com
[可选] 配置HTTPS服务
Traefik是一个现代的HTTP反向代理工具,更加适合容器内使用,配置也更友好,且集成了Let's Encrypt,可以自动申请免费的TLS证书。
K3s默认已经集成了Traefik,我们来更新到最新版,顺便修改一些配置,以用于生成TLS证书。
在Server1服务器中,创建traefik-values.yaml文件,内容如下:
replicas: 1
rbac:
enabled: true
ssl:
enabled: true
acme:
enabled: true
staging: false
email: your-email@example.com
然后进入Server1终端:
# 升级traefik
helm upgrade traefik stable/traefik -f traefik-values.yaml -n kube-system