文章目录

  • 一、云计算简介
    • 1、虚拟化技术与云计算的联系
    • 2、云计算的分类
    • 3、Kubernetes入门
  • 二、Kubernetes云平台搭建
    • 搭建环境
    • 搭建流程
      • 1、安装前奏
      • 2、Master节点安装
      • 3、配置etcd
      • 4、配置k8s
      • 5、minion节点安装
      • 6、配置k8s
      • 7、master端查看minion节点
      • 8、安装flannel
  • 三、搭建k8s Dashboard UI界面
    • 1、master节点要做的操作
      • (1)创建Dashboard-controller.yaml、Dashborad-service.yaml文件
      • (2)修改apiserver配置文件
    • 2、minion节点上做的操作(此步骤可省略不要)
    • 3、创建并运行镜像
    • 4、访问k8s UI界面

一、云计算简介

1、虚拟化技术与云计算的联系

云计算概念:

  • 云计算是一种将网络、存储、硬件、软件整合在一起的技术,它强调的是资源池这一概念,而且资源池可以动态的无限扩容、缩容,最终让租户去租用这些资源。
  • 云计算最终是为租户提供服务,租户可以根据自身需求,去进行资源池的申请,提供资源池的平台称为云平台。

虚拟化概念:

  • 虚拟化技术将物理资源转变成逻辑上可管理的资源,以打破物理资源结构壁垒,让虚拟机中的服务运行在虚拟的基础上,而不是直接运行在物理资源上。

联系:虚拟化技术是云计算中的一个模块,而且是不可或缺的模块。云计算提供的是大量各种资源池,虚拟化技术便是合理分配这些资源池的资源给虚拟机。然后再把虚拟机按照不同的配置以不同的价格出售给各个中小企业租户进行租用。

2、云计算的分类

(1)以服务类型分类

  • IaaS(Infrastructure as a Server)
  • PaaS(Platform as a Server)
  • SaaS(Software as a Server)
    图形解析:
  • 没有云计算时,我们需要做的是最左边绿色部分(即所有事)
  • 当我们引入IaaS,下面棕色部分的东西就交给了云平台,上面绿色部分自己处理(即提供诸如网络、存储等硬件设施)
  • 当我们引入PaaS,由图可知,我们只用自己部署软件服务。
  • 当我们引入SaaS,我们可以使用云提供者开发的软件,这些软件一般来说都是对现有开源,免费软件进行了二次开发的,具有更高的性能,更强大的支持和优化。像SaaS,我们基本上只用提供网站代码即可。其他维护什么都不用自己干。

更形象的说明请见博客: https://blog.csdn.net/weixin_44571270/article/details/89737883

(2)以服务对象分类

  • 公有云
  • 私有云
  • 混合云

3、Kubernetes入门

1、Kubernetes是干什么的?
Kubernetes又称k8s,因其中间有8个字母而命名。它是一个自动化容器管理平台。天生就是为管理docker容器而诞生的。使用Kubernetes可以实现如下功能:

  • 自动化容器的部署和复制;
  • 随时扩展或收缩容器规模;
  • 将容器组织成组,并且提供容器间的负载均衡;
  • 很容易地升级应用程序容器的新版本;
  • 提供容器弹性,如果容器失效就替换它等。

2、Kubernetes平台组件
Kubernetes集群中主要存在两种类型的节点:master、minion节点,Minion节点为运行 Docker容器的节点,负责和节点上运行的 Docker 进行交互,并且提供了代理功能。master主要是管理大量的分布式的minion节点。

master节点上的服务:

  • Apiserver:用户和 kubernetes 集群交互的入口,封装了核心对象的增删改查操作,提供了 RESTFul 风格的API 接口,通过etcd来实现持久化并维护对象的一致性。
  • Scheduler:负责集群资源的调度和管理,例如当有 pod 异常退出需要重新分配机器时,scheduler通过一定的调度算法从而找到最合适的节点。
  • Controller-manager:主要是用于保证 replication Controller 定义的复制数量和实际运行的pod 数量一致,另外还保证了从 service 到 pod 的映射关系总是最新的。

