Docker 再学习 (3) 资源限制

Submitted by Lizhe on Mon, 01/28/2019 - 17:02

1. -m 或者 --memory 设置内存使用限制

2. --memory-swap 设置内存 + swap 的使用限制

docker run -m 200M --memory-swap=300M centos

上面的命令允许容器最多使用 200M 内存和 100M 的 swap , 默认值是 -1 , 表示没有限制

看下面的例子

我们为虚拟机分配了一共300M内存 ( 200M 物理内存, 100M 虚拟内存 ) 

然后使用压力测试工具, 测试申请 280M 内存, 工作正常

Kubernetes 1.13 完全入门 (23) RABC

Submitted by Lizhe on Mon, 01/28/2019 - 13:49

Role-Based Access Control, 即 RBAC

RBAC 使用 rbac.authorization.k8s.io API Group实现授权决策,允许管理员通过Kubernetes API动态配置策略

Role 和 Cluster role

每个角色代表一组权限规则, 下面来看两个例子

1. 对 namespace中的资源定义角色 ( 一组规则权限 )

下面代码首先定义了 kind 为 role , 使用 api 为 rbac.authorization.k8s.io

然后在 default namespace 下定义了一个名叫 pod-reader 的 role

使用规则为 掉 pods 资源有get watch list 权限

Kubernetes 1.13 完全入门 (22) traefik

Submitted by Lizhe on Sun, 01/27/2019 - 21:07

 

首先我们来尝试一下不使用helm的安装方式

先从git上clone整个项目, 然后 cd 到 examples 下的 k8s

git clone https://github.com/containous/traefik.git

cd /root/k8sinstall/traefikinstall/traefik/examples/k8s

[root@k8s-master k8s]# ls

cheese-default-ingress.yaml  cheese-ingress.yaml   cheeses-ingress.yaml     traefik-ds.yaml    ui.yaml

cheese-deployments.yaml      cheese-services.yaml  traefik-deployment.yaml  traefik-rbac.yaml  

Kubernetes 1.13 完全入门 (20) Helm 权限配置

Submitted by Lizhe on Sat, 01/26/2019 - 19:04

说真的, 一开始写这个专题的时候, 真没想到能写到 20 章节

下面这个问题是在使用helm安装ingress的时候遇到的

具体错误

[root@k8s-master ingressinstall]# helm install --name nginx-ingress --set rbac.create=true stable/nginx-ingress

Error: release nginx-ingress failed: namespaces "default" is forbidden: User "system:serviceaccount:kube-system:default" cannot get resource "namespaces" in API group "" in the namespace "default"

 

解决办法:

Docker 再学习 (2) 镜像

Submitted by Lizhe on Thu, 01/24/2019 - 16:59

最初使用docker的时候我一直认为像 centos , Ubuntu 这样的os镜像是最基础的镜像

直接下载CentOS镜像, 启动镜像的bsh进程, 然后把CentOS镜像当做虚拟机使用, 在13年的时候这种用法不止我一个人

然后就引出了著名的 docker 僵尸进程 问题, 在docker的官网上有不少老外讨论这个问题

甚至有人为了解决这个问题制作了 " 带有 带进程回收功能的零号进程 的CentOS " , 这样base这个镜像或者从这个镜像生成的Container就都可以回收进程了

当时官方给出的回答是 " 单一容器, 单一进程 " , 也就是说每个容器只启动一个进程, 不要把容器当成虚拟机使用, 就不会出现这个问题

现在回头来看, 每当一个新技术出现的时候, 总是存在一些基于老思想的对新技术的错误理解造成的误用

例如我的第一个React项目里, 所有的css文件都被之前的人放到了一个叫css的文件夹中, 而不是随各个module分散放置的

 

今天我们要讨论一个名叫 scratch 的镜像,这个镜像还不到2个kb, 也就是说它根本不是一个"操作系统", 要知道最小的centos镜像大小也在200M左右

Docker 再学习 (1)

Submitted by Lizhe on Thu, 01/24/2019 - 16:34

自从2013年接触docker以来已经过去了6年, 最近在学习Kubernetes的时候发现自己有好多docker新特性不知道

是时候重新深入学习再学习一遍docker了

1. 容器规范

除了docker之外还有rkt ( CoreOS ) 等其他容器. 为了保证不同容器之间能兼容, 若干公司成立了Open Container Initiative ( OCI ) 组织

目前有 runtime spec 和 image format spec 两个规范, 不同组织和厂商开发的容器能够在不同的runtime上运行, 保证了可移植性

2. runtime

目前主流的三种runtime有 lxc , runc 和 rkt

lxc 是linux上老牌的容器runtime , docker 最初也是使用lxc作为runtime的

runc 是docker自己开发的容器runtime , 符合oci规范, 也是docker现在正在使用的runtime

rkt 是CoreOS开发的容器runtime, 符合oci规范, 能够运行docker容器

3. 容器管理工具

Hybris (1)

Submitted by Lizhe on Mon, 01/21/2019 - 14:24

1. SAP Hybris Platform 运行在JavaEE容器内, 例如tomcat

2. platform和extensions都运行在springmvc环境

3. custom extension 可以提供html ui 也可以直接提供restful 接口

20190121023553

AWS 学习笔记 (6) Amazon DynamoDB

Submitted by Lizhe on Fri, 01/18/2019 - 10:58

DynamoDB 是一种NoSQL数据库服务, 

1. 可扩展

创建表时, 只需要指定所需要的吞吐量即可. DynamoDB会为你设置的吞吐量分配专用的资源以满足性能要求, 并自动将数据分去到足够多的服务器以满足请求容量

2. 自动存储扩展

用户在表中存储的数据量没有限制, 随着写入量的提升会自动分配更多存储空间

3. 完全分布式的无共享架构

可以水平扩展, 并且能够在数百台服务器中无缝扩展单个表

4. 内置容错能力

5. 高效索引

6. 强一致性, 原子计数器

 

201901181109