文章目录

  • 一、Kubernetes简介
  • 1.背景
  • 2.优势
  • 3.kubernetes设计架构
  • 4.核心组件
  • 二、Kubernetes的部署
  • 1.实验环境
  • 2.实验步骤
  • server1:
  • server2、3、4:
  • server2:


一、Kubernetes简介

1.背景

  • 在Docker 作为高级容器引擎快速发展的同时,在Google内部,容器技术已经应用了很多年,Borg系统运行管理着成千上万的容器应用。
  • Kubernetes项目来源于Borg,可以说是集结了Borg设计思想的精华,并且吸收了Borg系统中的经验和教训。
  • Kubernetes对计算资源进行了更高层次的抽象,通过将容器进行细致的组合,将最终的应用服务交给用户。

2.优势

  • 隐藏资源管理和错误处理,用户仅需要关注应用的开发。
  • 服务高可用、高可靠。
  • 可将负载运行在由成千上万的机器联合而成的集群中。

3.kubernetes设计架构

Kubernetes集群包含有节点代理kubelet和Master组件(APIs, scheduler, etc),一切都基于分布式的存储系统。

kubernetes部署ceph集群 kubernetes集群_kubernetes

4.核心组件

Kubernetes主要由以下几个核心组件组成:

  • etcd:保存了整个集群的状态
  • apiserver:提供了资源操作的唯一入口,并提供认证、授权、访问控制、API注册和发现等机制
  • controller manager:负责维护集群的状态,比如故障检测、自动扩展、滚动更新等
  • scheduler:负责资源的调度,按照预定的调度策略将Pod调度到相应的机器上
  • kubelet:负责维护容器的生命周期,同时也负责Volume(CVI)和网络(CNI)的管理
  • Container runtime:负责镜像管理以及Pod和容器的真正运行(CRI)
  • kube-proxy:负责为Service提供cluster内部的服务发现和负载均衡

除了核心组件,还有一些推荐的Add-ons:

  • kube-dns:负责为整个集群提供DNS服务
  • Ingress Controller:为服务提供外网入口
  • Heapster:提供资源监控
  • Dashboard:提供GUI
  • Federation:提供跨可用区的集群
  • Fluentd-elasticsearch:提供集群日志采集、存储与查询

Kubernetes设计理念和功能其实就是一个类似Linux的分层架构

kubernetes部署ceph集群 kubernetes集群_私有仓库_02

  • 核心层:Kubernetes最核心的功能,对外提供API构建高层的应用,对内提供插件式应用执行环境
  • 应用层:部署(无状态应用、有状态应用、批处理任务、集群应用等)和路由(服务发现、DNS解析等)
  • 管理层:系统度量(如基础设施、容器和网络的度量),自动化(如自动扩展、动态Provision等)以及策略管理(RBAC、Quota、PSP、NetworkPolicy等)
  • 接口层:kubectl命令行工具、客户端SDK以及集群联邦
  • 生态系统:在接口层之上的庞大容器集群管理调度的生态系统,可以划分为两个范畴
Kubernetes外部:日志、监控、配置管理、CI、CD、Workflow、FaaS、OTS应用、ChatOps等
 Kubernetes内部:CRI、CNI、CVI、镜像仓库、Cloud Provider、集群自身的配置和管理等

二、Kubernetes的部署

1.实验环境

主机名

ip

作用

内存

cpu个数

server1

172.25.0.1

私有仓库

1G

1

server2

172.25.0.2

master

2G

2

server3

172.25.0.3

worker

2G

2

server4

172.25.0.4

worker

2G

2

:四台主机的时间同步,解析(包括私有仓库的解析)已做好

2.实验步骤

server1:

harbor私有仓库已安装

kubernetes部署ceph集群 kubernetes集群_私有仓库_03

server2、3、4:

步骤一:安装 docker,并设置开机开启,打开docker

解析、ipptables 内置网桥功能开启、防火墙关闭、selinux 关闭已做好

步骤二:安装Kubernete

编写k8s.repo,此处的软件源是阿里云提供,虚拟机需要联网

kubernetes部署ceph集群 kubernetes集群_私有仓库_04


kubernetes部署ceph集群 kubernetes集群_重启_05

安装:

kubernetes部署ceph集群 kubernetes集群_docker_06

kubernetes部署ceph集群 kubernetes集群_kubernetes部署ceph集群_07


kubernetes部署ceph集群 kubernetes集群_重启_08


kubernetes部署ceph集群 kubernetes集群_私有仓库_09


开机自启kubelet

kubernetes部署ceph集群 kubernetes集群_kubernetes部署ceph集群_10


步骤三:修改cgroupfs驱动为systemd改之前:

kubernetes部署ceph集群 kubernetes集群_docker_11

修改/etc/docker/daemon.json文件

