本实验手册旨在帮助学员完成K3s微服务系统的搭建和使用,以帮助学员在实践中深入理解微服务的概念。
本次课堂实验使用的是操作系统为: Ubuntu 18.04 Server版。 K3s的版本为当前官方最新版(v1.17.0)。
安装K3s
与Kubernets (K8s) 相比,K3s的安装简单了许多。
按照国籍惯例,安装之前先更新操作系统,执行:
1 | sudo apt-get update |
更新完成后,执行以下命令安装K3s
1 | curl -sfL https://get.k3s.io | sh - |
以上命令是官方文档中的命令,但在我的网络环境中执行该命令有些问题,因此我改为执行:
1 | curl --insecure -L https://get.k3s.io | sh - |
执行以后,系统显示:
1 | [sudo] password for stu: |
可以看到,该命令下载了k3s的最新版本,将其安装在/usr/local/bin目录,并构建了后台运行的服务 k3s.service, 最后完成了服务的启动。
安装完成后,可以通过命令:
1 | ps -ax | grep k3s |
看到在系统中运行了很多相关的进程:
1 | 2121 ? Ssl 0:20 /usr/local/bin/k3s server |
验证安装
为了验证安装结果,可以执行一些命令,查看当前启动的k3s集群的情况。
执行:
1 | kubectl get pods |
系统反馈:
1 | NAME STATUS ROLES AGE VERSION |
如果系统反馈以下错误信息:
1 | WARN[2020-01-24T02:49:04.982837381Z] Unable to read /etc/rancher/k3s/k3s.yaml, please start server with --write-kubeconfig-mode to modify kube config permissions |
说明权限不够,可以采用以下两种方式解决:
- 使用 sudo 运行命令
1 | sudo kubectl get pods |
- 改变 k3s.yaml 的文件属性,使普通用户访问该文件
1 | sudo chmod -R 777 /etc/rancher/k3s/k3s.yaml |
发布一个简单的应用
在集群安装、配置领域, 发布一个 nginx 服务,几乎是最常见的做法,就像在编程领域编写一个 hello world 应用一样。
下面,我们向刚才构建的k3s集群发布一个 nginx 服务,执行:
1 | kubectl create deployment nginx --image=nginx |
系统显示:
1 | deployment.apps/nginx created |
执行 get pod, 查看是否建立了相应的 pod,
1 | kubectl get pods |
系统显示
1 | NAME READY STATUS RESTARTS AGE |
为了让外部可以访问nginx,我们构建一个k3s中的 nodeport 服务,执行:
1 | kubectl create service nodeport nginx --tcp=80:80 |
系统显示
1 | service/nginx created |
执行 get svc 命令,可以查看建立好的 k3s 服务:
1 | kubectl get svc |
系统显示:
1 | NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE |
可以看到,系统建立了一个 nodeport 服务,并把内部端口 30424 绑定道内部端口 80。 接下来,我们就可以通过 30424 端口访问 nginx 了。执行
1 | curl http://localhost:30424 |
可以得到:
1 |
|
这正是 nginx 的默认输出。 说明集群安装正常,应用发布也正常。
也可以再执行以下命令,获取更多的集群的信息:
1 | kucectl get all |
系统显示:
1 | NAME READY STATUS RESTARTS AGE |
下一步
在 下一篇文章,我们将练习在集群中加入一个工作节点。