rancher2管理k8s集群

安装方式:单节点+L7负载均衡

方案B-使用权威CA机构颁发的证书

如果您公开发布您的应用,理想情况下应该使用由权威CA机构颁发的证书。

提示

  • 证书必须是PEM格式PEM只是一种证书类型,并不是说文件必须是PEM为后缀,具体可以查看证书类型
  • 这里的证书不需要进行base64加密
  • 给容器添加--no-cacerts参数禁止Rancher生成默认的CA证书

如果您使用由权威CA机构颁发的证书,则无需在Rancher容器中安装您的CA证书,只需运行下面的基本安装命令即可: 搭建rancher2.3.3,然后导入已经存在的k8s集群(v1.15.1)

docker run -d --restart=unless-stopped --name=rancher2-k8s \
-p 18080:80 -p 1443:443 \
-v /var/lib/rancher:/var/lib/rancher/ \
-v /var/log/rancher/auditlog:/var/log/auditlog \
-e CATTLE_SYSTEM_CATALOG=bundled \
-e AUDIT_LEVEL=3 \
rancher/rancher:v2.3.3  --no-cacerts

###配置七层负载均衡器

默认情况下,rancher容器会将80端口上的请求重定向到443端口上。如果Rancher Server通过负载均衡器来代理,这个时候请求是通过负载均衡器发送给Rancher Server,而并非客户端直接访问Rancher Server。在非全局https的环境中,如果以外部负载均衡器作为ssl终止,这个时候通过负载均衡器的https请求将需要被反向代理到Rancher Server http(80)上。在负载均衡器上配置X-Forwarded-Proto: https参数,Rancher Server http(80)上收到负载均衡器的请求后,就不会再重定向到https(443)上。

负载均衡器或代理必须配置为支持以下内容:

  • WebSocket连接
  • SPDY/HTTP/2协议
  • 传递/设置一下headers:
HeaderValue描述
Host传递给Rancher的主机名识别客户端请求的主机名
X-Forwarded-Portohttps识别客户端用于连接负载均衡器的协议。"注意:"如果存在此标头,rancher/rancher不会将HTTP重定向到HTTPS
X-Forwarded-PortPort used to reach Rancher识别客户端用于连接负载均衡器的端口
X-Forwarded-ForIP of the client connection识别客户端的原始IP地址
  • Nginx配置文件示例

此Nginx配置文件在Nginx version 1.13(mainline)和1.14(stable)通过测试

worker_processes 4;
worker_rlimit_nofile 40000;

events {
    worker_connections 8192;
}

http {
    upstream rancher {
        server rancher-server:80;
    }

    map $http_upgrade $connection_upgrade {
        default Upgrade;
        ''      close;
    }

    server {
        listen 443 ssl http2; # 如果是升级或者全新安装v2.2.2,需要禁止http2,其他版本不需修改。
        server_name FQDN;
        ssl_certificate <您自己的自签名证书>;
        ssl_certificate_key <您自己的自签名证书私钥>;

        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 http://rancher;
            proxy_http_version 1.1;
            proxy_set_header Upgrade $http_upgrade;
            proxy_set_header Connection $connection_upgrade;
            # This allows the ability for the execute shell window to remain open for up to 15 minutes. 
            ## Without this parameter, the default is 1 minute and will automatically close.
            proxy_read_timeout 900s;
            proxy_buffering off;
        }
    }

    server {
        listen 80;
        server_name FQDN;
        return 301 https://$server_name$request_uri;
    }
}
  • 为了减少网络传输的数据量,可以在七层代理的http定义中添加GZIP功能
# Gzip Settings
gzip on;
gzip_disable "msie6";
gzip_disable "MSIE [1-6]\.(?!.*SV1)";
gzip_vary on;
gzip_static on;
gzip_proxied any;
gzip_min_length 0;
gzip_comp_level 8;
gzip_buffers 16 8k;
gzip_http_version 1.1;
gzip_types
  text/xml application/xml application/atom+xml application/rss+xml application/xhtml+xml image/svg+xml application/font-woff
  text/javascript application/javascript application/x-javascript
  text/x-json application/json application/x-web-app-manifest+json
  text/css text/plain text/x-component
  font/opentype application/x-font-ttf application/vnd.ms-fontobject font/woff2
  image/x-icon image/png image/jpeg;

下面贴三张部署成功后的访问截图

rancher2.x官方文档


文章作者: 阿培
版权声明: 本博客所有文章除特別声明外,均采用 CC BY 4.0 许可协议。转载请注明来源 阿培 !
 上一篇
软件版本区别 软件版本区别
Alpha、Beta、RC、GA版本的区别 Alpha:是内部测试版,一般不向外部发布,会有很多Bug.一般只有测试人员使用。 Beta:也是测试版,这个阶段的版本会一直加入新的功能。在Alpha版之后推出。 RC:(Release Can
下一篇 
tengine编译安装 tengine编译安装
CentOS 7.6 编译安装tengine安装依赖包yum -y install gcc gcc-c++ bzip2 perl curl curl-devel wget expat-devel gettext-devel openss
2019-12-20
  目录