Jesse's home


  • 首页

  • 关于

  • 标签

  • 分类

  • 归档

kuberentes Deployment

发表于 2020-06-26 | 分类于 kubernetes |

kuberentes Deployment

介绍

之前学习过使用ReplicationController和ReplicaSet实现托管和更新pod容器.
客户端通过Service服务访问RC或者RS托管的一组pod.这也是Kubernetes典型的应用程序运行方式

假设这个时候应用程序需要更新,从v1版本更新到v2,有以下两种方式更新pod镜像:

  • 直接删除所有现有的pod,然后创建新的pod
  • 可以先创建新的Pod,并等待他们运行成功后,再删除旧的.

这2中方法各有优缺点.第一种方法将导致服务在端在时间内不可用.第二种方法要求应用程序同时支持2个版本对外提供服务.

本文具体介绍kubernetes上述两种更新方式.然后介绍通过手动方式,replicatController的更新方式.最后再引入deployment机制的用法介绍

阅读全文 »

kuberentes Ingress

发表于 2020-06-26 | 分类于 kubernetes |

kuberentes Ingress

介绍

K8s ingress 学习博客

ingress是暴露服务给外部客户端的另外一种方法.(前面我们学习过2种服务类型可以实现同样的目的:NodePort和LoadBalance)

但是这几种Service都有局限性:

  • ClusterIP的默认Serivce方式只能在集群内部访问。
  • NodePort:当有几十上百的服务在集群中运行时,NodePort的端口管理是灾难。

  • LoadBalance方式受限于云平台,且通常在云平台部署ELB还需要额外的费用。

所幸k8s还提供了一种集群维度暴露服务的方式,也就是ingress。ingress可以简单理解为service的service,他通过独立的ingress对象来制定请求转发的规则,把请求路由到一个或多个service中。这样就把服务与请求规则解耦了,可以从业务维度统一考虑业务的暴露,而不用为每个service单独考虑。

Ingress可以为多个Service提供服务,可以根据请求的HOST和PATH,将请求代理到相关的Service中.而且Ingres工作在HTTP层,可以实现7层代理特性,诸如:coockies和会话亲和力

阅读全文 »

kubernetes Service

发表于 2020-06-26 | 分类于 kubernetes |

kubernetes Service

介绍

Kubemetes服务(Service)是一种为一组功能相同的pod 提供单一不变的接入点的资源.客户端通过Service的IP 地址和端口号建立连接.

这些连接会被路由到提供该服务的任意一个pod上。 通过这种方式,客户端不需要知道每个单独的提供服务的pod的地址,这样这些pod就可以在集群中随时被创建或移除。

举个例子,考虑一个图片处理backend,它运行了3个副本。这些副本是可互换的——frontend不需要关心它们调用了哪个backend副本。然而组成这一组backend 程序的 Pod 实际上可能会发生变化,frontend客户端不应该也没必要知道,而且也不需要跟踪这一组 backend 的状态。Service定义的抽象能够解耦这种关联。


定义service

  • 通过kubectl expose 命令手动创建

例如为kubia这个replicaSet创建一个Service:

1
2
3
4
5
[root@k8s-master ~]# kubectl get rc
NAME DESIRED CURRENT READY AGE
kubia 4 4 4 2d9h
[root@k8s-master ~]# kubectl expose rc kubia --port=80 --target-port=8080 --name kubia-nginx
service/kubia-nginx exposed

kubectl expose 创建Service命令格式:

阅读全文 »

kubernetes volume

发表于 2020-06-26 | 分类于 kubernetes |

kubernetes volume

介绍

在学习docker时,学习了如何将宿主机上的文件系统挂载到容器当中,实现持久化存储,以及多个容器共享同一个文件目录.

在k8s中,我们也希望pod容器中的数据能够持久化存储.当一个容器因为故障或者其他原因需要删除时,我们希望新的容器能够在上一个容器结束的位置继续运行.

但是和docker一样,容器默认情况下删除后,所有该容器产生的数据都会消失.并且,虽然容器和宿主机共享CPU,网络,内存等资源,但是并不会共享文件存储.甚至同一个Pod中每个容器都有自己独立的文件系统,彼此互相隔离.

和docker容器一样,这就需要有一种存储卷能够挂载到Pod容器中,并脱离Pod的生命周期之外,将容器运行产生的数据保存在宿主机或者独立的外部存储卷中

阅读全文 »

kubernetes StatefulSet

发表于 2020-06-26 | 分类于 kubernetes |

kubernetes StatefulSet

介绍

​ 我们之前学习过ReplicaController(RC),ReplicaSet(RS),Deployment(deploy)等,这些资源均可以通过一个Pod模板创建多个Pod副本.这些pod除了IP和名字不一样外,其他均一模一样.

​ 如果pod模板关联到特定的持久卷声明,那么这些pod都共享同一个存储.这些pod是完全一样,也无所谓运行在哪个节点上.可以任何删除和替换.

​ 但是在实际场景中,并不是所有的应用都满足这样的要求.比如主从关系,主备关系,数据存储类应用等.这些场景每个pod都会在本地保留一份数据,而且与其他Pod有数据对应关系.如果pod一旦被删除,即便新创建个pod出来,实例之间的对应关系也会失败,从而导致应用失败.

