国基北盛云开发平台软件(容器云平台)

简介

bricsskills_cloud_paas.iso镜像包含安装Docker-ce服务的软件包、部署Harbor2.1.0和Kubernetes1.18.1容器云平台所需的镜像以及nginx、wordpress、jenkins等应用镜像。用户通过Chinaskill_Cloud_PaaS.iso镜像包中的文件可安装 Docker-ce服务及构建Kubernetes.集群,并能通过提供的ngimx.、wordpress、jenkins等容器镜像部署相应的应用。

bricsskills_cloud_paas.iso包含的具体内容如下:

 

编号软件包详细信息
1yaml用于部署Dashboard与flannel网络的yaml模板文件
2plugins持续集成所需的离线插件
3kubernetes-repo用于安装kubernetes容器云平台的基础软件包
4images提供K8S平台、容器仓库、持续集成、LNMP环境需要用到的所有容器镜像;提供Wordpress、nginx、mysql、php、owncloud等服务与应用的容器镜像包
5harbor提供harbor仓库所需要的的离线安装包
6docker-compose提供docker-compose编排服务
7ChinaskillProject持续集成案例所需的代码包
8ChinaskillMall容器化部署商城所需的软件包
9k8s_master_install.sh k8s_node_install.sh提供K8S容器云平台中master节点和node节点的安装脚本
10k8s_image_push.sh提供镜像的上传脚本
11k8s_harbor_install.sh提供harbor容器仓库的安装脚本

 

1、PAAS平台基础架构与环境说明

1.1、Docker简介及基本组件

1.Docker简介

Docker 是一个开源的应用容器引擎,让开发者可以打包他们的应用以及依赖包到一个可移植的容器中,然后发布到任何流行的Linux机器上,也可以实现虚拟化,容器是完全使用沙箱机制,相互之间不会有任何接口。

一个完整的Docker有以下几个部分组成:

l Docker Client客户端

l Docker Daemon守护进程

l Docker Image镜像

l Docker Container容器

Docker引擎Docker Engine是C/S架构,主要有以下部件组成:

服务器(Docker daemon):后台运行的Docker daemon进程。Daemon进程用于管理Docker对象,包括镜像(images)、容器(containers)、网络(networks)、数据卷(data volumes)。

REST接口:同daemon交互的REST API接口。

客户端(Docker client):命令行(CLI)交互客户端。客户端使用REST API接口同Docker daemon进行访问。Docker服务的架构图如图1.1所示。

4e6e1670ed4344eb892ba2de3b8ac466.png

 图1.1 Docker服务的架构图

   2.Docker平台组成

 

7ab95c6a3e8c4397be9adb2a84ce8089.png

图1.2 Docker服务组成图

运行一个Docker服务,组成包括Docker daemon服务器、Docker Client客户端、Docker Image镜像、Docker Registry库、Docker Contrainer容器,如图1.2所示。

(1)Docker镜像:

是一个只读模板,用于创建Docker容器,由Dockerfile文本描述镜像的内容。镜像定义类似“面对对象的类”,从一个基础镜像(Base Image)开始。构建一个镜像实际就是安装、配置和运行的过程,Docker镜像基于UnionFS把以上过程进行分层(Layer)存储,这样更新镜像可以只更新变化的层。Docker的描述文件为Dockerfile,Dockerfile是一个文本文件,基本指令包括:

FROM:定义基础镜像。

MAINTAINER :作者或维护者。

RUN:运行linux 命令。

ADD:增加文件或目录。

EVN:定义环境变量。

CMD:运行进程。

(2)Docker容器:

是一个镜像的运行实例。容器有镜像创建,运行过程例如:

运行ubuntu操作系统镜像,-I 前台交互模型,运行命令为/bin/bash

$ docker run -i -t ubuntu /bin/bash

运行过程如下:

拉取(pull)镜像,Docker Engine 检查ubuntu 镜像是否存在,如果本地已经存在,使用该镜像创建容器,如果不存在,Docker Engine从镜像库拉镜像。

