Kubernetes学习(1)
kubernetes是什么?
是一个基于容器技术的分布式架构方案。
具备集群管理能力,并且提供了完善的管理工具
在kubernetes中service是分布式集群架构的核心。service对象拥有的关节特征:
- 拥有唯一指定名称
- 拥有一个虚拟IP和端口号
- 能够提供某种远程服务能力
- 被映射到能够提供服务能力的一组容器能力
把service提供服务的这组进程放入容器进行隔离,kubernetes设计了Pod对象。
这样可以把每个服务进程包装到相应的Pod中,在Pod内运行一个容器,这样可以建立Pod和service的关联关系。
- Pod运行在一个节点环境中,每个Pod运行着一个特殊的容器(Pause),其他容器则为业务容器。
- 这些业务容器共享pause容器的网络桟和挂载卷(Volume)
- 在集群的管理方面,kubernetes将集群的集群划分为master和Node,
- master上运行着集群管理的相关进程——hube-apiserver、kube-controller-manager和kube-scheduler。这些进程实现了集群的资源管理,Pod调度,弹性伸缩、安全控制、系统监控和纠错等管理功能。
- Node管理的最小运行单元是Pod,运行着kubeket和kube-proxy,这些服务进程复制Pod的建立,启动、监控、重启、销毁,实现软件模式的负载均衡。
简单实例
准备Centos7环境,
docker镜像下载地址:https://hub.docker.com/u/kubeguide
docker安装网址:https://www.runoob.com/docker/centos-docker-install.html
安装docker
- 设置仓库
#yum install -y yum-utils device-mapper-persistent-data lvm2
#yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo
# yum install docker-ce docker-ce-cli containerd.io
- Docker 安装完默认未启动。并且已经创建好 docker 用户组,但该用户组下没有用户。
#usermod -aG docker lhf
#id lhf
uid=1000(lhf) gid=1000(lhf) groups=1000(lhf),993(docker)
#systemctl start docker
[root@lhf 13:05:53 /root]
#docker version
Client: Docker Engine - Community
Version: 19.03.5
API version: 1.40
Go version: go1.12.12
Git commit: 633a0ea
Built: Wed Nov 13 07:25:41 2019
OS/Arch: linux/amd64
Experimental: false
Server: Docker Engine - Community
Engine:
Version: 19.03.5
API version: 1.40 (minimum version 1.12)
Go version: go1.12.12
Git commit: 633a0ea
Built: Wed Nov 13 07:24:18 2019
OS/Arch: linux/amd64
Experimental: false
containerd:
Version: 1.2.10
GitCommit: b34a5c8af56e510852c35414db4c1f4fa6172339
runc:
Version: 1.0.0-rc8+dev
GitCommit: 3e425f80a8c931f88e6d94a8c831b9d5aa481657
docker-init:
Version: 0.18.0
GitCommit: fec368
kubernetes的核心组价
- kubernetes的核心组件都可以称之为资源对象。
- 所有的资源对象都是通过kubectl工具执行增删改查操作的并将其保存在etcd中持久化存储的。
Master
- master是集群的控制节点。
- master节点运行的关键进程:
- kube-apiserver:(1)是所有资源增删改查等操作的唯一入口。(2)集群控制的入口进程 (3)提供例如HTTPRest接口的服务进程
- kube-controller-manager:所有资源的自动化控制中心
- kube-scheduler:复制Pod调度的进程
- master部署etcd服务,kubernetes的所有资源进程对象的数据都保存在etcd中