Go使用反射调用方法遇到的一些问题

在使用Go反射结构体,调用结构体的过程中遇到了一些问题,特此总结下:

1.如何通过方法名调用结构体方法

2.如何通过方法名调用指针接收者方法

3.实现接口的结构体的指针接收者方法调用

4.反射调用方法的参数和返回值处理

继续阅读Go使用反射调用方法遇到的一些问题

kubernetes的node NotReady

使用 kubectl describe node <node name>可以看到

KubeletNotReady runtime network not ready: NetworkReady=false reason:NetworkPluginNotReady message:docker: network plugin is not ready: cni config uninitialized

参考:https://github.com/kubernetes/kubernetes/issues/48798#issuecomment-367966047

1.删除/etc/systemd/system/kubelet.service.d/10-kubeadm.conf里最后一行里的$KUBELET_NETWORK_ARGS

2.重启kubelet  systemctl enable kubelet && systemctl start kubelet

3.重新加入 kubeadm reset || kubeadm join ….

国内使用kubernetes踩过的坑

国内使用Kubernetes主要是因为墙的一些问题,导致用起来不是很顺畅。网上教程很多,但是个体情况不一样,所以还是总结下。

环境:阿里云 ubunt 16.04  国外服务器一台

安装教程:https://kubernetes.io/docs/setup/independent/install-kubeadm/

使用教程:https://kubernetes.io/docs/setup/independent/create-cluster-kubeadm/

kubeadm init流程:https://kubernetes.io/docs/reference/setup-tools/kubeadm/kubeadm-init/

继续阅读国内使用kubernetes踩过的坑

yii2 模块中使用restful的pretty url带参数导致404 not found cannot resolve url

在模块中加了restful接口,不带参数是可以正常访问的

base_url/controller/action

带上参数不能正常访问

base_url/controller/action/15

如果不用pretty url是可以的

base_url/controller/action?id=15

按照官方文档配置无效http://www.yiichina.com/doc/guide/2.0/rest-versioning

最后发现,用另一种方式声明url rule可以了

     components' => [
        ...
        'urlManager' => [
            'enablePrettyUrl'     => true,
            'enableStrictParsing' => false,
            'showScriptName'      => false,
            'rules' => [
                [
                    'class' => 'yii\rest\UrlRule',
                    'controller' => [
                        'api/v1_0/user',
                    ],
                    'tokens'=>[
                        '{id}'    => '<id:\\d[\\d,]*>', //default
                    ],
                    'extraPatterns'=>[
                        'GET,HEAD {id}/projects'           => 'projects',
                    ]
                ],
            ],
            'rules'=>[
                '<module:\w+>/<controller:\w+>/<action:\w+>/<id:\d+>'=>'<module>/<controller>/<action>',
            ],
        ]
    ],

我觉得我要弃坑了~~~

使用nginx反向代理docker容器实现不同域名访问不同容器

环境:

ubuntu 16.04

docker 17.05

nginx 1.10.3 (ubuntu)

首先安装nginx

apt-get install -y nginx

启动docker容器并映射端口

docker run -d -p 8080:80 --name domain1 httpd
docker run -d -p 8081:80 --name domain2 httpd

添加反向代理配置/etc/nginx/conf.d/reverse-proxy.conf

server
{
    listen 80;
    server_name domain1.com;
    location / {
        proxy_redirect off;
        proxy_set_header Host $host;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_pass http://127.0.0.1:8080;
    }
    access_log /var/log/nginx/domain1.com_access.log;
}

server
{
    listen 80;
    server_name domain2.com;
    location / {
        proxy_redirect off;
        proxy_set_header Host $host;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_pass http://127.0.0.1:8081;
    }
    access_log /var/log/nginx/domain2_access.log;
}

启动nginx

/etc/init.d/nginx start

 

 

http重定向到https

server
{
    listen	80;
    server_name	domain.com;
    return 	301 https://$server_name$request_uri;
}

server
{
    listen 443;
    server_name domain.com;
    ssl on;
    ssl_certificate /home/ca/yun2.nopass.crt;
    ssl_certificate_key /home/ca/yun2.nopass.key;
    location / {
        proxy_redirect off;
        proxy_set_header Host $host;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_pass http://127.0.0.1:8080;
    }
    client_max_body_size 512M;
    access_log /var/log/nginx/yun2.ahuer.com_access.log;
}