kubernetes
somyjun
十多年嵌入式系统,网络通信,虚拟化,云计算相关产品的软件设计开发
展开
-
CI/CD平台,部署中空格引发的两个血案
1. 前端static部署 微服务前端js,编译打包成的tar包,在部署阶段,需要解压缩到与这个微服务对应的location,这个过程分别在流水线的“代码打包”和“部署”这两个阶段完成。 代码打包: 通过下面的命令完成: cd xxx-yyy&& yarn --update-checksums && yarn && yarn build_test &...原创 2021-02-19 16:08:11 · 283 阅读 · 0 评论 -
k8s部署环境,蓝绿发布的两种实现方法
蓝绿发布,是部署过程中并不停止掉老版本,而是直接部署一套新版本,等新版本运行起来后,再将流量全部切换到新版本上。新版本验证通过,删除老版本,否则流量重新切换到旧版本。过程中新旧两版本同时部署,需要考虑资源的使用情况。 如下图所示,是一种基于现在微服务架构,来实现蓝绿发布。微服务以代理Service提供对外服务,Service通过Selector的标签选择其代理的微服务。微服务通过环境变量发现Service,然后在Eureka上注册Service的服务地址和端口。Service选...原创 2021-01-21 17:09:15 · 2254 阅读 · 1 评论 -
基于k8s Deployment和API网关实现的滚动发布
滚动发布基于Kubernetes原生的Deployment具备的滚动更新、多版本管理和API网关负载均衡能力实现。滚动更新的好处是显而易见的,比如,在升级刚开始的时候,集群里只有1个新版本的容器。如果这时,新版本容器有问题(环境或者程序本身有bug)启动不起来,那么“滚动更新”就会停止。而在这个过程中,由于应用本身还有两个旧版本的容器在线,所以服务并不会受到太大的影响。新版本部署好,测试验证如果不成功,通过回滚机制,可以快速滚动回退到最新的历史版本。 API网关不支持流量转移,所...原创 2021-01-21 17:05:04 · 409 阅读 · 0 评论 -
应用容器化,微服务架构,以及基础架构的变迁
1. 什么是容器2.基础架构变迁(资源角度)3.基础架构变迁 (服务角度)原创 2020-08-27 15:59:07 · 263 阅读 · 0 评论 -
API访问etcd, kv对增删改查
package etcdimport ( "context" "fmt" "github.com/golang/glog" "go.etcd.io/etcd/clientv3" "go.etcd.io/etcd/pkg/transport" "sync" "time")type ThreadSafeEtcd struct { client *clientv3.Client lock sync.Mutex certdir string endpoints []strin.原创 2020-08-06 16:35:20 · 418 阅读 · 0 评论 -
cicd平台,升级gitlab带来的一些配置、接口变化
gitlab软件版本需要从GitLab Community Edition8.9.11升级到GitLab Community Edition12.10.11,记录下本次升级所做的改动以及遇到的坑。 涉及到的各个服务见下图:1. 版本跨度太大,没有采用软件更新升级的方式;同样也没有采用备份/还原的方式。2. 安装部署了一新的gitlab服务器,从旧gitlab服务器迁移项目到新gitlab服务器。3. 更新"通过API方式访问gitlab"的认证方式和接口版本...原创 2020-07-16 15:00:30 · 431 阅读 · 0 评论 -
k8s环境下etcd分布式数据库集群配置,数据存储与发现
1. 什么是etcd? etcd是一个分布式一致性键值存储系统,用于共享配置和服务发现, etcd基于raft协议实现数据同步(K-V数据),集群由多个节点组成。 raft协议理解起来相比paxos并没有简单到哪里,因为都很难理解,所以我简单描述一下: 每次写入都是在一个事务(tx)中完成的。 一个事务(tx)可以包含若干put(写入k-v键值对)操作...原创 2019-06-25 16:13:04 · 1207 阅读 · 0 评论 -
进程 vs 容器 vs 虚拟机
进程: 互相隔离的虚拟地址空间 运行中的程序,由操作系统调度执行 共享操作系统管理的资源(内存、网络栈、I/O) 版本管理、可移植性差容器: 命名空间实现资源隔离(UTS、IPC、PID、Network、Mount、User) 运行中的镜像,以服务的形式呈现,由操作系...原创 2019-04-19 17:25:25 · 291 阅读 · 0 评论 -
kubernetes容器底层网络要求
容器可能部署在云上(公有云或者私有云),也可能部署在数据中心物理宿主机上。云的场景涉及到虚拟网络,数据中心场景就是传统的物理网络,这些环境的网络架构以及底层技术有着很大的差异,这一节分析下。 不管是云的场景还是传统的数据中心场景,部署容器的宿主机之间的网络,抽象归纳起来需要具备下面的两个条件:可以通过二层交换机、或者三层路由器互相访问。 源容器的“原始IP包”,经...原创 2019-03-22 17:35:22 · 771 阅读 · 0 评论 -
Calico网络方案
Fannel纯三层路由的方式实现不同宿主机间的容器通信,这种方式工作的前提是宿主机之间是二层连通的。需要注意的是,宿主机之间二层不连通的情况也是广泛存在的,这就不得不提到calico网络方案了。Calico网络方案同时解决了宿主机二层连通和不连通的的场景下,容器之间通过纯三层路由通信的问题。 Fannel通过etcd和宿主机上的fanneld维护路由信息,calico使用了BG...原创 2019-03-22 14:39:29 · 3603 阅读 · 0 评论 -
Flannel网络方案
这里讲一下Flannel网络方案,梳理下其工作方式,各个环节配置,以及转发包流程。Fannel项目是CoreOS公司主推的容器网络方案。目前实现的技术有三种,分别是:UDP Vxlan Host-GW1. UDP方式 Udp方式是Flannel项目最早支持的,也是性能最差的一种。目前已经被弃用,不过,这种方式最直接、也是最容易理解的跨主机实现。...原创 2019-03-22 11:48:37 · 1757 阅读 · 0 评论 -
Docker容器及kubernetes网络
本文讲述下docker容器以及k8s部署环境下,与网络相关的知识。读者需要对tcp/ip网络,交换/路由,网络虚拟化以及容器技术需要有一定的基础。1. 浅谈容器网络 容器container,就是一个被隔离的环境(Namespace)下,同时限制了访问权限(Cgroup)的进程运行时,它配置了属于自己的网卡,网络栈,就像物理机一样,可以访问外部网络,同时外...原创 2019-03-22 11:20:59 · 1054 阅读 · 4 评论