golang程序打包成容器镜像 ./app: not found错误

在golang程序打包成容器镜像过程中,出现了一个 ./app: not found错误,app是编译好的执行程序,文件是存在的,基础镜像用的是alpine镜像。想来应该是编译过程的问题,后来加了CGO_ENABLED=0成功解决此问题。

继续阅读golang程序打包成容器镜像 ./app: not found错误

使用fileload解决android sdk ndk avd无法下载问题

在国内,无法下载android studio, android sdk, adnroid ndk, android avd,即使搭梯子,因为网络不稳地,经常出现SSL peer shut down incorrectly之类的错误。

所以我专门写了一个下载器,每次去下载文件的一部分,例如1MB大小,这样网络波动对整体的下载进度影响就不大了。以安卓ndk为例

继续阅读使用fileload解决android sdk ndk avd无法下载问题

golang多线程分块下载器

在使用golang写一个多线程下载器的过程中,发现下载的结果是相同的,首先排除引用传递,确定是值传递,逐步排查,最后确定是http.Request的Header对象是相同的。也就是说,在对象拷贝过程中,对象的部分子元素是共享的。最后写了一个深度拷贝解决这个问题,深度拷贝一般思路是序列号和反序列化,所以gob json等都可以的。

下载器源码和文档 github

kubernetes dashboard 安装流程

参考:

访问设置相关:https://github.com/kubernetes/dashboard/wiki/Accessing-Dashboard—1.7.X-and-above

用户相关:https://github.com/kubernetes/dashboard/wiki/Creating-sample-user

https无法访问的问题:https://github.com/kubernetes/dashboard/issues/2954

说明

NOTE: Dashboard should not be exposed publicly using kubectl proxy command as it only allows HTTP connection. For domains other than localhost and 127.0.0.1 it will not be possible to sign in. Nothing will happen after clicking Sign in button on login page.

通过 kubectl proxy暴露的控制面板,如果不是从localhost或127.0.0.1访问的话,点击登陆按钮不会有任何反应……

继续阅读kubernetes dashboard 安装流程

Unable to update cni config: No networks found in /etc/cni/net.d

17666 cni.go:171] Unable to update cni config: No networks found in /etc/cni/net.d
17666 kubelet.go:2125] Container runtime network not ready: NetworkReady=false reason:NetworkPluginNotReady message:docker: network plugin is not ready: cni config uninitialized

issue讨论

之前的文章

去掉$KUBELET_NETWORK_ARGS是一个治标不治本的解决办法

可能是原因之一是:国内无法Pull quay.io/coreos/flannel:v0.10.0-amd64这个镜像

具体表现为:/etc/cni/net.d/目录下没有文件或根本没有这个目录

继续阅读Unable to update cni config: No networks found in /etc/cni/net.d

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踩过的坑

Ethereum以太坊区块链应用实践

以太坊(英语:Ethereum)是一个开源的有智能合约功能的公共区块链平台。通过其专用加密货币以太币(Ether,又称“以太币”)提供去中心化的虚拟机(称为“以太虚拟机”Ethereum Virtual Machine)来处理点对点合约。

——维基百科《以太坊

以太坊官网:https://www.ethereum.org/

本文基于以太坊平台,实现一个简单的私有链应用。

重要参考:

https://github.com/sunnyFrank/Dapp-development

https://g2ex.github.io/2017/09/12/ethereum-guidance/

测试开发环境:Ubuntu 16.04

目录:

一、环境搭建

二、建立和测试私有链

继续阅读Ethereum以太坊区块链应用实践