Kubernetes-01-基础概念篇 基础组件&搭建一个K8S集群

2023-09-11 19:21:33

K8S重要技术内容主要涵盖:集群架构、容器化应用部署、ScaleUp/Down、滚动更新、监控检查、集群网络、数据管理、监控与日志

一、基础名词

1.Cluster

Cluster是计算、存储、网络资源的集合,利用资源运行各种基于容器的应用

2.Master

Master是Cluster的核心,负责调度、控制。
高可用版本,一般至少两个Master

3.Node

Node负责运行容器应用
由Master管理,Node负责监控和汇报容器状态
根据Master的要求管理容器的生命周期

4.Pod

Pod是K8S最小的工作单元,一个Pod会包含一个或多个容器Container
Pod中的1个或多个容器会被Master调度到一个Node上面运行

Pod的特点
1)可管理性
K8S中,Pod以最小的单元进行调度、扩展、共享资源、管理生命周期

2)通信和资源共享
同一个Pod中的容器,网络共享(拥有相同的IP和Port)、网络互通(等同于本地访问)、存储共享(等同于本地访问)

Pod的两种使用方式
1)运行单一容器
one container per pod 模式,是K8S最常见的模式,k8s通过管理Pod来管理容器

2)运行多个容器
联系十分紧密的两个容器,可以编排于同一个Pod中,他们资源和通信共享,两个容器的服务一起启动、一起停止

5.Controller 运行容器

K8S通过Controller管理Pod,Controller中定义Pod的部署特性

1)Deployment
最为常见的Pod的部署方式,可以管理多Pod副本

2)ReplicaSet
实现Pod的多副本管理,通常使用Deployment创建Pod的时候会自动创建ReplicaSet,通过ReplicaSet来管理Pod,通常不直接创建ReplicaSet

3)DaemonSet
用在一个Node只运行一个Pod副本的情况,守护进程

4)StatefulSet
能够保证Pod的每个副本在整个生命周期中的名称是不变的,不因重启而变化,其他Controller不具备这样的特点

5)Job
用于运行结束就删除的应用,其他Controller会长期运行

6.Service 访问容器

Pod间通过IP通信,但是Pod的重启都会导致IP变化,为了能够正常通信,就要依靠Service

Service定义了一组外部访问Pod的方式,Service有自己的Ip和端口,为Pod提供负载均衡

7.Namespace

Namespace可以将一个物理Cluster划分为多个虚拟Cluster,资源完全隔离

K8S默认的Namespace为

  • kube-system 存放默认系统所需资源
  • default 默认创建资源被分配的空间

二、如何搭建一个K8S集群

1.所有节点安装Docker环境

2.安装 kubelet kubeadm kubectl

在Cluster节点上,安装kubelet,负责启动Pod和容器

在Cluster节点上,安装Kubeadm,负责初始化Cluster

在所有节点上,安装kubectl,负责部署和管理应用,查看各种资源,创建、删除、更新组件

3.kubeadm 初始化Cluster

1) 初始化Master

kubeadm init --apiserver-adverties-address= --pod-network-cidr=

  1. kubeadm 执行初始化前检查
  2. 生成token和证书
  3. 生成kubeConfig配置文件,kubelet使用这个文件和Master通信
  4. 安装Master组件,下载Docker镜像
  5. 安装kube-proxy和kube-dns组件
  6. 安装kubectl
  7. 安装Pod网络环境,尝试使用Flannel作为基础网络架构
  8. 向Cluster注册节点,单独Master和Node节点,将Node注册到Master
    kubectl join --token ip:port
    token可以通过 kubeadm token list 进行查看
    kubectl get nodes 确认 Node节点加入成功

2)查看Pod具体状态

kubectl get pod --all-namespaces

Pod状态:

  • Pending 未就绪
  • ContainerCreating 未就绪
  • ImagePullBackOff 未就绪
  • Running 就绪

3)查看Pod启动具体日志

kubectl describe pod [podname]

更多推荐

成集云 | 用友U8集成聚水潭ERP(用友U8主管供应链)| 解决方案

