Blog

  • 解决烦人的 chrome 选择证书提示

    当使用自签的证书时,chrome 会不停地提示选择证书

    已经被烦了几个月了,每次选择很浪费时间。还好 chrome 提供了自动选择证书 policy。

    为名字为 AutoSelectCertificateForUrls 的 policy 创建规则

    mac OSX 系统设置

    # 清空这个选项的内容
    defaults write com.google.Chrome AutoSelectCertificateForUrls -array
    # 设置 policy
    defaults write com.google.Chrome AutoSelectCertificateForUrls -array-add -string '{"pattern":"https://[*.]corp.foobar.com","filter":{"ISSUER":{"CN":"Foobar Internal Intermediate CA"}}}'
    

    windows 新建一个 .reg 注册表文件,之后双击导入

    Windows Registry Editor Version 5.00
    
    [HKEY_LOCAL_MACHINE\SOFTWARE\Policies\Google\Chrome\AutoSelectCertificateForUrls]
    "1"="{\"pattern\":\"https://[*.]corp.foobar.com\",\"filter\":{\"ISSUER\":{\"CN\":\"Foobar Internal Intermediate CA\"}}}"
    
    

    检查 policy 是否生效,地址栏输入 chrome://policy

    重新载入 policy,在最右侧的状态里看到是 ok 的则生效(如果上面写错,检查 json 语法,以及 CN,CN 是 iusser 的 common name)。

    官方文档: https://chromium.org/administrators/policy-list-3#AutoSelectCertificateForUrls

  • kubernetes笔记

    最好不要越过 RC 直接创建 Pod, 通过 RC 管理 Pod,实现自动创建、补足、替换、删除 Pod,减少由于节点崩溃等意外造成的损失。

  • kubectl 操作记录

    设置 master

    kubectl label node node-master.foo.bar kubernetes.io/role=master
    node "node-master.foo.bar" labeled
    

    查看集群组件信息

    kubectl get cs

    查看集群的 master api 地址

    kubectl cluster-info
    kubectl cluster-info dump

    查看集群的各种资源类型

    kubectl api-resources | grep  istio
    kubectl get pods --namespace=kube-system
    

    强制删除 pod

    kubectl delete pod nginx-1849696770-2pk8t -n myspace --grace-period=0 --force
    

    转发一个端口

    kubectl -n monitoring port-forward deployment/getup-grafana 3000:3000
    kubectl -n monitoring port-forward alertmanager-getup-prometheus-operator-alertmanager-0 9093:9093
    kubectl -n monitoring port-forward prometheus-getup-prometheus-operator-prometheus-0 9090:9090
    

    exec 执行长命令被截断,需要用 —

    kubectl exec $POD_NAME tail -n 10 /var/log/newrelic_agent.log
    Error from server (NotFound): namespaces "10" not found
    应该用
    kubectl exec $POD_NAME -- tail -n 10 /var/log/newrelic_agent.log
    或
    kubectl exec $POD_NAME -- bash -c "tail -n 10 /var/log/newrelic_agent.log"
    

    查看所有事件

    kubectl get events
    
    kubectl -n istio-system port-forward prometheus-6cabcdab97-mwptl 18080:9090
    kubectl -n istio-system port-forward grafana-fabcd765b-vtcxp 18080:3000
    kubectl -n istio-system port-forward kiali-8babb947c-b5g5m 18080:20001
    
    kubectl api-resources
    
    app=account_service
    kubectl logs --tail 10 -f -l app=$app -n default -c $app
    
    kubectl get secret config1 -o json | jq '.data | map_values(@base64d)'
    
    kubectl get all -n jenkins
    
    NAME                         READY   STATUS    RESTARTS   AGE
    pod/jenkins-8d6cc58f-dnfv6   1/1     Running   0          3d5h
    
    NAME                           TYPE           CLUSTER-IP     EXTERNAL-IP    PORT(S)           AGE
    service/jenkins                ClusterIP      10.31.30.9             80/TCP            544d
    service/jenkins-agent          LoadBalancer   10.31.25.64   172.170.0.41    50000:21700/TCP   544d
    service/jenkins-agent-public   LoadBalancer   10.31.25.94   xx.xx.xx.xxx   50000:22289/TCP   402d
    
    NAME                      READY   UP-TO-DATE   AVAILABLE   AGE
    deployment.apps/jenkins   1/1     1            1           544d
    
    NAME                                 DESIRED   CURRENT   READY   AGE
    replicaset.apps/jenkins-7f57bfbd76   0         0         0       544d
    replicaset.apps/jenkins-8d6cc58f     1         1         1       367d
    
    

    查看 pod 的名字

    for pod in `kubectl get pods -n dev -o jsonpath={.items..metadata.name} `; do kubectl get pod $pod -n dev ; done
    

    查看 svc 的 ip

    kubectx | grep gke_ | while read line; do echo $line; kubectl --context $line get svc istio-ingressgateway -n istio-system -o jsonpath='{.status.loadBalancer.ingress[0].ip}'; echo; done
    

    查看 image 和 containerID

    kubectl get pods -n dev -o jsonpath='{range .items[*].status.containerStatuses[*]}{.image}{"\n"}{.containerID}{"\n\n"}{end}' 
    

    用 go template

    kubectl get nodes -l cloud.google.com/machine-family=n1 -o go-template='{{range .items}}{{.metadata.name}}{{"\n"}}{{end}}'
    
  • mitmproxy 抓包分析

    mitm.it

    https://mitmproxy.org/

  • glusterfs

    gluster volume info

  • jmap heap dump

    HOW TO CAPTURE HEAP DUMP? – JMAP, – XX:+HEAPDUMPONOUTOFMEMORYERROR

    JHAT – HEAP DUMP ANALYSIS

    切换到跑 java 进程所用的用户

    
    [[email protected] etl] $ jmap -dump:live,file=/tmp/kafka_hdfs_1_minute.bin pid
    [[email protected] etl] $ jmap -dump:live,file=/tmp/kafka_hdfs_15_minute.bin pid
    
    

    类似的工具还有 jps, jstack, jmap, etc.