自动化运维
平台化(ansible、git、gitlab、docker、jenkins、elk)
自动化(工具/脚本)
容器化(docker/k8s)
虚拟化
docker和虚拟机的区别
更高效的资源利用。虚拟机是一个完备的系统,容器只是一个进程。
- 虚拟机启动慢,容器是秒级
- 一致的运行环境
- CI/CD
容器核心概念
- 镜像Image
(1)镜像是一个特殊的文件系统。它除了提供容器运行时所需的程序、库、资源、配置等文件外,还包含了一些为运行时准备的一些配置参数(例如环境变量)。镜像不包含任何动态数据,其内容在构建之后也不会被改变。
(2)镜像采用的是AUFS,实现分层结构。镜像构建时,会一层层构建,前一层是后一层的基础。每一层构建完就不会再发生改变,后一层上的任何改变只发生在自己这一层。镜像是只读的。创建新镜像时,底层内容不变,只是给镜像增加了一个新层次。 - 容器Container
(1)容器可以认为是镜像的一次执行,是可读写的镜像。容器只是操作系统上的一个进程,进程执行完毕将会退出。不要假定容器会一直存在,应该假设它随时会崩溃。容器一旦出现故障,不要犹豫,直接将它删除,再启动一个。
(2)按照 Docker 最佳实践的要求,容器不应该向其存储层内写入任何数据,容器存储层要保持无状态化。所有的文件写入操作,都应该使用 数据卷(Volume)、或者绑定宿主目录,在这些位置的读写会跳过容器存储层,直接对宿主(或网络存储)发生读写,其性能和稳定性更高。数据卷的生存周期独立于容器,容器消亡,数据卷不会消亡。 - 仓库Repository
仓库是镜像仓库,负责对Docker镜像进行管理的(类似仓库管理员),每个仓库可以包含多个标签(Tag),每个标签对应一个镜像。也可以自己创建私有仓库。
k8s组成
这个集群主要包括两个部分:
一个Master节点(主节点):用于对容器进行控制、调度,一般是物理服务器,
一群Node节点(计算节点):工作负载节点,里面是具体的容器,可以是物理服务器,也可以是云主机
补充:
Pod是Kubernetes最基本的操作单元。一个Pod代表着集群中运行的一个进程,它内部封装了一个或多个紧密相关的容器。除了Pod之外,K8S还有一个Service的概念,一个Service可以看作一组提供相同服务的Pod的对外访问接口。
k8s架构图
k8s工作流程图简述
k8s配置及简单应用
1、作为master安装k8s(node11:192.168.4.11),同时作为node节点安装docker
2、修改docker配置文件,使之可以使用物理机上的私有镜像仓库
[root@node11 k8s_pkgs]# vim /etc/sysconfig/docker
OPTIONS='--selinux-enabled=false ... //关闭selinux
[root@node11 k8s_pkgs]# vim /etc/docker/daemon.json
{
"insecure-registries": ["192.168.4.254:5000"]
}
#################################################################################
[root@room9pc01 images]# docker images //物理机(192.168.4.254)搭建私有镜像仓库如下
REPOSITORY TAG IMAGE ID CREATED SIZE
192.168.8.254:5000/mysql latest 7bb2586065cd 10 weeks ago 476.9 MB
192.168.8.254:5000/pod-infrastructure latest 99965fb98423 19 months ago 208.6 MB
192.168.8.254:5000/guestbook-php-frontend latest 47ee16830e89 2 years ago 510 MB
192.168.8.254:5000/tomcat-app latest a29e200a18e9 2 years ago 358.2 MB
192.168.8.254:5000/redis-master latest 405a0b586f7e 3 years ago 419.1 MB
192.168.8.254:5000/guestbook-redis-slave latest e0c36a1fa372 3 years ago