1. 安装
1.1. 环境类型
k8s 的安装可以分为三种:
1.1.1. 学习环境
在学习环境中,主要使用 Minikube。
Minikube 是一种可以让你在本地轻松运行 Kubernetes 的工具。 Minikube 在笔记本电脑上的虚拟机(VM)中运行单节点 Kubernetes 集群, 供那些希望尝试 Kubernetes 或进行日常开发的用户使用。
1.1.1.1. 安装 Minikube
Minikube 的安装参考:安装 Minikube,主要流程大致如下:
- 检查环境
- 安装
kubectl
,参考:安装 kubectl- 启用 kubectl 的 shell 自动补全功能,参考:kubectl shell 自动补全
- 安装
Hypervisor
,安装 VirtualBox - 安装
Minikube
Mac 的安装过程大致如下:
1 | ## 检查 macOS 是否支持虚拟化技术 |
1.1.1.2. 启动 Minikube
1 | # 由于国内无法直接连接 k8s.gcr.io,推荐使用阿里云镜像仓库, |
1.1.1.3. 部署简单服务
1.1.1.3.1. 编写一个简单 Web 服务
一个简单的 Web 服务,输出相应的主机名称。代码如下:
1 | # app.js |
1.1.1.3.2. 制作 Docker 镜像
编写一个 Dokcerfile,然后编译服务为一个 Docker 镜像。
1 | FROM node:7 |
编译并发布镜像:
1 | # 编译镜像 |
提示:
- 因为 k8s 集群运行在 Mac 的虚拟机中,所以在集群中部署服务时,会自动从仓库中拉取镜像,而不能使用 Mac 本地的镜像,所以一定要将镜像推送到远程仓库。否在在部署服务时,会出现
ImagePullBackOff
错误。- 可以对
kubelet
做一个别名:alias k="kubelet"
1.1.1.3.3. 部署应用
使用 使用 kubectl run
部署应用(创建容器):
1 | # 一定要将 yuanmomo/kubia:latest 镜像推送到远程仓库 |
1.1.1.4. 访问 Web 服务
1.1.1.4.1. 创建服务对象
创建 LoadBalancer
服务:
1 | # rc 是 replicationcontroller 的缩写 |
kubectl expose
暴露的 kubia-http
也是一个服务,可以通过 kubectl get svc
查看。
1 | » kubectl get svc |
提示:
- 由于 Minikube 不支持 LoadBalancer 类型的服务。所以,这里不会有
<EXTERNAL-IP>
地址。
1.1.1.4.2. 获取访问地址
使用 minikube service kubia-http
获取可以访问服务的 IP 和端口。
1.1.1.5. 容器伸缩
1 | # 列出当前 ReplicationController 的副本数 |
访问 Web 服务地址,会发现请求会随机的落到三个容器中。
1.1.1.6. 访问 Minikube 的 dashboard
1 | minikube dashboard |