美文网首页respberry_pikubernetes
树莓派下安装k3s (一)

树莓派下安装k3s (一)

作者: xilin_am | 来源:发表于2019-10-19 18:24 被阅读0次

      k3s 是一个精简版的k8s,可以安装到树莓派上。之前也曾经把k8s安装到3个树莓上做一个集群,但是k8s实在是一个吃资源的大户,安装完之后树莓大部分资源都用来跑k8s了, 本想做一些小实验也只好放弃了。k3s只有40M,运行起来要求也低,我的树莓就可以利用上了。
    k3s在树莓上安装很简单
    安装master服务器

    curl -sfL https://get.k3s.io | sh -
    

    安装worker

    curl -sfL https://get.k3s.io | K3S_URL=https://myserver:6443 K3S_TOKEN=XXX sh -
    

    其中的K3S_TOKEN去master的/var/lib/rancher/k3s/server/node-token 找.

      不过因为下载的文件在国外。可以考虑把https://get.k3s.io 的执行脚本下回来,资源文件下回来,在本地执行。我比较懒,直接把资源放在我自己的web站点,改动脚本里的GITHUB_URL=https://github.com/rancher/k3s/releases,这样我的几个树莓批量处理起来就快了。

      安装很快就完成了,可能碰到的问题就来了,如果像我一样折腾了几回后,就会碰到worker节点没加到集群这种情况,systemctl status k3s.service 看到如下问题,

    msg="Node password rejected, contents of 
    '/var/lib/rancher/k3s/agent/node-password.txt' 
    may not match server passwd entry"
    

    这个比较好解决, cat /var/lib/rancher/k3s/server/cred/node-passwd,去改worker节点的node-password.txt 就可以了。

    # kubectl get nodes
    NAME       STATUS   ROLES    AGE   VERSION
    ssomq      Ready    worker   32h   v1.15.4-k3s.1
    mydb       Ready    worker   32h   v1.15.4-k3s.1
    rak8s001   Ready    master   32h   v1.15.4-k3s.1
    

    一切似乎都很顺利,可是总有pod起不来

    # kubectl get pods -n kube-system
    NAME                         READY   STATUS              RESTARTS   AGE
    helm-install-traefik-8v6ql   0/1     Completed           0          30h
    coredns-66f496764-5fm9x      1/1     Running             3          30h
    svclb-traefik-jrngr          3/3     Running             9          30h
    traefik-d869575c8-d5qkk      1/1     Running             3          30h
    svclb-traefik-n72c2          3/3     Running             11         30h
    svclb-traefik-r45xt          0/3     ContainerCreating   1          30h
    

    估计是镜像拉不下来,考虑已经机器得到了镜像, 我准备导出一个,到此我才发现k3s默认用的不是docker用的是Containerd ,ok没用过Containerd ,正好探索一下。资料不多,半摸半试
    Containerd 导出 镜像

    ctr images export pause.tar k8s.gcr.io/pause:3.1
    

    Containerd 导入 镜像

    ctr image import --base-name k8s.gcr.io/pause:3.1 pause.tar
    

    看来如果不想再折腾,还得熟悉一下Containerd ,不过貌似跟docker差不太多

    后补:

    1. k3s支持使用多种容器运行时环境,但是server默认以containerd作为运行时,不支持更改。agent节点可以使用contained也可以使用docker。
    2. 在边缘计算中,往往涉及到访问硬件资源,如何从容器内部访问硬件资源?
      Linux系统中,所有的硬件资源都体现为/dev/目录下面的一个设备,因此只要能够访问/dev/目录下面的设备文件即可,有的同学会说,那是不是将/dev/目录挂载到容器里面就可以了呢?经过我的实践证明不行,因为挂载到容器里面,即便容器里面是以root用户运行,然是仍旧有可能无法访问一些特殊资源文件,也就是说容器中的“root”用户与宿主机的root用户在访问权限上还是有差别。只需要将容器的运行模式设置为“privileged”即可
    resources:
       limits:
          cpu: 300m
          memory: 512Mi
        requests:
          cpu: 300m
          memory: 512Mi
    securityContext:
        privileged: true
    

    相关文章

      网友评论

        本文标题:树莓派下安装k3s (一)

        本文链接:https://www.haomeiwen.com/subject/frqnmctx.html