使用二进制文件安装Kubernetes集群

目录

一、Kubernetes和相关组件介绍

(一)容器介绍(docker)

(二)Kubernetes介绍

二、部署环境规划

三、操作系统初始化(所有节点)

四、Kubernetes通信证书

(一)简介

(二)cfssl证书生成工具安装

五、 部署etcd集群

(一)生成etcd证书

(二)部署Etcd集群

六、部署master node

(一)部署kube-apiserver

(二)部署kube-controller-manager

(三)部署kube-scheduler

(四)查看集群状态

 七、部署work node

(一)安装docker(node01、node02)

(二)安装kubelet

(三)安装kube-proxy

(四)安装网络组件Calico

(五)在Master上批准

目录

一、Kubernetes和相关组件介绍

(一)容器介绍(docker)

(二)Kubernetes介绍

二、部署环境规划

三、操作系统初始化(所有节点)

四、Kubernetes通信证书

(一)简介

(二)cfssl证书生成工具安装

五、 部署etcd集群

(一)生成etcd证书

(二)部署Etcd集群

六、部署master node

(一)部署kube-apiserver

(二)部署kube-controller-manager

(三)部署kube-scheduler

(四)查看集群状态

 七、部署work node

(一)安装docker(node01、node02)

(二)安装kubelet

(三)安装kube-proxy

(四)安装网络组件Calico

(五)在Master上批准新Node kubelet证书申请

八、新增Work node

 九、部署Dashboard和CoreDNS


新Node kubelet证书申请


一、Kubernetes和相关组件介绍

(一)容器介绍(docker)

1、容器和虚拟机对比

        虚拟机:传统的应用部署方式是通过插件或脚本来安装应用。这样做的缺点是应用的运行、配置、管理、所有生存周期将与当前操作系统绑定,这样做并不利于应用的升级更新/回滚等操作,当然也可以通过创建虚机的方式来实现某些功能,但是虚拟机非常重,并不利于可移植性。

        容器:新的方式是通过部署容器方式实现,每个容器之间互相隔离,每个容器有自己的文件系统 ,容器之间进程不会相互影响,能区分计算资源。相对于虚拟机,容器能快速部署,由于容器与底层设施、机器文件系统解耦的,所以它能在不同云、不同版本操作系统间进行迁移。

2、容器特点

● 快速创建/部署应用:与VM虚拟机相比,容器镜像的创建更加容易。

● 持续开发、集成和部署:提供可靠且频繁的容器镜像构建/部署,并使用快速和简单的回滚(由于镜像不可变性)。

● 开发和运行相分离:在build或者release阶段创建容器镜像,使得应用和基础设施解耦。

● 开发,测试和生产环境一致性:在本地或外网(生产环境)运行的一致性。

● 云平台或其他操作系统:可以在 Ubuntu、RHEL、 CoreOS、on-prem、Google Container Engine或其它任何环境中运行。

● Loosely coupled,分布式,弹性,微服务化:应用程序分为更小的、独立的部件,可以动态部署和管理。

● 资源隔离

● 资源利用:更高效

3、docker

● Docker是最主流的容器运行时,即容器引擎。containerd是容器技术标准化之后的产物,为了能够兼容OCI 标准,独立负责容器运行时和生命周期(如创建、启动、停止、中止、信号处理、删除等),从daemon中剥离,向docker engine提供运行容器的API,通过grpc通信;每创建一个容器,containerd都会创建一个shim进程,每个shim会调用runc(前身是libcontainer)进行实际的容器运行时管理,比如创建namespace的隔离

● 涉及docker的关键概念有镜像,即容器应用发布件,通过dockerfile描述,docker’会根据dockerfile构建镜像;有镜像仓库,及镜像存放的地方。容器,及容器应用运行的环境,通过容器的几个关键技术进行隔离

