docker部署rancher

Rancher 可以通过运行单个 Docker 容器进行安装。

Rancher 特权访问

当 Rancher Server 部署在 Docker 容器中时,容器内会安装一个本地 Kubernetes 集群供 Rancher 使用。为 Rancher 的很多功能都是以 deployment 的方式运行的,而在容器内运行容器是需要特权模式的,因此你需要在安装 Rancher 时添加 --privileged 选项。

rancher不使用证书,使用nginx配置的证书

如果你安装 Rancher,不要生成证书。此安装选项不需要证书。

  • 使用 --no-cacerts 作为参数,以禁用 Rancher 生成的默认 CA 证书。

 

容器数据本地化存储:

mkdir /var/lib/rancher-v2.7.6

运行以下命令:

docker run -d --restart=unless-stopped \
--privileged \
--name rancher-v2.7.6 \
-p 10080:80 -p 10443:443 \
-v /var/lib/rancher-v2.7.6:/var/lib/rancher \
-e CATTLE_SYSTEM_DEFAULT_REGISTRY=registry.cn-hangzhou.aliyuncs.com  \
registry.cn-hangzhou.aliyuncs.com/rancher/rancher:v2.7.6 \
--no-cacerts

CATTLE_SYSTEM_DEFAULT_REGISTRY为环境变量,为rancher默认镜像仓库,默认为dockerhub,在此设置为:

registry.cn-hangzhou.aliyuncs.com

安装nginx代理

配置nginx的yum源:

nginx官方文档 :https://nginx.org/en/linux_packages.html#RHEL

配置 /etc/yum.repos.d/nginx.repo 文件:

[nginx-stable]
name=nginx stable repo
baseurl=http://nginx.org/packages/centos/$releasever/$basearch/
gpgcheck=1
enabled=1
gpgkey=https://nginx.org/keys/nginx_signing.key
module_hotfixes=true

[nginx-mainline]
name=nginx mainline repo
baseurl=http://nginx.org/packages/mainline/centos/$releasever/$basearch/
gpgcheck=1
enabled=0
gpgkey=https://nginx.org/keys/nginx_signing.key
module_hotfixes=true

执行安装命令:

yum install yum-utils 
yum-config-manager --enable nginx-stable 
yum install nginx

 

配置https证书

server {
  listen 80;
  server_name rancher.k8s.net;
  rewrite ^(.*) https://$server_name$1 permanent;
}

map $http_upgrade $connection_upgrade {
        default Upgrade;
        ''      close;
}
 
 
server {
    listen               443 ssl;
    server_name          rancher.k8s.net;
 
    ssl_certificate      ssl/rancher.k8s.net.pem;
    ssl_certificate_key  ssl/rancher.k8s.net.key;
    ### /etc/nginx/ssl 
 
    ssl_session_cache    shared:SSL:1m;
    ssl_session_timeout  5m;
 
    ssl_ciphers  HIGH:!aNULL:!MD5;
    ssl_prefer_server_ciphers  on;
    ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
 
    add_header Access-Control-Allow-Origin *;
    
    location / {
        proxy_pass https://127.0.0.1:10443;
        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_http_version 1.1;
        proxy_set_header Upgrade $http_upgrade;
        proxy_set_header Connection $connection_upgrade;
        proxy_read_timeout 600s;
    }   
}

关于https证书,可以使用阿里云免费证书,或者在阿里云购买付费证书。