K3s 学习(二)安装 Rancher Labs(Docker 安装,推荐)

第一章安装完一个 server 和一个 agent 节点之后,就相当于拥有了一个迷你的 K3s 集群,现在开始安装管理面板。

考虑到作为 Docker 容器运行的 Rancher 重启较为安全简单,不再使用自签证书而是使用腾讯云签发的 1 年有效期的亚洲诚信证书。

注意:如果没有在 K3s 安装时修改 Ingress 监听端口,请不要在 server 或 agent 同服务器上安装,会造成 80 和 443 端口上起的服务无法正常访问!


1、使用 Docker 安装 Rancher Labs
执行:

docker run -d --privileged --restart=unless-stopped \
    # 容器 80、443 端口分别映射宿主机 8080 和 8443 端口
    -p 8080:80 -p 8443:443 \
    # 证书
    -v /rab/ssl/rancher.k3s.com.pem:/etc/rancher/ssl/cert.pem \
    -v /rab/ssl/rancher.k3s.com.key:/etc/rancher/ssl/key.pem \
    # 数据挂载到宿主机
    -v /rab/docker/rancher/rancher:/var/lib/rancher \
    -v /rab/docker/rancher/auditlog:/var/log/auditlog \
    # Rancher 选择为 2.5.x 版本
    --privileged \
    rancher/rancher:v2.5.5 \
    # 非自签 SSL 证书
    --no-cacerts

查看状态:

docker stats
CONTAINER           CPU %               MEM USAGE / LIMIT   MEM %               NET I/O             BLOCK I/O           PIDS
e404cfxxx811        7.35%               1.5 GiB / 3.7 GiB   40.54%              192 MB / 3.09 MB    466 MB / 489 MB     21

成功。

2、Nginx 反代(可选)
注意:反代不要选择 HTTP 所在端口,Rancher 会自动跳转至 HTTPS 造成无法访问的情况!
配置如下:

    ...
    ...
    # 防止出现“nginx: [emerg] unknown "connection_upgrade" variable”的错误
    map $http_upgrade $connection_upgrade {
        default upgrade;
        ''      close;
    }
    ...
    ...
    server {
        listen      80;
        server_name rancher.k3s.com;

        # 强制跳转 HTTPS
        location / {
            return 301 https://$server_name$request_uri;
        }
    }

    server {
        listen      443 ssl;
        server_name rancher.k3s.com;

        # SSL 配置
        ssl_certificate             /rab/ssl/1_rancher.k3s.com_bundle.crt;
        ssl_certificate_key         /rab/ssl/2_rancher.k3s.com.key;
        ssl_protocols               TLSv1 TLSv1.1 TLSv1.2;
        ssl_ciphers                 ECDHE-RSA-AES128-GCM-SHA256:HIGH:!aNULL:!MD5:!RC4:!DHE;

        location / {
            proxy_set_header Host $host;
            proxy_set_header X-Forwarded-Proto $scheme;
            proxy_set_header X-Forwarded-Port $server_port;
            proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
            proxy_pass  https://127.0.0.1:8443;
            proxy_http_version 1.1;
            proxy_set_header Upgrade $http_upgrade;
            proxy_set_header Connection $connection_upgrade;
        }
    }
    ...
    ...

3、重启 Nginx 并访问域名
完成

第一次访问会需要配置管理员密码,后续如果忘记请执行以下命令获取新密码:

docker exec -ti $container_id reset-password

返回结果中会有新的密码

New password for default admin user (user-xxxxx):
$new_password

本章结束。