使用该镜像创建新容器。

分配文件系统,挂载一个读写层,在读写层加载镜像。

分配网络/网桥接口,创建一个网络接口,让容器和主机通信。

从可用的IP池选择IP地址,分配给容器。

执行命令/bin/bash。

捕获和提供执行结果。

(3)Docker 仓库:

Docker仓库是Docker镜像库。Docker Registry也是一个容器。Docker Hub是Docker公司提供的互联网公共镜像仓库。可以构建自己本地的镜像仓库,国内有些公司也构建了镜像仓库。包括阿里云、新浪等。Docker 集群服务:Docker集群服务运行承租的Docker节点一起工作。目前支持swarm模式。

一个 Docker Registry 节点中可以包含多个仓库(Repository);每个仓库可以包含多个标签(Tag);每个标签对应一个镜像。

一般而言,一个仓库包含的是同一个软件的不同版本的镜像,而标签则用于对应于软件的的不同版本。可以通过 <仓库名>:<标签> 的格式来指定具体是哪个版本的镜像。如果不给出标签,将以 latest 作为默认标签。

Ubuntu 镜像 为例,ubuntu 是仓库的名字,其内包含有不同的版本标签,如,14.04, 16.04。可以通过 ubuntu:14.04,或者 ubuntu:16.04 来具体指定所需哪个版本的镜像。如果忽略了标签,比如ubuntu,那将视为 ubuntu:latest。

1.2、Kubernetes简介及基本组件

1.Kubernetes简介

Kubernetes是Google开源的容器集群管理系统,其提供应用部署、维护、 扩展机制等功能,如图1.3所示。利用Kubernetes能方便地管理跨机器运行容器化的应用,其主要功能总结如下:

\1) 使用Docker对应用程序包装(package)、实例化(instantiate)、运行(run)。

\2) 以集群的方式运行、管理跨机器的容器。

\3) 解决Docker跨机器容器之间的通讯问题。

\4) Kubernetes的自我修复机制使得容器集群总是运行在用户期望的状态。

 

 

图1.3 Kubernetes的功能结构

ae29d156915a463c9e52af51e106d094.png

 

2.Kubernetes集群平台组成结构

Kubernetes总体包含两种角色,一个是Master节点,负责集群调度、对外接口、访问控制、对象的生命周期维护等工作;另一个是Node节点,负责维护容器的生命周期,例如创建、删除、停止Docker容器,负责容器的服务抽象和负载均衡等工作。其中Master节点上,运行着三个核心组件:API Server, Scheduler, Controller Mananger。Node节点上运行两个核心组件:Kubelet, Kube-Proxy。API Server提供Kubernetes集群访问的统一接口,Scheduler, Controller Manager, Kubelet, Kube-Proxy等组件都通过API Server进行通信,API Server将Pod, Service, Replication Controller, Daemonset等对象存储在ETCD集群中。ETCD是CoreOS开发的高效、稳定的强一致性Key-Value数据库,ETCD本身可以搭建成集群对外服务,它负责存储Kubernetes所有对象的生命周期,是Kubernetes的最核心的组件。各个组件之间的关系详情如图1-4所示。

下面先大概介绍一下Kubernetes的核心组件的功能:

API Server: 提供了资源对象的唯一操作入口,其他所有的组件都必须通过它提供的API来操作资源对象。它以RESTful风格的API对外提供接口。所有Kubernetes资源对象的生命周期维护都是通过调用API Server的接口来完成,例如,用户通过kubectl创建一个Pod,即是通过调用API Server的接口创建一个Pod对象,并储存在ETCD集群中。

Controller Manager: 集群内部的管理控制中心,主要目的是实现Kubernetes集群的故障检测和自动恢复等工作。它包含两个核心组件:Node Controller和Replication Controller。其中Node Controller负责计算节点的加入和退出,可以通过Node Controller实现计算节点的扩容和缩容。Replication Controller用于Kubernetes资源对象RC的管理,应用的扩容、缩容以及滚动升级都是有Replication Controller来实现。