● Docker所应用的几个关键技术都不是docker发明的,而是linux早就成熟的技术,docker将这几个技术整合,形成了革命性的成果。Namespace负责运行环境的隔离,即每个容器都是一个独立进程,通过namespace技术进行隔离,每个容器互相不可见,包括进程隔离、网络隔离、文件隔离;Cgroup是负责运行资源的隔离或者说独占,可以为每个容器指定资源数量,互相不侵占;Union filesystem是解决应用运行的小型化统一标准,容器镜像提供了容器运行的基础,但容器镜像并不等于容器。容器镜像是通过存储驱动技术管理的一系列分层的只读文件,而当容器镜像运行为容器时,就会在镜像的最上层添加一个可写的层,也就是容器层,所有对于运行时容器的修改其实都是对这个容器读写层的修改,所有对容器的变化,比如写新的文件,修改已有文件和删除文件,都只会作用在这个容器层之中

(二)Kubernetes介绍

1、Kubernetes是什么

● Kubernetes 这个单词来自于希腊语,含义是舵手或领航员。Kubernetes简称k8s,因为k到s有8个字母

● Kubernetes是谷歌贡献给开源社区的,是谷歌根据自己内部容器borg(布谷鸟),在去除自己业务属性后开源的一个产品。

● K8s的标准架构中是以集群为整体的,一个集群就是一套完整的k8s产品,大多数企业会在其上封装管理面进行集群级别的管理

● 集群中会有一个主控节点master,负责管理整个容器集群,一般由于其中使用的etcd,高可用场景下master的数量至少是3个。

● 集群中会有很多的业务节点node,负责运行容器应用。Master会在每个node上安装 kubelet作为其管理node的agent。

● 用户使用k8s时通过master上的apiserver,调用声明式的接口里定义所需要的应用、服务等各类资源对象,master的控制器和调度器会根据用户的定义,在node中进行创建,并且时刻监控其状态,保证一直符合用户的定义

● 在node上容器应用,通过kubeproxy提供统一访问能力

2、Kubernetes特点

● 可移植: 支持公有云,私有云,混合云,多重云(multi-cloud)

● 可扩展: 模块化, 插件化, 可挂载, 可组合

● 自动化: 自动部署,自动重启,自动复制,自动伸缩/扩展

3、Kubernetes组件介绍

        Kubernetes属于主从分布式架构,主要由Master Node和Worker Node组成,以及包括客户端命令行工具kubectl和其它附加项。以下介绍一下Kubernetes的核心组件

(1)Master node组件

●  kube-apiserver

        kube-apiserver用于暴露Kubernetes API。任何的资源请求/调用操作都是通过kube-apiserver提供的接口进行

● ETCD

        etcd是Kubernetes提供默认的存储系统,保存所有集群数据,使用时需要为etcd数据提供备份计划。etcd不属于Kubernetes,但是Kubernetes依赖于etcd

 kube-controller-manager

        kube-controller-manager运行管理控制器,它们是集群中处理常规任务的后台线程。逻辑上,每个控制器是一个单独的进程,但为了降低复杂性,它们都被编译成单个二进制文件,并在单个进程中运行。

这些控制器包括:

节点(Node)控制器。

副本(Replication)控制器:负责维护系统中每个副本中的pod。

端点(Endpoints)控制器:填充Endpoints对象(即连接Services&Pods)。

Service Account和Token控制器:为新的Namespace创建默认帐户访问API Token。

 kube-scheduler

        kube-scheduler 监视新创建没有分配到Node的Pod,为Pod选择一个Node。

(2)Work node组件

 kubelet

kubelet是主要的节点代理,它会监视已分配给节点的pod,具体功能:

安装Pod所需的volume。

下载Pod的Secrets。

Pod中运行的 docker(或experimentally,rkt)容器。

定期执行容器健康检查。

 kube-proxy

        kube-proxy通过在主机上维护网络规则并执行连接转发来实现Kubernetes服务抽象。

 docker

        docker用于运行容器。

(3)addons插件

 Dashboard

        Dashboard提供了集群的GUI界面

 coreNDS

        CoreDNS用于集群内部Service名称解析

二、部署环境规划

        我采用的是华为云服务器,推荐配置2U、4G、40GB硬盘、Centos8.2系统

主机名/角色

IP

组件

kube-master01

192.168.0.10

kube-apiserver,kube-controller-manager,kube-scheduler,kubelet,kube-proxy,docker,etcd,nginx,keepalived

kube-master02

192.168.0.11

kube-apiserver,kube-controller-manager,kube-scheduler,kubelet,kube-proxy,docker,nginx,keepalived

  • 24
    点赞
  • 18
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值