Kubernetes污点和容忍


本文主要快速讲解Kubernetes的污点和容忍度,一句话总结:如果Pod能容忍某个节点上的污点,那么Pod就可以调度到该节点。

在K8S中,如果Pod能容忍某个节点上的污点,那么Pod就可以调度到该节点。如果不能容忍,那就无法调度到该节点。污点和容忍度就像谈恋爱的小情侣,你情我愿,女生知道男生的缺点,却依然选择容忍,这样他们可以生活在一起。如果女生容忍不了男生的缺点,那就没法生活在一起。

1、理论

1.1、污点和容忍度的概念

  • 污点(Taints):定义在节点上,用于拒绝Pod调度到此节点,除非该Pod具有该节点上的污点容忍度。被标记有Taints的节点并不是故障节点。
  • 容忍度(T...

Read more

Kubernetes节点与 Pod 亲和性


首先来个一句话总结:亲和性调度就像关系亲密的闺蜜,你去哪儿我也去哪儿。反亲和性调度就像赌气的两个孩子,赌气永远不在一起玩儿。

1、调度Pod的主要方式

Pod调度到指定Node的方式主要有4种:

  • nodeName调度:直接在Pod的yaml编排文件中指定nodeName,调度到指定name的节点上。
  • nodeSelector调度:直接在Pod的yaml编排文件中指定nodeSelector,调度到带有指定label的节点上。
  • 污点(Taints)和容忍度(Tolerations)调度:主要通过在Node节点上打污点,然后在Pod的yaml编排文件中配置容忍度,来实现调度。
  • 亲和-反...

Read more

Kubernetes集群调度介绍


Kubernetes调度

Scheduler 是 kubernetes 的调度器,主要的任务是把新创建 pod 分配到集群的节点上。

听起来非常简单,但有很多要考虑的问题:

  • 如何保证全部的节点调度的公平性?并不是所有节点资源配置一定都是一样的。
  • 如何保证每个节点都能被分配资源?
  • 集群资源如何能够被高效利用?
  • 集群资源如何才能被最大化使用?
  • 如何保证 Pod 调度的性能和效率?
  • 用户是否可以根据自己的实际需求定制自己的调度策略?
  • 公平:如何保证每个节点都能被分配资源
  • 资源高效利用:集群所有资源最大化被使用
  • 效率:调度的性能要好,能够尽快地对大批量的 pod 完成调度工作
  • 灵活:允...

Read more

Kubernetes节点与令牌管理


在 Kubernetes 中,使用 kubeadm 工具可以很方便地添加新的节点到现有的集群中。这个过程主要包括在主节点上生成一个加入命令,然后在新的节点上执行这个命令。以下是详细的步骤:

1. 在主节点上生成加入命令

首先,登录到你的 Kubernetes 主节点(通常是控制平面节点)。然后,使用 kubeadm 生成一个加入命令。这个命令包含了必要的令牌和证书哈希,使得新节点能够安全地加入集群。

kubeadm token create --print-join-command

这个命令会输出一个类似于下面的命令:

kubeadm join <control-plane-h...

Read more

Harbor镜像仓库部署


一、创建自签证书:

1.1、准备工作

  • 检查是否已经安装 openssl: openssl version
  • 创建存放证书目录并进入目录
[root@zuolaoshi ~]# mkdir /opt/harbor-ca-key
[root@zuolaoshi ~]# cd /opt/harbor-ca-key

1.2、创建秘钥

生成私钥

[root@zuolaoshi harbor-ca-key]# openssl genrsa -des3 -out server.pass.key 2048

# genra 生成RSA私钥
# -des3 des3算法
# -out server....

Read more

Kubernetes 概念介绍


K8S基础概念

一、集群基础:K8s的“骨架”

1. 控制平面(Control Plane,旧称Master)

  • 专业:集群的“大脑”,由API Server、etcd、Scheduler、Controller Manager等组件组成,负责决策、调度和监控整个集群。
  • 通俗:像公司的“总部”,有前台(API Server,处理所有请求)、档案库(etcd,存集群数据)、调度员(Scheduler,安排任务到合适节点)、督查组(Controller Manager,确保一切按计划执行)。

2. 节点(Node)

  • 专业:实际运行应用的服务器(物理机/虚拟机),包含Kubelet...

Read more

Kubernetes集群部署


一、集群部署准备

Kubernetes有三种安装方式:

1、通过yum进行安装

2、通过二进制文件进行安装

3、命令行工具kubeadm进行安装

centos7.9部署k8s集群

准备三台虚拟机

  • 2核4G(k8s-master),IP 192.168.8.119
  • 2核2G(k8s-node01),IP 192.168.8.120
  • 2核2G(k8s-node02),IP 192.168.8.121

所有服务器需要关闭防火墙和SElinux,进行时间同步操作

配置服务器基础环境(三台服务器)

# 安装dokcer
yum install -y yum-utils

# 配置docke...

Read more

什么是 Kubernetes


一、什么是Kubernetes

Kubernetes(简称 K8s),K8s 是云原生生态的核心组件,也是云技术最核心的内容。

k8s 是一个开源的容器编排平台。它的主要目标是自动化部署、扩展和管理容器化应用程序。

k8s 也是一个全新的基于容器技术的分布式架构领先方案,确切地说,Kubernetes是谷歌严格保密十几年的秘密武器Borg的一个开源版本。

Borg 是谷歌内部使用的大规模集群管理系统,它基于容器技术,目的是实现资源管理的自动化,以及跨多个数据中心的资源利用率的最大化。

1.png

环境不一致使得应用部署出现了各种问题,从而产生了Docker容器来解决应用部署的问题。而大集群上容...

Read more

Ansible高级语法


一.循环迭代(loop/with_items)

1.作用 主要是用于让管理节点在需要编写多个任务时的情况下仅用一个任务来进行循环迭代完成任务,使用loop关键字对目标进行迭代,在ansible相对比较旧的版本中使用的with_item平替,现在我的2.9.27仍然兼容,loop关键字内可以是列表、变量、字典等

2.案例演示 (1)遍历输出以列表形式定义的abc

[root@main zuolaoshi]# cat loop1.yaml 
---
- hosts: servera
    tasks:
      - name: test item
        debug: 
    ...

Read more

Ansible-Jinja2模板


Ansible-Jinja2模板

⼀、Ansible Jinja2模板背景介绍

我们希望能根据每⼀台服务器的性能去定制Nginx服务的启动进程。同时定制每⼀台Nginx 服务的响应头,以便于当某台服务出现问题时能快速定位到具体的服务器。要做这样的定制势必会导致⼀个问题,Nginx 在每台物理服务器上的配置⽂件都不⼀样,这样的配置⽂件如何管理呢?再使⽤copy 模 块去做管理显然已经不合适。此时使⽤Ansible 提供的另⼀个模板 (template) 功能,它可以帮助我们完美的解决问题。

⼆、 JinJa2 模板

要学会Ansible 中的模板(template)使⽤,前提我们必须要学会...

Read more