Scheduler: 集群中的调度器,负责Pod在集群的中的调度和分配。

Kubelet: 负责本Node节点上的Pod的创建、修改、监控、删除等Pod的全生命周期管理,Kubelet实时向API Server发送所在计算节点(Node)的信息。

Kube-Proxy: 实现Service的抽象,为一组Pod抽象的服务(Service)提供统一接口并提供负载均衡功能。

 

图1.4 kubernetes集群服务各组件关系

 

fd08785483f04559b35bd7fb23001a16.png

 

2、Kubernetes集群部署(脚本搭建)

2.1、系统说明

安装运行环境系统要求为CentOS7.5,内核版本不低于3.10。

Docker版本为docker-ce-19.03.13。

Kubernetes版本为1.18.1。

2.2、网络架构及硬件配置

节点角色主机名内存硬盘IP地址
Master Nodemaster12G100G10.12.28.40
Worker Nodenode8G100G10.12.28.41
Harbormaster12G100G10.12.28.40

2.3、基础环境部署

本次实验环境采用master + node两个节点部署,node节点可以根据需求自主扩展。

(1)修改主机名并配置映射

所有节点修改主机名并配置映射。

master节点:

# hostnamectl set-hostname master
# cat /etc/hosts
127.0.0.1   localhost localhost.localdomain localhost4 localhost4.localdomain4
::1         localhost localhost.localdomain localhost6 localhost6.localdomain6
​

node节点:

# hostnamectl set-hostname master
# cat /etc/hosts
127.0.0.1   localhost localhost.localdomain localhost4 localhost4.localdomain4
::1         localhost localhost.localdomain localhost6 localhost6.localdomain6
10.12.28.40 master
10.12.28.41 node

(2)关闭SELinux和防火墙

所有节点关闭SELinux:

# sed -i 's/SELINUX=enforcing/SELINUX=disabled/g' /etc/selinux/config
# setenforce 0

所有节点关闭防火墙:

# systemctl stop firewalld.service
# systemctl disable firewalld.service

(3)删除iptables防火墙规则

所有节点清除iptables规则:

# iptables –F
# iptables –X
# iptables –Z
# /usr/sbin/iptables-save

(4)配置yum源

将CentOS-7-x86_64-DVD-1804.iso和Chinaskill_Cloud_PaaS.iso镜像包上传至master节点。

master节点:

# mount -o loop CentOS-7-x86_64-DVD-1804.iso /mnt/
# mkdir /opt/centos
# cp -rfv /mnt/* /opt/centos
# umount /mnt/
# mount -o loop Chinaskill_Cloud_PaaS.iso /mnt/
# cp -rfv /mnt/* /opt/
# umount /mnt/
# mv /etc/yum.repos.d/CentOS-* /home
# cat << EOF >/etc/yum.repos.d/local.repo
[k8s]
name=k8s
baseurl=file:///opt/kubernetes-repo
gpgcheck=0
enabled=1
[centos]
name=centos
baseurl=file:///opt/centos
gpgcheck=0
enabled=1
EOF
​
# 清除缓存
# yum clean all
# yum makecache

master节点安装ftp服务器:

# yum install -y vsftpd
# vi /etc/vsftpd/vsftpd.conf 
anon_root=/opt
# systemctl start vsftpd && systemctl enable vsftpd

node节点:

# mv /etc/yum.repos.d/CentOS-* /home
# cat << EOF >/etc/yum.repos.d/local.repo
[k8s]
name=k8s
baseurl=ftp://master/kubernetes-repo
gpgcheck=0
enabled=1
EOF

2.4、部署Harbor仓库

在master节点执行脚本k8s_harbor_install.sh即可完成harbor仓库的搭建

# cd /opt
# ./k8s_harbor_install.sh

 

efae1b1ce7684437baab2e616b90a537.png

 

将镜像导入Harbor仓库

# cd /opt
# ./k8s_image_push.sh
输入镜像仓库地址(不加http/https): 10.12.28.40

