0%

LVM操作

传统分区使用固定大小分区,重新调整大小十分麻烦。但是,LVM可以创建和管理“逻辑”卷,而不是直接使用物理硬盘。可以让管理员弹性的管理逻辑卷的扩大缩小,操作简单,而不损坏已存储的数据。可以随意将新的硬盘添加到LVM,以直接扩展已经存在的逻辑卷。LVM并不需要重启就可以让内核知道分区的存在。

LVM使用分层结构,如下图所示。

图中顶部,首先是实际的物理磁盘及其划分的分区和其上的物理卷(PV)。一个或多个物理卷可以用来创建卷组(VG)。然后基于卷组可以创建逻辑卷(LV)。只要在卷组中有可用空间,就可以随心所欲的创建逻辑卷。文件系统就是在逻辑卷上创建的,然后可以在操作系统挂载和访问。

Read more »

Service

6.1 Service APIs的概要

Kubernetes的Service是为一组功能相同的Pod提供单一不变的endpoint的resource。

Service APIs:给cluster上的container提供endpoint,发现label一致的contianer。

  • Service
    • ClusterIP
    • ExternalIP
    • NodePort
    • LoadBalancer
    • Headless
    • ExternalName
    • None-Selector
  • Ingress(提供L7 loadBalancing)
Read more »

k8s-Job&CornJob

(翻译自k8sガイドブック)

Job

Job:コンテナを利用して一度限りの処理を実行させるリソースです。

ReplicaSet和Job的不同点

  • Job: Pod の停止が正常終了と期待される用途に向いています
  • ReplicaSet: Pod の停止は予期せぬエラー

创建Job

例子:创建sleep 60s的Job。(虽然和ReplicaSet一样,可以明确的赋予label和selector,由于k8s会自动生成unique的uuid,因此在Job中并不推荐明确赋予。)sample-job.yaml

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
apiVersion: batch/v1
kind: Job
metadata:
name: sample-job
spec:
completions: 1
parallelism: 1
backoffLimit: 10
template:
spec:
containers:
- name: tools-container
image: amsy810/tools:v2.0
command: ["sleep"]
args: ["60"]
restartPolicy: Never
1
2
#创建job
kubectl apply -f sample-job.yaml

kubectl get进行Job的确认,不同与ReplicaSet等表示READY的container数量,Job表示正常结束的Pod数(COMPLETIONS)。而且Job和ReplicaSet一样,是创建Pod的资源

Read more »

k8s-Authorization

Authorization鉴权

RBAC授权模式

RBAC(Role-Based Access Control)基于角色的访问控制,拥有以下的优势:

  • 对cluster中的resource资源和非资源均有完整的覆盖
  • 整个RBAC完全由几个API对象完成,和其他API对象一样,可以用kubectl或者API进行操作。
  • 可以在运行时进行调整,无需重启API server

RBAC的API 资源对象

RBAC API声明了4个最高级别的类型:RoleClusterRoleRoleBindingClusterRoleBinding,4种对象类型都可以使用kubectlAPI进行操作。

1613959572193

需要注意的是,k8s并不会提供用户管理,那么User、Group、ServiceAccount指定的用户又是从哪里来的呢?

k8s组件(kubectl、kube-proxy)或是其他自定义的用户在向CA申请证书时,需要提供一个证书请求文件,例如:

Read more »

DI容器

了解设计的第一步:模型

理解一个模型的关键在于,要了解这个模型设计的来龙去脉,知道它是如何解决相应的问题。

1613203014663

耦合的依赖

DI(Dependency Injection)容器,解决的是组件创建和组装的问题。

例子:假设有一个AritcleService提供根据标题查询文章的功能。当然,数据需要持久化的,所以,这里还有一个ArticleRepository,用来与持久化数据打交道。

  • repository层:和DB进行连接
  • service层:调用repository
  • 调用层:操作全体的层
Read more »

一个HTTP报文是由“header+body”组成的

HTTP的Body

数据类型与编码

HTTP取了MIME其中的一部分,用来标记body的数据类型,这就是我们平常总能听到的“MIME type”。

HTTP使用MIME type来标记数据类型

MIME把数据分成了八大类,每个大类下再细分出多个子类,形式是“type/subtype”的字符串

Read more »

HTTP报文

报文结构

HTTP协议也是与TCP/UDP类似,也需要在实际传输的数据前附加一些头数据,它是一个“纯文本”的协议,头数据是ASCII码的文本。

HTTP协议的请求报文和响应报文的结构基本相同,由三大部分组成:

  1. 起始行(start line):描述请求或响应的基本信息;
  2. 头部字段集合(header):使用key-value形式更详细地说明报文;
  3. 消息正文(entity):实际传输的数据,它不一定是纯文本,可以是图片、视频等二进制数据。
Read more »

重新编译kubeadm,修改默认证书时间后,安装k8s

1. 重新编译kubeadm

1.1 下载源码

1
git clone https://github.com/kubernetes/kubernetes.git

1.2 修改源代码-cert.go

  • 文件:staging/src/k8s.io/client-go/util/cert/cert.go
  • NewSelfSignedCACert 方法,签发以下证书,且默认为10年有效期:
    • front-proxy-ca.crt
    • front-proxy-client.crt
    • ca.crt
    • etcd/ca.crt
    • etcd/peer.crt
Read more »

k8s-Application Lifecycle Management

Rolling Updates and Rollbacks

Rollout Command

  • kubectl rollout status: to see the revisions and history of rollout.

    1
    kubectl rollout status deployment/myapp-deployment
  • kubectl rollout history:show the revisions and history of our deployment.

    1
    kubectl rollout history deployment/myapp-deployment
Read more »

k8s-Security

Kubernetes Security Primitives

Secure Hosts

  • Password based authentication disabled
  • SSH Key based authentication
Read more »