源系统成集云目标系统方案介绍用友U8是一套企业级的解决方案,可满足不同的制造、商务模式下,不同运营模式下的企业经营管理。它全面集成了财务、生产制造及供应链的成熟应用,并延伸客户管理至客户关系管理(CRM),以及零售、分销领域实现了全面整合。聚水潭是一款以SaaSERP为核心,集多种商家服务为一体的SaaS协同平台,为全

Flink-CDC 抽取SQLServer问题总结

Flink-CDC抽取SQLServer问题总结背景flink-cdc抽取数据到kafka中,使用flink-sql进行开发,相关问题总结flink-cdc配置SQLServercdc参数1.创建CDC使用的角色,并授权给其查询待采集数据数据库--a.创建角色createroleflink_role;--b.授权给角色

保证接口幂等性

什么是幂等性幂等性是系统服务对外一种承诺,承诺只要调用接口成功,外部多次调用对系统的影响是一致的。声明为幂等的服务会认为外部调用失败是常态,并且失败之后必然会有重试。什么情况下需要幂等以SQL为例:SELECTcol1FROMtab1WHERcol2=2,无论执行多少次都不会改变状态,是天然的幂等。UPDATEtab1

什么是 BSD 协议?

BSD开源协议是一个给于使用者很大自由的协议。可以自由的使用,修改源代码,也可以将修改后的代码作为开源或者专有软件再发布。当你发布使用了BSD协议的代码,或者以BSD协议代码为基础做二次开发自己的产品时,需要满足三个条件:如果再发布的产品中包含源代码,则在源代码中必须带有原来代码中的BSD协议。如果再发布的只是二进制类

【Redis】使用rpm包安装redis

背景说明公司环境处于内网,某同事需要安装redis,如果使用通过源码编译安装redis,很多编译工具如gcc就需要先安装,但处于内网安装起来不太方便,当然也不是不可以。我们此处就选用通过redis的rpm包进行安装。rpm包查找及下载找一台可以上互联网的干净服务器(干净的目的是防止以前有些包安装过,就不会再下载),最好

MFC-GetAdaptersAddresses获取网卡信息

需要:#pragmacomment(lib,"IPHLPAPI.lib")GetAdaptersAddresses函数参数说明ULONGbufferSize=0;ULONGresult=::GetAdaptersAddresses(AF_UNSPEC,GAA_FLAG_INCLUDE_PREFIX,nullptr,nu

以php为后端,vue为前端的租房微信小程序

租房微信小程序是一个非常有用的应用,它不仅可以帮助人们快速找到心仪的房屋,还可以提供便捷的房屋租赁服务。本文将介绍如何使用PHP作为后端语言和Vue作为前端框架来开发一个租房微信小程序。环境搭建首先,需要在本地或云上安装并配置PHP和Vue环境。可以使用XAMPP、WAMP、MAMP等集成的开发环境,也可以手动安装和配

stm32学习笔记:GPIO输入

1、寄存器输入输出函数//读取输入数据寄存器某一个端口的输入值,参数用来指定某一个端口,返回值是uint8_t类型,用来代表高低电平(读取按键的值)uint8_tGPIO_ReadInputDataBit(GPIO_TypeDef*GPIOx,uint16_tGPIO_Pin);//读取整个输入数据寄存器,参数用来指定

在使用SpringBoot时遇到的异常总结(持续更新...)

文章目录异常MyBatisjava.sql.SQLIntegrityConstraintViolationException:Cannotaddorupdateachildrow:aforeignkeyconstraintfailsMybatis-Plus查询语句无故自动加条件参考文献因为平时在写SpringBoot项

Centos7安装mysql详细过程

官网https://dev.mysql.com/downloads/repo/yum/1、下载安装包cd/optwgethttp://dev.mysql.com/get/mysql57-community-release-el7-11.noarch.rpm2、安装MYSQL源yum-yinstallmysql57-co

若依DataScopeAspect数据权限解析和ew.customSqlSegment源码解析

目录一、DataScopeAspect使用场景二、ew.customSqlSegment${ew.customSqlSegment}build:this.normal:queryWrapperwhere条件不为空的时候,才有normalget第二次进来add(),已经拼接完ew.customSqlSegment了,因为

热文推荐