标签 k3s 下的文章

查看k3s anget启动日志,有如下错误。

$ systemctl status k3s-agent.service

`time="2022-04-09T05:03:40+08:00" level=error msg="CA cert validation failed: Get \"https://127.0.0.1:6444/cacerts\": x509: certificate has expired or is not yet valid: current time 2022-04-09T05:`

表面上看是请求到的server证书,时间早于证书的notBefore time,分析原因可能是两个系统的时区和时间不一致导致。

统一到utc时区,并自动更新时间

$ timedatectl set-timezone UTC
$ timedatectl set-ntp yes

然后需要重新安装k3s server, 之前agnet就能正常连接到server了

  1. 下载离线包
    在官方release地址下载k3s和k3s-airgap-images-xxx.tar.gz, 在 https://get.k3s.io 下载 k3s_install.sh 脚本
  2. 安装依赖包

    sudo apt-get update
    sudo apt-get install nfs-common
  3. 离线安装

    sudo cp ./k3s /usr/local/bin/
    sudo chmod +x /usr/local/bin/k3s
    
    sudo mkdir -p /var/lib/rancher/k3s/agent/images/
    sudo cp ./k3s-airgap-images-arm64.tar.gz /var/lib/rancher/k3s/agent/images/
    
    sudo chmod +x ./k3s_install.sh

Server docker模式

sudo INSTALL_K3S_SKIP_DOWNLOAD=true ./k3s_install.sh --docker

确保每一个node,加入集群自动运行DaemonSet

apiVersion: apps/v1
kind: DaemonSet
metadata:
  name: node-daemon
  labels:
    app: node-daemon
spec:
  selector:
    matchLabels:
      name: node-daemon
  template:
    metadata:
      labels:
        name: node-daemon
    spec:
      containers:
        - name: parsec-client
          image: parsec-client:v1.0
          ports:
            - containerPort: 8300
              hostPort: 8300
          volumeMounts:
            - mountPath: /run/parsec
              name: parsec-run
      volumes:
        - hostPath:
            path: /home/parsec/run
          name: parsec-run

等价于docker命令

sudo docker run --rm -d -p8300:8300 -v /home/parsec/run:/run/parsec parsec-client:v1.0

节点node

节点: 安装有k3s,k8s环境的主机或虚拟机,分为control-plane,master主控节点和<none>一般节点。每个节点已安装好容器环境(Docker等), 并且最好安装上需要image镜像, 这样可避免远程拉去image。 给每个node设置好label标签, 可方便后期规划任务的分配。

节点添加标签`sudo kubectl label node <node-name> <label-key>=<label-value>`。
节点删除标签`sudo kubectl label node <node-name> <label-key>-`, 减号表示删除。
查询节点的标签`sudo kubectl get node --show-labels`。

阅读剩余部分

k3s 安装(依赖docker方式)

k3s 是轻量化的k8s。

Master 节点安装

  • 通用地址curl -sfL https://get.k3s.io | sh -s - --docker
  • 国内加速curl -sfL http://rancher-mirror.cnrancher.com/k3s/k3s-install.sh | INSTALL_K3S_MIRROR=cn sh -s - --docker

查看master的token:sudo cat /var/lib/rancher/k3s/server/node-token

Node 节点安装

  • 通用地址curl -sfL https://get.k3s.io | K3S_URL=https://myserver:6443 K3S_TOKEN=mynodetoken sh -s - --docker
  • 国内加速curl -sfL http://rancher-mirror.cnrancher.com/k3s/k3s-install.sh | INSTALL_K3S_MIRROR=cn K3S_URL=https://myserver:6443 K3S_TOKEN=mynodetoken sh -s - --docker

在master中查看集群状态

$sudo kubectl get nodes
NAME       STATUS                     ROLES                  AGE   VERSION
u18node    Ready                      <none>                 12d   v1.21.4+k3s1
ubuntu18   Ready,SchedulingDisabled   control-plane,master   12d   v1.21.4+k3s1
tips: control-plane,master节点可设置为不参与调度(kubectl cordon ubuntu18),这样任务就不会分配过来。

阅读剩余部分