为了支持有状态的应用,Kubernetes在Deployment的基础上扩展出了StatefulSet资源


StatefulSet 特点

statefulSet的特点即是有状态的应用特点:

  1. 稳定且需要唯一的网络标识符;

    • 这要求pod的主机名和IP地址永久不变,即使删除了一个pod,新创建的Pod也必须继承前一个Pod的主机标识符
  1. 稳定且持久的存储;

    • 可实现持久存储,新增或者减少pod,存储不会随之变化,并且删除一个pod时,关联到此pod的存储不会随之删除
  2. 要求有序,平滑的部署和扩展

    • 在Mysql等集群,要先启动主节点,然后启动从节点,第二从节点等等
  3. 要求有序,平滑的终止和删除

    • 同样,应用的终止和删除也是有顺序的,按照启动的逆序进行.例如Mysql启动时,先启动主节点,再启动从节点.终止的时候,先关闭从节点,再关闭主节点
  4. 有序的滚动更新

    • 在Mysql更新时,也应该先更新所有从节点.最后更新主节点
阅读全文 »

kubernetes 高级调度

发表于 2020-06-26 | 分类于 kubernetes |

kubernetes 高级调度

介绍

本章主要介绍pod的高级调度功能.主要涵盖2方面调度特性:

  • 节点污染和pod容忍度
  • 节点亲缘性

一.节点污染和pod容忍度

概念

节点污点: 该特性用于限制哪些Pod可以被调度到某一个节点.

pod容忍度:当一个Pod容忍某个节点的污点,这个pod才能被调度到该节点

默认情况下k8s集群中的master主节点就设置了污点,.这样才能保证只有控制面板等系统组件才能部署在主节点上.应用pod只能被调度到工作节点


显示节点污点信息

阅读全文 »

kubernets探针

发表于 2020-06-26 | 分类于 kubernetes |

kubernets探针

介绍

kubernetes一共有2种探针:

存活探针

就绪探针


就绪探针

就绪探针工作介绍

就绪探针会定期调用,检查特定的pod是否准备就绪接收客户端的请求.当容器启动时,会等待一个时间,然后执行第一次准备就绪检查.如果某个Pod没有通过探针探测,则会从服务中删除该pod,如果pod再次准备就绪,则会重新添加到Service

就绪探针确保客户端只与正常的Pod交互.


就绪探针的类型

  • Exec探针 . 使用command命令,如果命令结果返回0,则说明pod准备就绪.
  • HTTP GET探针. 向容器发送HTTP GET.通过响应状态码判断pod容器是否准备好
  • TCP socket探针.尝试连接Pod容器的TCP端口.判断pod容器的某个端口是否正常工作

阅读全文 »

使用kubeadmin安装kubernetes集群文档

发表于 2020-06-26 | 分类于 kubernetes |

使用kubeadmin安装kubernetes集群文档

集群环境

主机名 IP地址 节点角色 操作系统 Service网段 pod网段
k8s-m01 10.111.2.58 master CentOS7.6 10.100.0.0/20 10.96.0.0/12
k8s-n01 10.111.2.56 node CentOS7.6 10.100.0.0/20 10.96.0.0/12
k8s-n02 10.111.2.55 node CentOS7.6 10.100.0.0/20 10.96.0.0/12

服务器,网络要求

  • service和Pod网段可以任意指定,但是不能和物理机网段,或者当前其他物理网段有冲突

  • 服务器配置至少是2核2G

阅读全文 »

Linux 使用parted+LVM分区

发表于 2020-06-26 | 分类于 Linux-Basic , Skills |

Linux 使用parted+LVM分区

介绍

fdisk使用MBR分区硬盘,但是最大只能识别到2T的磁盘,如果单块磁盘超过2T则需要使用GPT分区格式


分区步骤

分区方法和fdisk大同小异

  • 1.parted 磁盘名 .进入交互式界面
1
2
3
4
[root@archiver-mysql ~]# parted /dev/vdb
GNU Parted 3.1
Using /dev/vdb
Welcome to GNU Parted! Type 'help' to view a list of commands.
  • 2.mklabel gpt 转换为gpt分区
1
2
3
(parted) mklabel gpt
Warning: The existing disk label on /dev/vdb will be destroyed and all data on this disk will be lost. Do you want to continue?
Yes/No? yes

3.mkpart分区

阅读全文 »

Zabbix 监控Dell服务器硬件

发表于 2020-06-26 | 分类于 监控 |

Zabbix 监控Dell服务器硬件

介绍

​ OMSA(全称Openmanage Server Administrator),是戴尔公司自主研发的IT系统管理解决方案。其通过提供web的图形用户界面和操作系统的命令行工具对本地和远程的服务器进行管理和监控。

OMSA和IDRAC类似,产品,功能也相似.Zabbix可以通过OMSA和IDRAC来监控Dell服务器的硬件.

由于Dell服务器官网下载OMSA工具非常慢,所以安装很难.如果可以的花,首选还是建议通过IDRAC来监控服务器硬件状态

我在另一篇笔记中介绍了如何通过IDRAC来监控Dell服务器硬件

阅读全文 »
1…678…21
Jesse

Jesse

求知若饥,虚心若愚.

209 日志
44 分类
41 标签
RSS
© Tue Jun 12 2018 08:00:00 GMT+0800 (GMT+08:00) — 2021 Jesse