天道酬勤,学无止境

Kubernetes教程

Kubernetes入门(一)

Kubernetes也叫做k8s。它是一个开源系统,主要用于自动部署、扩容缩容和管理容器化应用。它将诸多应用的容器分为若干个逻辑单元以便于管理和发现。kubernetes拥有着Google高负载生产环境的15年经验,并结合了社区的优秀思想和实践。30.1 Kubernetes介绍Kubernetes官网:https://kubernetes.io/在Kubernetes中,service是核心,我们并不需要太多关心kubernetes里面是怎么工作的,我们只需要关心它给我们提供什么service。就像docker容器可以提供一个mysqld的服务、web服务等。它需要拥有一个唯一的名字、以及ip:port来对外提供服务。提供service的是容器,为了保证service的高可用,提供service的容器不能只有一个,需要一组,这一组容器我们把它叫做pod。pod是kubernetes最基本的操作单元。为了实现service和pod之间的管理,又有了标签(label)的概念,我们把功能相同的pod设定为同一个标签。比如,可以把所有提供mysql服务的pod打上标签name=mysql,这样mysql service要作用于所有包含name=mysql标签的pod上。pod运行在Node上,Node可以是一台物理机,也可以是虚拟机。通常一个Node上会运行几百个pod

2021-05-18 12:08:29    分类:博客    Kubernetes教程   kubernetes

Kubernetes入门(二)

30.3 Kubernetes相关概念Kubernetes内部组件工作原理介绍:http://dockone.io/article/5108kubernetes整个框架结构如下:MasterMaster是整个集群的控制中心,kubernetes的所有控制指令都是发给master,它负责具体的执行过程。一般我们会把master独立于一台物理机或虚拟机,它的重要性不言而喻。master上有这些关键进程:Kubernetes API Server(kube-apiserver):提供了HTTP Rest接口关键服务进程,是所有资源增、删、改、查等操作的唯一入口,也是集群控制的入口进程。它是Kubernetes系统和etcd直接对话的唯一组件。Kubernetes Controller Manager(kube-controller-manager):是所有资源的自动化控制中心,可以理解为资源对象的大总管。KubernetesScheduler(kube-scheduler):负责资源调度(pod调度)的进程,相当于公交公司的“调度室”。etcd Server:Kubernetes里所有资源对象的数据都是存储在etcd中的,etcd是Kubernetes的存储状态的数据库。Node除了Master,Kubernetes集群中的其它机器被称为Node,早期版本叫做Minion

2021-05-18 12:08:25    分类:博客    kubernetes   Kubernetes教程

Kubernetes入门(三)

30.4 kubectl命令使用语法语法:kubectl [command] [TYPE] [NAME] [flags]1. command:子命令,用于操作kubernetes集群资源对象的命令,如create、delete、describe、get、apply等; 2. TYPE:资源对象的类型,如pod、service、rc、deployment、node等,可以单数、复数以及简写(pod/pods/po、service/services/svc); 3. NAME:资源对象的名称,不指定则返回所有,如 get pod 会返回所有pod,get pod nginx 则只返回nginx这个pod; 4. flags:kubectl子命令的可选参数,例如 -n 指定namespace,-s 指定apiserver的URL。资源对象列表获取资源对象列表:# kubectl api

2021-05-18 12:08:21    分类:博客    kubernetes   Kubernetes教程

Kubernetes入门(四)

30.5 Kubernetes集群搭建准备4台虚拟机,以二进制方式,通过ansible脚本,自动化搭建一个多主多节点的高可用集群。Ansible脚本安装kubernetes集群:https://github.com/gjmzj/kubeaszkubernetes官方github地址:https://github.com/kubernetes/kubernetes/releases环境准备软硬件限制:1. CPU和内存 master:至少1c2g,推荐2c4g;node:至少1c2g 2. linux系统 内核版本3.10以上,推荐CentOS7或RHEL7 3. docker 至少1.9版本,推荐1.12+ 4. etcd 至少2.0版本,推荐3.0+节点规划:deploy节点---数量1:运行这份ansible脚本的节点 etcd节点---数量3:注意etcd集群必须是1,3,5,7...奇数个节点 master节点---数量2:根据实际集群规模可以增加节点数,需要额外规划一个master VIP lb节点---数量2:负载均衡节点2个,安装haproxy和keepalived node节点---数量3:真正应用负载的节点,根据需要提升机器配置和增加节点数机器规划:ip主机名角色192.168.30.128masterdeploy、master1、lb1、etcd192.168

