准备工作
准备一台ubuntu的机器,配置如下:
- OS: ubuntu 18.04
- docker: 18.06.1
- cpu、内存:4core 4G
- 硬盘: 100G
- 能连通docker hub(不必翻墙)
CPU 内存过低可能带不动。4核4G感觉有点卡。硬盘低了可能会导致docker image持续GC,造成不必要的性能浪费。
安装
snap install microk8s --classic
这样就安装完了。。。下面对这个集群做一下改动,方便使用。
使用/snap/bin/microk8s.status查看集群状态。
配置
配置 microk8s命令
- 把
/snap/bin加入PATH:
export PATH=$PATH:/snap/bin #临时写入
echo "export PATH=$PATH:/snap/bin" >> ~/.bashrc #永久写入
- 设置
kubectl别名:
snap alias microk8s.kubectl kubectl
- 修改pod的sandbox
pod的sandbox 默认是 k8s.gcr.io/pause:3.1,这个镜像是无法获取的。需要将sandbox修改为国内可以获取的镜像。
- 修改
/var/snap/microk8s/current/args/kubelet。 添加--pod-infra-container-image=s7799653/pause:3.1 - 修改
/var/snap/microk8s/current/args/containerd-template.toml的plugins -> plugins.cri -> sandbox_image为s7799653/pause:3.1 - 重启服务
microk8s.stop,microk8s.start
- 启用 dns和 dashboard
microk8s.enable dns dashboard
由于这些组件用到的镜像是墙外的。需要修改一下镜像,使用墙内的。
这里提供部分镜像。
| 墙内 | 墙外 |
|---|---|
| s7799653/heapster-amd64:v1.5.2 | k8s.gcr.io/heapster-amd64:v1.5.2 |
| s7799653/heapster-influxdb-amd64:v1.3.3 | k8s.gcr.io/heapster-influxdb-amd64:v1.3.3 |
| s7799653/k8s-dns-sidecar-amd64:1.14.7 | gcr.io/google_containers/k8s-dns-sidecar-amd64:1.14.7 |
| s7799653/heapster-grafana-amd64:v4.4.3 | k8s.gcr.io/heapster-grafana-amd64:v4.4.3 |
| s7799653/kubernetes-dashboard-amd64:v1.8.3 | k8s.gcr.io/kubernetes-dashboard-amd64:v1.8.3 |
| s7799653/k8s-dns-kube-dns-amd64:1.14.7 | gcr.io/google_containers/k8s-dns-kube-dns-amd64:1.14.7 |
| s7799653/fluentd-elasticsearch:v2.2.0 | k8s.gcr.io/fluentd-elasticsearch:v2.2.0 |
| s7799653/k8s-dns-dnsmasq-nanny-amd64:1.14.7 | gcr.io/google_containers/k8s-dns-dnsmasq-nanny-amd64:1.14.7 |
分享一个无需翻墙即可获取墙外镜像的小技巧。
利用docker hub的自动构建。从github获取dockerfile来构建镜像。
使用
kubectl get po -n kube-system
如果所有pod都是Running状态,就证明这个集群可以使用了。
kubectl edit svc -n kube-system kubernetes-dashboard
把spec.type修改为NodePort,在spec.ports中添加nodePort: 30000,保存之后就可以通过https://ip:30000访问界面了。
