从Spring Cloud到Istio,架构升级(更新中……)

架构从SpringCloud升级到Istio

优势

  1. 自动伸缩
  2. 健康检查和自愈能力
  3. kubernetes生态好,解决方案多;监控告警、网络等都有成熟方案和插件,有问题也很容易找到解决方案
  4. 不局限于docker,同样也支持RKT(当前docker为ce版本)
  5. 官方自带dashboard,可进行简单操作,大部分操作可不必使用命令行
  6. Spring Cloud限定了开发语言为Java,Kubernetes天然支持异构
  7. 单独管理服务的CPU、内存、磁盘和网络

前置条件

境外代理

与kubernetes相关所有软件安装包、容器镜像都在google的服务器,因为GFW的存在,需要翻墙访问。

[阅读全文]

kubeadm安装k8s集群

coredns是k8s-dns的替代者,Kubernetes 1.11的默认选项

关于CentOS科学上网

安装shadowsocks

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
# 先安装扩展包,方便安装后面的pip等:
sudo yum -y install epel-release

# 安装pip
sudo yum -y install python-pip

# 通过pip安装shadowsocks
sudo pip install shadowsocks

# 启动测试
sslocal -c shadowsocks.json

# 开机服务

配置文件:shadowsocks.json

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
{
    "server":"代理地址",
    "server_port":代理端口,
    "local_port":1080,
    "password":"密码",
    "timeout":600,
    "method":"aes-256-cfb",
    "fast_open": false,
    "workers": 4
}

安装Docker

1

转socks为http代理

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
# 安装
sudo yum install -y privoxy

# 编辑配置文件
sudo vim /etc/privoxy/config
# 添加配置socks代理信息
forward-socks5  /       127.0.0.1:1080  .

# 启用服务
sudo systemctl enable privoxy
# 启动程序
sudo systemctl start privoxy

为docker配置代理

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
# 编辑配置文件
sudo vim /etc/systemd/system/docker.service.d/http-proxy.conf

# 添加如下内容
[Service]
Environment="HTTP_PROXY=http://192.168.1.201:8118" "NO_PROXY=localhost,127.0.0.1,docker.io,docker.com"

# 应用生效
sudo systemctl daemon-reload
sudo systemctl restart docker

添加k8s仓库

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
# 添加仓库
sudo vim /etc/yum.repos.d/kubernetes.repo

[kubernetes]
name=Kubernetes
baseurl=https://packages.cloud.google.com/yum/repos/kubernetes-el7-x86_64
enabled=1
gpgcheck=1
repo_gpgcheck=1
gpgkey=https://packages.cloud.google.com/yum/doc/yum-key.gpg https://packages.cloud.google.com/yum/doc/rpm-package-key.gpg

# 查看源提供的版本
yum list kubeadm

为k8s仓库配置代理

1
2
3
4
5
# 为k8s的仓库配置代理
sudo vim /etc/yum.repos.d/kubernetes.repo

# 添加如下内容
proxy=http://127.0.0.1:8118

离线安装kubeadm/kubectl/kubelet

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
# 下载安装包和其依赖包
sudo yum install --downloadonly --downloaddir=. kubelet-1.14.3-0 kubeadm-1.14.3-0 kubectl-1.14.3-0

# 强制忽略依赖安装
rpm -ivh --force --nodeps *.rpm

# 查看需要使用哪些镜像
kubeadm config images list
参考:
https://www.jianshu.com/p/f9a54e553ce4
https://www.cnblogs.com/xieyifeng/p/9383236.html

启用systemd

1
2
3
4
5
6
7
# 修改docker配置文件:
sudo vim /etc/docker/daemon.json

# 添加内容
"exec-opts" : ["native.cgroupdriver=systemd"]

# 重启docker生效

群集初始化

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
# 这里貌似必须要root
$ sudo kubeadm init \
   --kubernetes-version=v1.14.0 \
   --pod-network-cidr=10.244.0.0/16 \
   --apiserver-advertise-address=10.151.30.57 \

# 后续工作
mkdir -p $HOME/.kube
sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config
sudo chown $(id -u):$(id -g) $HOME/.kube/config

加入集群

1
2
kubeadm join 192.168.1.201:6443 --token <token> \
    --discovery-token-ca-cert-hash sha256:<ca-cert-hash>

安装pod网络(on master)

1
2
$ wget https://raw.githubusercontent.com/coreos/flannel/master/Documentation/kube-flannel.yml
$ kubectl apply -f  kube-flannel.yml

集群重置

1
kubeadm reset

