k3s 安装笔记
文章目录
【注意】最后更新于 August 10, 2021,文中内容可能已过时,请谨慎使用。
前言
最近因工作,需要有一个 k8s
环境,观察了不少单机部署方案都很差劲,最后看到 k3s
官方的文档里直接有各种安装方案,最终部署下来也是比较方便,完全没有网络的干扰。
一、准备工作
- 一台 linux 机器,单核 1 GB配置也完全足够
- 有一些发行版需要修改一些东西参考官方文档即可
- server(master) 节点需要
6443/TCP
端口 - 需要通过
ingress
暴露服务的话还需要80/TCP
,443/TCP
二、离线安装
k3s 安装脚本默认使用 containerd 作为容器隔离,k8s 也抛弃了 docker,所以这里就直接使用 containerd 了。
从镜像下载所需资源
|
|
从 Github 下载最新的所需资源
|
|
修改权限放到对应位置
|
|
最后执行安装脚本
|
|
安装完成
|
|
三、远端访问 k3s
使用任意方式把 server(master) 节点的 /etc/rancher/k3s/k3s.yaml
的文件复制到自己本地的 ~/.kube/config
,记得把 clusters[:].cluster.server
的 https://127.0.0.1:6443
修改为对应地址。
|
|
然后可以直接使用 官方 kubectl 去直接访问,如果已经装过 docker-desktop
一般自带 kubectl
命令。
|
|
四、安装 Kubernetes Dashboard
部署最新版
我这边部署时最新版 v2.3.1 的 443 服务不知道为什么挂了开 nodePort,curl 直接访问 Connection refused,退回到 v2.3.0 就正常。
|
|
获取登录用 token 请参考 Kubernetes 仪表盘 里的方式。
本地开放访问
|
|
修改 yaml 暴露 NodePort
修改 dashboard.yaml 以下对应位置,开放端口
|
|
应用后,由于是单节点部署直接访问 server(master) 的 30001 端口例如 https://192.168.1.1:30001。
|
|
直接暴露 http 的方式
下面的 yaml 文件内容都在 dashboard.yaml 当中
kubernetes-dashboard 的服务内实际上还有一个 9090 端口的 http 服务,但是不支持认证,由于没有认证也导致需要给 kubernetes-dashboard 额外配置权限。
先修改部署开放 9090 端口。
|
|
修改服务的方式直接暴露 9090 端口。
|
|
由于 dashboard 的 http 服务没有用户需要给 dashboard 给予额外权限。
|
|
|
|
应用后,由于是单节点部署直接访问 server(master) 的 30002 端口例如 http://192.168.1.1:30002。
使用 ingress 暴露
k3s 内置的 ingress
为 traefik
,只要满足几个条件任意的 ingress
都能够暴露 dashboard
。
ingress
到pod(backend)
的访问支持https
。ingress
到pod(backend)
的https
访问支持跳过tls
校验,或者支持指定ca
证书校验。
修改 traefik 的配置
|
|
按照下文修改 traefik
增加 insecureSkipVerify
选项,保证 ingress
到对应 pod(backend)
的 https
访问跳过 tls
验证。毕竟我们一般没法用到正常的证书,所以 ingress
去访问 pod(backend)
需要跳过验证。
|
|
重启 traefik
|
|
新建一个文件 dashboard-ingress.yaml
|
|
|
|
应用后,由于是单节点部署直接访问 server(master) 的 80 端口,但是需要指定域名可以手动写入 host 或者解析一个域名,http://dashboard.zeromake.com
使用自签证书
先生成自签证书,可以用 openssl
,mkcert,generate_cert.go,这里我直接用 go 自带的 generate_cert.go
。
|
|
把上面生成的证书放到 kubernetes secret 里,由于 dashboard 需要的文件名与 ingress 不同,我们还需要单独建一个 ingress 用的 secret。
|
|
修改一下上面的 dashboard-ingress.yaml
|
|
|
|
应用后,由于是单节点部署直接访问 server(master) 的 443 端口,但是需要指定域名可以手动写入 host 或者解析一个域名,https://dashboard.zeromake.com