2021-05-18 12:08:18    分类:博客    kubernetes   Kubernetes教程

Kubernetes入门(五)

30.7 部署HarborHarbor是由VMWare中国团队开源的容器镜像仓库。事实上,harbor是在Docker Registry上进行了相应的企业级扩展,从而获得了更加广泛的应用,这些新的企业级特性包括:管理用户界面,基于角色的访问控制,水平扩展,同步,AD/LDAP集成以及日志审计等。github地址:https://github.com/goharbor/harbor/releases手动部署之前已经搭建了kubernetes集群,其中192.168.30.150作为master2节点,我们把它作为harbor服务器。下载最新的docker-compose二进制文件:[root@master2 ~]# vim /etc/hosts #添加一行54.231.48.160 github-production-release-asset-2e65be.s3.amazonaws.com[root@master2 ~]# curl -L https://github.com/docker/compose/releases/download/1.24.0-rc1/docker-compose-`uname -s`-`uname -m` -o /usr/bin/docker-compose[root@master2 ~]# chmod +x /usr/bin/docker

2021-05-18 12:08:13    分类:博客    kubernetes   Kubernetes教程

Kubernetes入门(六)

30.9 Kubernetes中使用NFS作为共享存储前面介绍过,Persistent Volume(持久化卷)简称PV,是一个k8s资源对象。我们可以单独创建一个PV,它不和Pod直接相关,而是通过Persistent Volume Claim(简称PVC)来实现动态绑定,我们会在Pod定义里指定创建好的PVC,然后PVC会根据Pod的要求去自动绑定合适的PV给Pod使用。PV和PVC概念Persistent Volume(PV)是由管理员设置的存储,它是集群的一部分,就像节点是集群中的资源一样,PV也是集群中的资源。PV是Volume之类的卷插件,但具有独立于使用PV的Pod的生命周期。此API对象包含存储实现的细节,即NFS、iSCSI或特定于云供应商的存储系统。Persistent Volume Claim(PVC)是用户存储的请求。它与Pod相似,Pod消耗节点资源,PVC消耗PV资源。Pod可以请求特定级别的资源(CPU和内存),PVC声明可以请求特定的大小和访问模式。普通Volume和使用它的Pod之间是一种静态绑定关系,在定义Pod的文件里,同时定义了它使用的Volume。Volume是Pod的附属品,我们无法单独创建一个Volume,因为它不是一个独立的k8s资源对象。搭建NFS接下来还是在master2节点上搭建NFS。安装包:[root@master2 ~]#

2021-05-18 12:08:09    分类:博客    kubernetes   Kubernetes教程

Kubernetes入门(七)

30.11 部署相关插件前面已经部署了kubernetes集群和LNMP环境,并运行了discuz,接下来我们继续完善整个kubernetes集群。访问dashboard为了集群安全,从 1.7 开始,dashboard 只允许通过 https 访问,如果使用 kube proxy 则必须监听 localhost 或 127.0.0.1,对于NodePort没有这个限制,但是仅建议在开发环境中使用。暴露NodePort访问:kubernetes-dashboard 服务暴露了 NodePort,可以使用 https://NodeIP:NodePort 地址访问 dashboard;通过 kubectl proxy 访问 :启动代理:# kubectl proxy --address='localhost' --port=8086 --accept-hosts='^*$'Starting to serve on 127.0.0.1:8086注意:1. --address 必须为 localhost 或 127.0.0.1; 2. 需要指定 --accept-hosts 选项,否则浏览器访问 dashboard 页面时提示 “Unauthorized”。浏览器访问 URL:http://127.0.0.1:8086/api/v1/namespaces/kube-system

2021-05-18 12:08:05    分类:博客    kubernetes   Kubernetes教程