TODO 遗留问题:安装网络时,无法使用走代理,暂时通过docker pull先下载镜像解决

1
2
3
4
5
6
7
# 以下不能正常走代理,不知道什么原因
wget https://raw.githubusercontent.com/coreos/flannel/master/Documentation/kube-flannel.yml
kubectl apply -f kube-flannel.yml

# 临时解决办法:
docker pull quay.io/coreos/flannel:v0.11.0-amd64
再执行就好了

内网其他机器使用代理

应当是不需要了,因为rpm和docker镜像已经下载好了

[阅读全文]
kubeadm  k8s 

shell快捷键

删除

  • ctrl + d 删除光标所在位置上的字符相当于VIM里x或者dl
  • ctrl + h 删除光标所在位置前的字符相当于VIM里hx或者dh
  • ctrl + k 删除光标后面所有字符相当于VIM里d shift+$
  • ctrl + u 删除光标前面所有字符相当于VIM里d shift+^
  • ctrl + w 删除光标前一个单词相当于VIM里db
  • ctrl + y 恢复ctrl+u上次执行时删除的字符
  • ctrl + ? 撤消前一次输入
  • alt + r 撤消前一次动作
  • alt + d 删除光标所在位置的后单词

移动

  • ctrl + a 将光标移动到命令行开头相当于VIM里shift+^
  • ctrl + e 将光标移动到命令行结尾处相当于VIM里shift+$
  • ctrl + f 光标向后移动一个字符相当于VIM里l
  • ctrl + b 光标向前移动一个字符相当于VIM里h
  • ctrl + 方向键左键 光标移动到前一个单词开头
  • ctrl + 方向键右键 光标移动到后一个单词结尾
  • ctrl + x 在上次光标所在字符和当前光标所在字符之间跳转
  • alt + f 跳到光标所在位置单词尾部

替换

  • ctrl + t 将光标当前字符与前面一个字符替换
  • alt + t 交换两个光标当前所处位置单词和光标前一个单词
  • alt + u 把光标当前位置单词变为大写
  • alt + l 把光标当前位置单词变为小写
  • alt + c 把光标当前位置单词头一个字母变为大写
  • ^oldstr^newstr 替换前一次命令中字符串

历史命令编辑

  • ctrl + p 返回上一次输入命令字符
  • ctrl + r 输入单词搜索历史命令
  • alt + p 输入字符查找与字符相接近的历史命令
  • alt + > 返回上一次执行命令

其它

  • ctrl + s 锁住终端
  • ctrl + q 解锁终端
  • ctrl + l 清屏相当于命令clear
  • ctrl + c 另起一行
  • ctrl + i 类似TAB健补全功能
  • ctrl + o 重复执行命令
  • alt + 数字键 操作的次数
shell  linux 

解决MySQL报too many open files的问题

uat环境一直有偶尔报too many open files,改过ulimit,已经从默认值改到了102400,仍然没有解决 后来网上查,发现其实在MySQL内部也有这个限制,官方文档描述:https://dev.mysql.com/doc/refman/5.7/en/server-system-variables.html#sysvar_open_files_limit

[阅读全文]

mac分区说明

此次重装Mac mini,格式化磁盘时,第一次遇到mac上不同的分区方案,记录下来:

  • guid分区和apple分区是启动OS X用的
  • guid是启动intel芯片的
  • apple是启动power pc芯片的
  • 主引导区是启动windows的分区

现在Mac都是是Intel芯片,所以需要选择guid分区

[阅读全文]

Travis使用AWS短信实现构建部署完成后短信通知

使用scp将构建完成的文件上传至服务器,部署后使用AWS的SNS发短信,考虑过的方案:

  • 官方仅提供两种语言的SDK:Java和.Net,而且还要写代码,所以放弃
  • Travis的通知并不支持sms和接口调用,只能放弃

后面查AWS的SNS文档,找到有关于AWS CLI的内容,联想到这可能是个更好方案,跟着官方文档安装:

[阅读全文]
travis  AWS  SNS 

Travis初次使用的坑

初次试用Travis,最开始都很顺利。 使用github账号登录,同步项目,测试构建,甚至构建go和做npm都异常的顺利,当然这些都跟做过一些功课,以及自己对Jenkins已经很熟练应当是有很大关系的。

[阅读全文]
travis  CI 

golang环境配置

环境配置

  • GOROOT:go 的安装目录,设置这个环境变量自定义 go 路径
  • GOPATH:go 的工作目录(项目目录),编译或运行时从这个环境变量中去查找包、依赖

自定义GOPATH,以zsh为例

[阅读全文]
golang