kubernetes笔记

1.1.kubernetes并不是为了解决部署方便性的,k8s的目的是为了解决怎么在不可靠的硬件上提供可靠的服务的,为了解决部署一致性的问题的,

HostAliases:定义Pod的hosts文件(比如:/etc/hosts)里的内容。
如果只是改pod中/etc/hosts的内容的话,pod被删除重建后,数据就会丢失
使用方法:

apiVersion: v1
kind: Pod
...
spec:
  hostAliases:
  - ip: "10.1.2.3"
    hostnames:
    - "foo.remote"
    - "bar.remote"
...

pod中的容器间pidNamespace的方法:https://www.cnblogs.com/jiangbo44/p/14590289.html
hostIPC:直接与宿主机上的进程进行IPC通信(进程间通信)

postStart和preStop实现了对容器启动和终止时的介入,使用方法如下:


apiVersion: v1
kind: Pod
metadata:
  name: lifecycle-demo
spec:
  containers:
  - name: lifecycle-demo-container
    image: nginx
    lifecycle:
      postStart:
        exec:
          command: ["/bin/sh", "-c", "echo Hello from the postStart handler > /usr/share/message"]
      preStop:
        exec:
          command: ["/usr/sbin/nginx","-s","quit"]

Downward API:可以让Pod里的容器能够直接获取到这个Pod API对象本身的信息
livenessProbe:通过探针机制判断程序是否存活,如果未存活就进行重启,相应的RESTARTS会+1

单个pod的deployment和一个pod的区别:
在宿主机宕机时,deployment会保证该pod被部署到其他node上,来保证满足副本数
而一个pod则只会只会出现在你所定义的那台宿主机上,而不会出现在其他宿主机上

Deployment和ReplicaSet和Pod的关系图:
在这里插入图片描述

StatefulSet:
这个控制器的主要作用之一就是使用pod模版创建pod的时候,会对pod进行编号,并按照编号顺序逐一完成创建工作。而当StatefulSet的“控制循环”发现pod的实际状态与“期望状态”不一致的时候,需要新建或者删除Pod进行“调谐”的时候,它会严格按照这些pod的编号顺序完成相应的工作。
首先StatefulSet的控制器直接管理的是Pod。statefulSet不同Pod的实例,不想ReplicaSet那样都完全一样,而是有细微区别的。比如每个pod的hostname,名字都是不同的、携带了编号的。而statefulSet区分这些实例的方式,就是通过在Pod的名字加上事先约定好的编号。

DaemonSet
主要作用:
1.各种网络插件的Agent组件都必须运行在每一个节点上,用来处理这个节点上的容器网络
2.各种存储插件的Agent组件都必须运行在每一个节点上,用来在这个节点上挂载远程存储目录,操作容器的Volume目录
3.各种监控组件和日志组件也都必须运行在每一个节点上,负责这个节点的监控信息和日志收集

持久化存储
指这个宿主机的目录具备持久性,即这个目录里的内容既不会因为容器的删除而被清理掉,也不会跟当前宿主机进行绑定。这样当容器被重启或者在其他节点重建后,它仍然能够通过挂载这个volume访问到这些内容。
默认存储路径:/var/lib/kubelet/pods/<Pod 的 ID>/volumes/kubernetes.io~<Volume 类型 >/<Volume 名字 >

实际上,你绝不应该把一个宿主机的目录当作PV来用。这是因为这种本地目录的存储行为完全是不可控的,它所在的磁盘随时有可能被应用写满,甚至造成整个宿主机宕机。而且,不同的本地目录之间也缺乏哪怕最基本的io隔离机制。
所以一个Local Persisent Volume对应的存储介质,一定是一块额外挂载在宿主机的磁盘或者块设备("额外"的意思是它不应该是宿主机根目录所使用的主硬盘)

通过pvc和pv才能实现持久化存储,例如localhost不能实现持久化存储,因为当pod删除后,数据就会被删除。
必须使用Local Persisent Volume来进行持久化存储,storageClass来为定义模版,根据模版生成pv,然后pvc匹配pv。

HostPath和LocalVolume的区别:
HostPath: 卷本身不带有调度信息,如果想对每个pod固定在某个节点上,就需要对pod配置nodeSelector等调度信息; LocalVolume: 卷本身包含了调度信息,使用这个卷的pod会被固定在特定的节点上,这样可以很好的保证数据的连续性。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值