30bc70df81d6472d9a142fba6e5c1531.png

 

 

2.5、部署Kubernetes集群

在master节点执行脚本k8s_master_install.sh即可完成K8S集群的部署

# ./k8s_master_install.sh
输入:https://10.12.28.40:30000登录

c3053ec98aea477aabc92794e55ee4fc.png

 

 

dashboard地址:https://10.12.28.40:30000
登录令牌:Name:         dashboard-admin-token-d2sh9
Namespace:    kubernetes-dashboard
Labels:       <none>
Annotations:  kubernetes.io/service-account.name: dashboard-admin
              kubernetes.io/service-account.uid: 17f548f4-9708-4a7b-9879-de4a374893bf
​
Type:  kubernetes.io/service-account-token
​
Data
====
ca.crt:     1025 bytes
namespace:  20 bytes
token:      eyJhbGciOiJSUzI1NiIsImtpZCI6IjQ3M3hyLWttb2dWYlpOTXY0QjJBcXBxUzdtTjZkUDhmN1I3LUFvVnJ1YmMifQ.eyJpc3MiOiJrdWJlcm5ldGVzL3NlcnZpY2VhY2NvdW50Iiwia3ViZXJuZXRlcy5pby9zZXJ2aWNlYWNjb3VudC9uYW1lc3BhY2UiOiJrdWJlcm5ldGVzLWRhc2hib2FyZCIsImt1YmVybmV0ZXMuaW8vc2VydmljZWFjY291bnQvc2VjcmV0Lm5hbWUiOiJkYXNoYm9hcmQtYWRtaW4tdG9rZW4tZDJzaDkiLCJrdWJlcm5ldGVzLmlvL3NlcnZpY2VhY2NvdW50L3NlcnZpY2UtYWNjb3VudC5uYW1lIjoiZGFzaGJvYXJkLWFkbWluIiwia3ViZXJuZXRlcy5pby9zZXJ2aWNlYWNjb3VudC9zZXJ2aWNlLWFjY291bnQudWlkIjoiMTdmNTQ4ZjQtOTcwOC00YTdiLTk4NzktZGU0YTM3NDg5M2JmIiwic3ViIjoic3lzdGVtOnNlcnZpY2VhY2NvdW50Omt1YmVybmV0ZXMtZGFzaGJvYXJkOmRhc2hib2FyZC1hZG1pbiJ9.n-g-KadERv1gdhN109xWCiOSY4MtgfMfKZJxU7Xy9GdC-1s42EYSldQWxW28XZgrwgqnBbvfKtqgKfyIIwGsOt2S9dTouUn50Ekvse0ara8bzxj4mXNXMyQci9RwFsRGgx-tV5derDgmK4bYvuJoA03CUH_4nyDnf7PsyNz7H5YpRMm_rBONBW6pTjeRkgmLKHo9ILcvoXWZdGxFzBj3n8_M7zv9WBjpEltkkXKyYBuogtFT-qvvMgDS6h5lZr8LKObgV1adoalEqt4lAfHN2y2ZwGrP80UGFE-krPtuvqZNxzaOuoPg51e4qb7tosyVDzJkO3mE3_RLdPvvavMVCQ
​
# 输入:token登录

120500e839304f498125d717a595090a.png

 

 

2.6、node节点加入集群

在node节点执行脚本k8s_node_install.sh即可将node节点加入集群

将脚本上传到node节点上,并执行脚本 k8s_node_install.sh

[root@master opt]# scp k8s_node_install.sh node:/opt/
k8s_node_install.sh                                                                         100% 3055     1.7MB/s   00:00 
[root@node opt]# ./k8s_node_install.sh 
# 在master节点查看节点状态
[root@master ~]# kubectl get nodes
NAME     STATUS   ROLES    AGE    VERSION
master   Ready    master   20m    v1.18.1
node3    Ready    <none>   3m9s   v1.18.1

 

评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

狂踹瘸子那条好腿!

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值