minion节点上的服务:

  • Kubelet:运行在 minion节点,负责和节点上的Docker交互,例如启停容器,监控运行状态等。
  • Proxy:运行在 minion 节点,负责为 pod 提供代理功能,会定期从 etcd 获取 service 信息,并根据service 信息通过修改 iptables来实现流量转发(最初的版本是直接通过程序提供转发功能,效率较低。),将流量转发到要访问的 pod 所在的节点上去。

核心附件:

  • Etcd:etcd 是一个分布式一致性k-v存储系统数据库,可用于服务注册发现与共享配置储数据库,用来存储kubernetes的信息的,etcd组件作为一个高可用、强一致性的服务发现存储仓库,渐渐为开发人员所关注。在云计算时代,如何让服务快速透明地接入到计算集群中,如何让共享配置信息快速被集群中的所有机器发现,更为重要的是,如何构建这样一套高可用、安全、易于部署以及响应快速的服务集群,etcd的诞生就是为解决该问题。
  • Flannel:Flannel是CoreOS 团队针对 Kubernetes 设计的一个覆盖网(Overlay
    Network)工具,Flannel 目的就是为集群中的所有节点重新规划 IP地址的使用规则,从而使得不同节点上的容器能够获得同属一个内网且不重复的 IP 地址,并让属于不同节点上的容器能够直接通过内网 IP通信。

二、Kubernetes云平台搭建

一般企业中,会有多个master节点,一般会做高可用,然后会有etcd分布式集群。但在我们学习技术时,便不需要这么复杂。最简单的架构体系,至少也需要两台或三台物理服务器。

搭建环境

我这里采用了两台物理机。201为k8s master节点,200当minion节点,etcd做一台即可。在master节点上共用一台物理服务器。

搭建流程

1、安装前奏
#两个服务器都要执行以下命令:
setenforce 0
或者 sed -i '/SELINUX/s/enforcing/disabled/g' /etc/selinux/config
systemctl stop firewalld#ntp时间同步,master节点和million节点需要时间一致
yum install ntp -y
ntpdate pool.ntp.org
systemctl start ntpd
2、Master节点安装
yum install kubernetes-master etcd -y
3、配置etcd
vim /etc/etcd/etcd.conf


注:2380端口是etcd服务器和etcd服务器之间通信的端口,又称分布式集群通信端口。
2379端口是提供HTTP AP服务,即通过该端口给client提供服务,这里是给master和minion节点提供服务的端口。
27.0.0.1:2379是为了本地执行etcd命令连接,172.16.193.201:2379是为了远程连接。

mkdir -pv /data/etcd
chown -R etcd.etcd /data/etcd
4、配置k8s
cd /etc/kubernetes/
ll


k8s安装完产生三个服务:

  • apiserver:统一命令(操作)入口
  • controller-manager:容器如果失效,会马上创建一个新容器,保证容器总数不变
  • scheduler:调度控制器,发现那个容器资源满了,会自动调度到其他容器。

再修改k8s config配置:
启动三个服务:

5、minion节点安装
yum install kubernetes-node docker *rhsm* -y
6、配置k8s

k8s minion节点安装完产生两个服务:

  • kubelet:用与docker交互,发布命令、任务。也即是以后就不用docker run、docker ps等等了。就可以使用kubelet这个了。还可以在web界面创建运行容器。

  • proxy:SNAT、DNAT就是在这里做的。实现流量转发,具体过程目前还不清楚!

编辑k8s minion配置文件:

vim config

启动两个服务:

7、master端查看minion节点

查看:
删除minion节点:
增添minion节点:
只能重启k8s minion节点上的两个服务。

8、安装flannel

注:这个服务是为了给docker容器统一分配ip。

#这个flannel所有节点都要安装,无论master还是minion。
yum install flannel -y
vim /etc/sysconfig/flanneld

etcdctl mk /atomic.io/network/config '{"network":"172.17.0.0/16"}'
#             这个是key                     这个是value
systemctl start flanneld

安装了flannel服务的宿主机:

docker容器:

三、搭建k8s Dashboard UI界面

1、master节点要做的操作

(1)创建Dashboard-controller.yaml、Dashborad-service.yaml文件
touch Dashboard-controller.yaml

将下面内容写入文件:

apiVersion: extensions/v1beta1
kind: Deployment
metadata:name: kubernetes-dashboardnamespace: kube-systemlabels:k8s-app: kubernetes-dashboardkubernetes.io/cluster-service: "true"
spec:selector:matchLabels:k8s-app: kubernetes-dashboardtemplate:metadata:labels:k8s-app: kubernetes-dashboardannotations:scheduler.alpha.kubernetes.io/critical-pod: ''scheduler.alpha.kubernetes.io/tolerations: '[{"key":"CriticalAddonsOnly", "operator":"Exists"}]'spec:containers:- name: kubernetes-dashboardimage: bestwu/kubernetes-dashboard-amd64:v1.6.3resources:limits:cpu: 100mmemory: 50Mirequests:cpu: 100mmemory: 50Miports:- containerPort: 9090args:- --apiserver-host=http://172.16.193.201:8080 #此处需要修改iplivenessProbe:httpGet:path: /port: 9090initialDelaySeconds: 30timeoutSeconds: 30

touch Dashboard-service.yaml

将下面内容写入文件:

apiVersion: v1
kind: Service
metadata:name: kubernetes-dashboardnamespace: kube-systemlabels:k8s-app: kubernetes-dashboardkubernetes.io/cluster-service: "true"
spec:selector:k8s-app: kubernetes-dashboardports:- port: 80targetPort: 9090
(2)修改apiserver配置文件

注:如果不去掉其中的ServiceAccount参数,api会拒绝访问UI界面。

#KUBE_ADMISSION_CONTROL="--admission-control=NamespaceLifecycle,NamespaceExists,LimitRanger,SecurityContextDeny,ServiceAccount,ResourceQuota"
KUBE_ADMISSION_CONTROL="--admission-control=NamespaceLifecycle,NamespaceExists,LimitRanger,SecurityContextDeny,ResourceQuota"

如果你是最后才发现做这一步的话。你需要修改后,重启apiserver,然后执行:

kubectl delete -f Dashboard-controller.yaml
kubectl delete -f Dashboard-service.yaml

2、minion节点上做的操作(此步骤可省略不要)

注:这一步可不要,在下一步会自己下载镜像。了解下为啥改名就行了,k8s版本和dashboard版本不能相差太大,所以不建议自己docker pull镜像!

下载pod-infrastructure、kubernetes-dashboard镜像:

docker pull docker.io/tianyebj/pod-infrastructure
docker pull docker.io/mirrorgooglecontainers/kubernetes-dashboard-amd64#这个改名是因为Dashboard-controller.yaml文件中调用过这个镜像
docker tag docker.io/siriuszg/kubernetes-dashboard-amd64 bestwu/kubernetes-dashboard-amd64:v1.6.3#这个改名是因为minion节点中的/etc/kubernetes/kubelet文件中调用过它
docker tag docker.io/tianyebj/pod-infrastructure registry.access.redhat.com/rhel7/pod-infrastructure

3、创建并运行镜像

kubectl create -f Dashboard-controller.yaml
kubectl create -f Dashboard-service.yaml
iptables -P FORWARD ACCEPT (全部节点都要配置)

报错:error: yaml: line 38: did not find expected key
这个错误害得我整了很久很久。
解决方法这两个文件中有空格没有打对。格式不对。重新复制以下。.json格式的文件严格要求格式,空格不能多一个,也不能少一个。

4、访问k8s UI界面

查看是否成功生成dashboard界面:

kubectl get pods -namespace kube-system

这个是失败:

出现错误,可以看日志:

kubectl logs kubernetes-dashboard-3584070908-vp0gl -n kube-system

这个是成功:
成功!

