建议官方同学定期出来解疑答惑

建议由官方同学定期出来解疑答惑,社区资料太少,排错不易。

建议由官方同学定期出来解疑答惑,社区资料太少,排错不易。

rancher2.*的webhooks的配置

[     {         "id": "pageh5",         "execute-comman...
继续阅读 »
[

    {

        "id": "pageh5",

        "execute-command": "/webhooks.sh",

        "command-working-directory": "/home",

        "response-message": "I got the payload!",

        "include-command-output-in-response": true,

        "include-command-output-in-response-on-error": true,

        "trigger-rule-mismatch-http-response-code": 500,

        "response-headers":

        [

            {

                "name": "Access-Control-Allow-Origin",

                "value": "*"

            }

        ],

        "pass-arguments-to-command":

        [

            {

                "source": "entire-payload"

            }

          ],

        "pass-environment-to-command":

        [

            {

                "envname": "APP_NS",

                "source": "url",

                "name": "ns"

            },

            {

                "envname": "APP_WORKLOAD",

                "source": "url",

                "name": "workload"

            },

            {

                "envname": "APP_CONTAINER",

                "source": "url",

                "name": "container"

            },

            {

                "envname": "REPO_TYPE",

                "source": "url",

                "name": "repo_type"

            },

            {

                "envname": "MAIL_TO",

                "source": "string",

                "name": "848700781@qq.com"

            }

        ],

        "trigger-rule":

        {

            "and":

            [

                {

                    "match":

                    {

                        "type": "value",

                        "value": "Baofa2019",

                        "parameter":

                        {

                            "source": "url",

                            "name": "token"

                        }

                    }

                },

                {

                    "match":

                    {

                        "type": "value",

                        "value": "tyssq",

                        "parameter":

                        {

                            "source": "url",

                            "name": "ns"

                        }

                    }

                },

                {

                    "match":

                    {

                        "type": "value",

                        "value": "deployment/pageh5",

                        "parameter":

                        {

                            "source": "url",

                            "name": "workload"

                        }

                    }

                },

                {

                    "match":

                    {

                        "type": "value",

                        "value": "pageh5",

                        "parameter":

                        {

                            "source": "url",

                            "name": "container"

                        }

                    }

                }

            ]

        }

    }

]


 


其中,pageh5的我的服务名,tyssq的命名空间,

收起阅读 »

阿里云部署rancher2.1

由于rancher的这个富文本编辑器不太友好,所以文章写在我的个人博客中,欢迎指导:https://segmentfault.com/a/1190000016925528?share_user=1030000005735379
由于rancher的这个富文本编辑器不太友好,所以文章写在我的个人博客中,欢迎指导:https://segmentfault.com/a/1190000016925528?share_user=1030000005735379

在迁移rancher时遇到的删除namespace一直处于Terminating状态的解决方法

背景:近期由于公司需要将部署在ucloud上的rancher迁移到阿里云上,所以需要将原有Rancher依赖的namespace(cattle-system)删除,但在删除中出现了删除的namespace一直处于Terminating状态的情况 解决方案:...
继续阅读 »


背景:近期由于公司需要将部署在ucloud上的rancher迁移到阿里云上,所以需要将原有Rancher依赖的namespace(cattle-system)删除,但在删除中出现了删除的namespace一直处于Terminating状态的情况


解决方案
运行命令:
kubectl edit namespaces cattle-system

可以看到namespaces的yaml配置:
将finalizer的value删除,这里将其设置为[]
保存即可看到该namespace已被删除
 鸣谢
感谢RancherLabs的尹学峰老师的指点 收起阅读 »

Rancher1.6中docker-compose 读取环境变量文件

    如图,在Rancher1.6中,如果我们在导入应用栈的时候,docker-compose文件中想直接配置读取环境变量文件,默认情况下应用是无法部署的。UI填写的所有配置会传递给rancher server,rancher server容器中并没有配置...
继续阅读 »

    如图,在Rancher1.6中,如果我们在导入应用栈的时候,docker-compose文件中想直接配置读取环境变量文件,默认情况下应用是无法部署的。UI填写的所有配置会传递给rancher server,rancher server容器中并没有配置的环境变量文件,所以docker-compose无法读取设置的变量文件。
    如果一定需要这个功能,那么可以 登录rancher server所在的主机,登录到rancher server容器中:
docker exec -ti  bash

 在rancher server容器中手动创建环境变量文件,把相应的变量参数填写进去,这样就可以正常创建服务了。
    如果rancher server是HA部署,那么通过NFS共享一个路径这样也可以保证文件的一致性。 收起阅读 »

Rancher2.0常见问题

1、出现大量Failed Pod 这个问题可能是磁盘满了,执行 kubectl describe pod  --all-namespaces 查看日志
继续阅读 »
1、出现大量Failed Pod

这个问题可能是磁盘满了,执行 kubectl describe pod  --all-namespaces 查看日志 收起阅读 »

创建redhat docker 基础镜像(转)

RHEL docker images are not available from Docker Hub. It’s available from Redhat docker registry and the catalog can be accessed h...
继续阅读 »
RHEL docker images are not available from Docker Hub. It’s available from Redhat docker registry and the catalog can be accessed here. However there could be cases where you might want to create a RHEL docker image from scratch. The following steps will guide you to create a RHEL docker image from scratch. While these steps are for creating RHEL 7.1 LE docker image on PowerPC servers, the same can be applied for creating RHEL docker image on Intel servers as well.
The steps below have been performed on an Ubuntu 15.10 OS running as a PowerKVM guest. However you can run the same steps on RHEL or Fedora as well.
[size]Pre-requisites[/size]
  • Access to RHEL package repository. You can use a local repository created from RHEL installation ISO as described below
    # mkdir -p /mnt/rhel7-repo# mount -o loop RHEL-LE-7.1-20150219.1-Server-ppc64le-dvd1.iso /mnt/rhel7-repo/
  • Install ‘yum’ package. This is not required on a RHEL or Fedora system as it’ll be there by default.
    # apt-get install yum
[size]Steps to create a RHEL docker image[/size]
  • Create a new RPM root directory
    # mkdir /rhel7-root# export rpm_root=/rhel7-root
  • Initialize the new RPM root directory
    # rpm --root ${rpm_root} --initdb
    The rest of the install instructions will use this new RPM root as the install destination for a minimalistic RHEL OS.
  • Install the redhat-release-server rpm package for RHEL 7.1 LE
    # rpm --root ${rpm_root} -ivh /mnt/rhel7-repo/Packages/redhat-release-server-7.1-1.ael7b.ppc64le.rpm
  • Configure yum repositories as required.For example if you want to use only the local repository, then do the following 
    # rm -f ${rpm_root}/etc/yum.repos.d/*.repo# cat >${rpm_root}/etc/yum.repos.d/rhel71le.repo<[rhel71le]baseurl=file:///mnt/rhel7-repoenabled=1EOF
    If you encounter ‘No such file or directory’ error, then you’ll need to create the /etc/yum.repos.d directory.
  • Import GPG keys
    # rpm --root ${rpm_root} --import  /mnt/rhel7-repo/RPM-GPG-KEY-redhat-*
  • Install minimalistic RHEL OS
    # yum -y --installroot=${rpm_root} install yum
    This will install a minimalistic RHEL OS under /rhel7-root
  • Additional CustomizationChroot to the new RHEL installation and perform any additional customizations if required 
    # chroot ${rpm_root} /bin/bashbash-4.2# cat /etc/redhat-release Red Hat Enterprise Linux Server release 7.1 (Maipo)
  • Convert this RHEL installation to a docker image
    # tar -C ${rpm_root}/ -c . | docker import - rhel7le9a6dac402e2bf561f833f644337f3061c6ff70ec906472d5c008755ca9ed7f1d# docker imagesREPOSITORY            TAG                 IMAGE ID            CREATED             VIRTUAL SIZErhel7le               latest              9a6dac402e2b        11 seconds ago      360.6 MB
  • Use the new RHEL docker image
    # docker run --hostname='rhel7-container' rhel7le uname -aLinux rhel7-container 4.2.0-10-generic #12-Ubuntu SMP Tue Sep 15 19:46:04 UTC 2015 ppc64le ppc64le ppc64le GNU/Linux

Once you have created the RHEL docker image, you can push it to your local registry for sharing. Hope this will be of some help to you in your docker journey. 收起阅读 »

多层代理获取用户真实IP(转)

1. 几个概念 remote_addr:如果中间没有代理,这个就是客户端的真实IP,如果有代理,这就是上层代理的IP. X-Forwarded-For:一个HTTP扩展头,格式为 X-Forwarded-For: client, proxy1, proxy2 ...
继续阅读 »
1. 几个概念
remote_addr:如果中间没有代理,这个就是客户端的真实IP,如果有代理,这就是上层代理的IP.
X-Forwarded-For:一个HTTP扩展头,格式为 X-Forwarded-For: client, proxy1, proxy2 
X-Real-IP:自定义的HTTP头,用于把客户端真实IP一层层传递下去。

2.几个变量
$remote_addr:上层IP(客户端或代理)
$proxy_add_x_forwarded_for:包括客户端请求头的X-Forwarded-For和$remote_addr
$http_x_forwarded_for:就是X-Forwarded-For的值

3. 获取客户端真实IP的方法
    3.1 通过设置X-real-IP层层传递
        首层代理:proxy_set_header X-Real-IP $remote_addr;   针对首层代理,拿到真实IP
        非首层代理:proxy_set_header X-Real-IP $http_x_real_ip;  # 针对非首层代理,一直传下去 
    3.2 通过设置X-Forwarded-For请求头
        proxy_set_header            X-Forwarded-For $proxy_add_x_forwarded_for;
        然后截取X-Forward-For请求头的第一段,即是客户端的真实IP

4. 经过CDN后,获取用户真实IP的方法
    4.1 一般CDN都会传递X-Forwarded-For请求头,通过X-Forwarded-For请求头获取用户真实IP。
    4.2 后端Nginx配置
    http {
        map $http_x_forwarded_for  $clientRealIp {
        ""      $remote_addr;
        ~^(?P[0-9\.]+),?.*$  $firstAddr;
    }

    }        
    我们通过map自定义了一个变量$clientRealIp;
    如果X-Forwarded-For头是空的,那么客户端真实IP就是remote_addr;
    如果X-Forwarded-For头非空,我们就通过正则匹配,捕获到第一段,这就是用户的真实IP;
    必须注意的是,在每一层代理都要设置X-Forwarded-For头。
  收起阅读 »

Rancher2.0UI无法删除工作负载

kubectl delete deployment --force xxxxxx
kubectl delete deployment --force xxxxxx

自动清理TAG为<none>的镜像

使用容器,经常构建镜像或者更新服务会出现很多TAG为none的镜像,这些镜像因为TAG被新的镜像覆盖了,所以显示TAG为none。镜像的不断增加很容易导致磁盘占满,可以写个脚本,定时的检查磁盘使用情况:#!/bin/bash source /etc/prof...
继续阅读 »
使用容器,经常构建镜像或者更新服务会出现很多TAG为none的镜像,这些镜像因为TAG被新的镜像覆盖了,所以显示TAG为none。镜像的不断增加很容易导致磁盘占满,可以写个脚本,定时的检查磁盘使用情况:
#!/bin/bash

source /etc/profile
echo $(date +"%Y-%m-%d:%k") >> /home/chcke_disk.log
disk_use=$(df -h|awk '{print $5}'|grep -v Use%|tr -d %)
chcke_disk()
{
    for d_use in $(echo ${disk_use});
    do
        if [ "${d_use}" -ge '90' ]; then
            docker images  -a |grep none|awk '{print $3 }'|xargs docker rmi
        fi
    done
}

chcke_disk

 
我设置的是每小时检查一次,编辑 crontab -e 
0 * * * * bash /home/clean_disk.sh 收起阅读 »

Rancher2.0通过nodeport映射端口后,只有POD所在主机能通过端口访问,其他主机无法访问

Rancher2.0通过nodeport映射端口后,只有POD所在主机能通过端口访问,其他主机无法访问   这个问题有可能是iptables把相应的转发包丢弃了   解决方法:sudo iptables -P FORWARD ACCEPT,打开全局的转发规则 ...
继续阅读 »
Rancher2.0通过nodeport映射端口后,只有POD所在主机能通过端口访问,其他主机无法访问
 
这个问题有可能是iptables把相应的转发包丢弃了
 
解决方法:sudo iptables -P FORWARD ACCEPT,打开全局的转发规则
  收起阅读 »