kubernetes部署ceph集群 kubernetes集群_kubernetes部署ceph集群_12

重启docker,发现报错,这是因为docker原配置文件的影响

kubernetes部署ceph集群 kubernetes集群_重启_13


解决:

删除此文件即可

kubernetes部署ceph集群 kubernetes集群_kubernetes部署ceph集群_14

kubernetes部署ceph集群 kubernetes集群_kubernetes_15

重启不会发生报错,拷贝配置文件到server3,4上

kubernetes部署ceph集群 kubernetes集群_私有仓库_16


每个节点重启docker,查看驱动

kubernetes部署ceph集群 kubernetes集群_重启_17


kubernetes部署ceph集群 kubernetes集群_docker_18


步骤四:swap分区

每个节点都要做注释掉/etc/fstab文件中的swap定义

kubernetes部署ceph集群 kubernetes集群_docker_19

kubernetes部署ceph集群 kubernetes集群_kubernetes部署ceph集群_20

server2:

步骤一:镜像的拉取

查看默认配置信息

kubernetes部署ceph集群 kubernetes集群_kubernetes部署ceph集群_21


列出所需镜像,指定阿里云的下载地址

kubernetes部署ceph集群 kubernetes集群_kubernetes部署ceph集群_22


kubernetes部署ceph集群 kubernetes集群_docker_23

一般都是最新版的

拉取镜像,从阿里云拉取镜像

kubernetes部署ceph集群 kubernetes集群_私有仓库_24


kubernetes部署ceph集群 kubernetes集群_docker_25


步骤二:上传到私有仓库里面去添加认证,发现连接被拒绝

kubernetes部署ceph集群 kubernetes集群_docker_26


重启compose

kubernetes部署ceph集群 kubernetes集群_重启_27

kubernetes部署ceph集群 kubernetes集群_私有仓库_28

重新认证

kubernetes部署ceph集群 kubernetes集群_kubernetes部署ceph集群_29


harbor仓库新建一个项目

kubernetes部署ceph集群 kubernetes集群_私有仓库_30


查看上传地址

kubernetes部署ceph集群 kubernetes集群_kubernetes_31


上传到私有仓库

kubernetes部署ceph集群 kubernetes集群_docker_32


kubernetes部署ceph集群 kubernetes集群_docker_33


kubernetes部署ceph集群 kubernetes集群_kubernetes部署ceph集群_34


查看

kubernetes部署ceph集群 kubernetes集群_重启_35

测试拉取

kubernetes部署ceph集群 kubernetes集群_docker_36


步骤三:初始化集群

kubeadm init --pod-network-cidr=10.244.0.0/16 --image-repository registry.aliyuncs.com/google_containers

kubernetes部署ceph集群 kubernetes集群_kubernetes部署ceph集群_37

kubernetes部署ceph集群 kubernetes集群_docker_38


此处的token是用来校验客户端的合法性

只有24h可用此条命令来添加客户端,过期后就不能再使用了,但可以用token create

kubernetes部署ceph集群 kubernetes集群_私有仓库_39


步骤四:连接worker

kubernetes部署ceph集群 kubernetes集群_kubernetes_40


kubernetes部署ceph集群 kubernetes集群_docker_41


步骤五:查看主控节点上的docker进程

kubernetes部署ceph集群 kubernetes集群_重启_42


步骤六:配置kubectl

useradd kubeadm
vim /etc/sudoers
	kubeadm  ALL=(ALL)       NOPASSWD: ALL

kubernetes部署ceph集群 kubernetes集群_kubernetes部署ceph集群_43

# mkdir -p $HOME/.kube
# sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config
# sudo chown $(id -u):$(id -g) $HOME/.kube/config

kubernetes部署ceph集群 kubernetes集群_kubernetes_44

其他节点想要访问的话,可以/etc/kubernetes/admin.conf文件传输给节点,再按照server2的操作建立目录即可
最好不要用超级用户

步骤七:查看namespace

kubernetes部署ceph集群 kubernetes集群_重启_45


步骤八:配置kubectl命令补齐功能

echo "source <(kubectl completion bash)" >> ~/.bashrc

kubernetes部署ceph集群 kubernetes集群_私有仓库_46

步骤九:安装flannel网络组件
安装flannel网络组件:https://github.com/coreos/flannel

kubectl apply -f https://raw.githubusercontent.com/coreos/flannel/master/Documentation/kube-flannel.yml

kubernetes部署ceph集群 kubernetes集群_私有仓库_47

如果失败,可以在网站提前下载

kubernetes部署ceph集群 kubernetes集群_重启_48


再次查看

kubernetes部署ceph集群 kubernetes集群_私有仓库_49


状态全部为running表示部署完成查看帮助

kubernetes部署ceph集群 kubernetes集群_kubernetes_50