云计算简介及Kubernetes云平台搭建相关推荐

  1. 云计算 openstack 云平台搭建详细教程(基于 Vmware 虚拟机搭建)

    OpenStack 和 云计算 1.OpenStack 基本概述 早在1988年,类似云计算概念的"网络就是计算机"概念就被 SUN 微系统公司 的合作创建者约翰 · 盖奇首次提出 ...

  2. 云计算、PaaS开发、企业云平台搭建

    传统模式(单机纵向扩展):CPU.内存.硬盘 云计算特点: 通过增加节点来扩展 自下而上管理模式(自治.自动化) 适合自动化大数据处理 虚拟化 动态迁移 云计算思想: 解耦:打破串行执行,变成一环节一 ...

  3. OpenStack云平台搭建(3) | 部署Glance

    目录 1.登录数据库授权 2.安装glance 3.测试一下 安装部署Glance镜像服务 Image Service  镜像服务: 代号:Glance: 为云平台虚拟机提供镜像服务,例如:上传镜像. ...

  4. OpenStack云平台搭建(4) | 部署Placement

    目录 安装部署Placement 1.登录数据库授权 2.安装palcement-api 安装部署Placement [Placement]服务 是从[nova]服务中拆分出来的组件,作用是收集各个[ ...

  5. Jmeter性能测试云平台搭建

    本篇文章主要讲解Jmeter性能测试云平台搭建,这是我们在进行DevOps云平台中性能测试一部分,后期结合docker容器技术进行集群的动态扩展.

  6. 物联网iot私有云平台搭建

    物联网iot私有云平台搭建 物联网的平台有多种,把其中的一些列出一个开源平台比照表. IoT 软件平台 设备管理? 集成 安全 数据收集协议 分析 支持可视化? 数据库 Kaa IoT Platfor ...

  7. 云安全:Cloudstack云平台搭建详解及经验总结

    前言: 正在学习云安全,不搭建云平台,总感觉学的有些虚,没落到实处.在网上查资料了解到,Cloudstack产品比较成熟,已经有成熟的企业应用.而且相对OpenStack配置没那么复杂,所以就先从简单 ...

  8. 先电openstack2.4云计算省赛任务一:iaas平台搭建任务

    任务一.IaaS云平台搭建(15分) 修改云平台IaaS各节点的系统配置,按云平台搭建步骤逐步安装,并完成相应的答题. 1.操作系统环境配置(1分) 按以下要求设置主机名.防火墙及SELinux: ( ...

  9. ChinaSkills-网络系统管理003(VMware ESXI云平台搭建)

    ChinaSkills-网络系统管理003(VMware ESXI云平台搭建) 2022年全国职业技能大赛网络系统管理赛项相较2021年再次做出改动,Linux部分从之前的Debian又换回了Cent ...

  10. 先电Openstack云平台搭建【超级详细】【附带镜像】

    前言 大二上学期学习Openstack,苦于百度与CSDN上没有对应版本的教程,学的十分艰难,在此,将我的Openstack云平台搭建过程写出,留给新手学习 准备工作: VMware Workstat ...

最新文章

  1. 怎么卸载apowerrec_如何删除windows10自带应用
  2. 解压速度更快, Zstandard 1.4.1 发布
  3. b+树的增删改查_EF Core / 基础_从建库到增删改查
  4. C#验证字符串是否是数字,是否包含中文,是否是邮箱格式,是否是电话格式
  5. 我的2006总结:一个结束和一个开始
  6. php图片转字节数组中,使用字节数组将图像上传到服务器,在flex 4.5 air中上传php...
  7. MapGIS6.7投影生成点-以物化探综合剖面图为例
  8. curl上传文件到服务器命令,linux curl上传文件到服务器
  9. PyQt窗口设计之Qt Designer
  10. PHY之MDIO解析
  11. excel 某个单元格不是等于空值,EXCLE中如何通过判断另外一个单元格是否为空来确定单元格的数值_excel不为空的函数...
  12. poj3294Life Forms
  13. 中英文说明书丨CalBioreagents ACTH抗原抗体对
  14. Visual C++编译错误:error C2220: 警告被视为错误 - 没有生成“object”文件
  15. 日语蔬菜水果相关词汇(2)
  16. OpenCV图像处理-区域分割-形态学操作应用
  17. Training Generative Adversarial Networks with Limited Data
  18. 暴光史上最强的女生勾引男生的方法
  19. linux下最全抓包命令使用方式学习和拓展
  20. c语言数组转bin,C语言数组转换为BIN文件工具

热门文章

  1. top n with ties
  2. 【科创人】白山云科技CTO童剑:积极是态度更是方法,怀念4点起床敲代码的日子...
  3. bzoj 4453: cys就是要拿英魂!(后缀数组+二分)
  4. 程序员编程规范之注释
  5. 追思“光纤之父”,物理学诺贝尔奖得主高锟自述
  6. 【计算机网络】计网学习——总览(超多图+超详解)
  7. matlab中options,[转载]Matlab优化函数中options选项的修改
  8. NFT 作品集推荐|Lululand《爱是永恒》
  9. ORGE之GUI Demo
  10. 金蝶服务器组件无法正常工作,K3组件kdsvrmgr无法正常工作