ubuntu单机部署k8s–microk8s

less than 1 minute read

楼主用了2天的时间终于把单机的k8s整好了, 为了造福广大跟楼主一样折腾k8s的兄弟们, 在这里把楼主的经验和填坑过程分享给大家。实验环境为一台装有ubuntu的笔记本电脑。目测虚拟机也是可以的。

第一步: 安装snap

貌似ubuntu 16.04及以上版本默认都有安装snap, 如果系统里面没有snap命令,运行下面的命令安装

sudo apt-get install snapd snappy

第二步: 安装microk8s

注意事项: 需要注意的是系统的8080端口需要是空闲的。

snap install microk8s --classic  # 一定要有--classic

microk8s.kubectl version  # 运行这个命令检查是否安装成功

Client Version: version.Info{Major:"1", Minor:"12", GitVersion:"v1.12.2", GitCommit:"17c77c7898218073f14c8d573582e8d2313dc740", GitTreeState:"clean", BuildDate:"2018-10-24T06:54:59Z", GoVersion:"go1.10.4", Compiler:"gc", Platform:"linux/amd64"}
Server Version: version.Info{Major:"1", Minor:"12", GitVersion:"v1.12.2", GitCommit:"17c77c7898218073f14c8d573582e8d2313dc740", GitTreeState:"clean", BuildDate:"2018-10-24T06:43:59Z", GoVersion:"go1.10.4", Compiler:"gc", Platform:"linux/amd64"}

安装完成以后, 你会发现系统里多了一些microk8s.xxx的命令, 例如microk8s.kubectl(等同于原生的kubectl)

到这里,microk8s就已经安装完毕了。我们可以使用microk8s.kubectl get nodes microk8s.kubectl get services这些命令来管理本地的k8s集群.

运行插件

microk8s默认之启动了api-server, controller-manager, scheduler, kubelet, cni, kube-proxy这几个服务, dns和dashboar都可以通过插件的方式启动。

microk8s.enable dns dashboard  # 启动
microk8s.disable dashboard dns # 停止

更多插件列表,参考

启动停止microk8s

官方文档是错的, 正确的方式如下

snap enable microk8s  # 启动
snap disable microk8s  # 停止

卸载

microk8s.reset
snap remove microk8s

填坑记录:

  1. 在国内,由于gfw的原因, 我们是访问不了google的镜像服务的, 因此很多时候我们会碰到类似这样的错误failed pulling image k8s.gcr.io/pause:3.1。这个问题我们可以通过手动下载镜像来解决。做法如下:
      microk8s.docker pull mirrorgooglecontainers/pause-amd64:3.1  # 首先去hub.docker.com上面找到相同的镜像并pull下来
      microk8s.docker tag mirrorgooglecontainers/pause-amd64:3.1 k8s.gcr.io/pause:3.1  # 重新打tag, 错误提示找不到那个镜像, tag就打成什么名字
    
  2. microk8s会自带一个docker, 如果你的系统里已经安装了docker的话, 它还是用自带的那个docker,也就是microk8s.docker。因此,在解决上面提到的镜像问题的时候, 一定要使用microk8s.docker命令来操作, 使用系统原有的docker是不起作用的。能否让microk8s使用系统的docker楼主还没研究出来。

  3. 如果你不用microk8s等工具部署单机环境,而是直接不是k8s的话, 解决镜像问题的过程最方便的是使用代理(也可以用打tag的方法). 让docker配置代理的过程如下 ``` mkdir -p /etc/systemd/system/docker.service.d touch https-proxy.conf [Service] Environment=”HTTPS_PROXY=socks5://127.0.0.1:1080”

touch http-proxy.conf [Service] Environment=”HTTP_PROXY=socks5://127.0.0.1:1080”

systemctl daemon-reload systemctl restart docker ```

  1. 如果出现microkis.kubectl get pods输出resource not found这种情况, reboot, 如果不好使就先卸载, 删除home目录下的snap目录, 再reboot, 安装.