容器云运维实战 -Docker 与 Kubernetes 集群

Linux Alan 4年前 (2020-02-19) 6553次浏览 0个评论 扫描二维码

Linux 运维基础

systemd

容器云运维实战 -Docker 与 Kubernetes 集群
systemctl

hostnamectl

timedatectl

性能工具及系统命令

nfs 配置

自动化运维工具:Ansible, Puppet, Cfengine, Chef, Func, Fabric

Redis

官网下载配置文件放入/opt/redis/conf/redis.conf

按需要修改bind 127.0.0.1,添加requirepass xxxx设置密码,其它配置如 daemonize no, port 6379, logfile /logs/redis.log, dir /data

Ansible

分布式文件存储系统:GlusterFS、CephFS

ipvsadm

例:

调度器外网172.16.1.1,内网172.16.168.100,安装 ipvsadm

真实服务器1内网172.16.168.101,安装Nginx

真实服务器2内网172.16.168.102,安装 Nginx

lvs-nat.sh 脚本示例如下

nmtui 可视化设置网络网关工具

Nginx

Nginx基础知识和常见问题

Nginx 核心知识

Docker 容器引擎

Dockerfile

每一句命令都是一个镜像层,尽量把多条相关命令写在同一句中,可使用反斜杠 \ 来组合多条命令

  • 解析器命令,如
  • FROM
  • MAINTAINER
  •  RUN
  • ENV

    使用方式:$variable 或${variable},可通过docker run –env <key> = <value>进行修改

    • ${variable:-password}:如 variable不存在,则使用 password
    • ${variable:+password}:如 variable存在,则使用 password,否则为空字符串
  •  ARG
    效果同 docker build –build-arg <varname>=<value>,不同于 ENV,ARG 在镜像构建结束后会消失
  • COPY
  • ADD
    类似 COPY,但可以从 URL 地址下载,并且可以解压,同等情况体积会大于 COPY
  • EXPOSE
  • CMD
    Dockerfile只允许使用一次 CMD 命令,多次使用仅最后一条生效,可通过 docker run 覆盖
  • ENTRYPOINT
    一般不可由 docker run 覆盖,但通过 docker run –entrypoint 可重置默认的 ENTRYPOINT
  • VOLUME
    docker run -v /local:/Image…
  • USER
    可通过 docker run的 -u 覆盖
  • WORKDIR
    指定 RUN、CMD 和 ENTRYPOINT 命令的工作目录
  • ONBUILD
    ONBUILD 在构建镜像的子镜像(通过 FROM 指令引用)中执行
  • LABEL
    为镜像添加元数据,每个标签会生成一个 Layer,尽量使用一个 LABEL 标签,如:
  • STOPSIGNAL
    定制化 docker stop 信号
  • HEALTHCHECK
    子镜像可通过 HEALTHCHECK NONE 来取消检查
  • SHELL
    更换 shell 环境

国内镜像加速

搭建自己的镜像加速器

搭建私有仓库

以上均可通过-v 指定数据卷

容器管理的命令

命令说明
attach依附到正在运行的容器
cp从容器里复制文件或目录到宿主机文件系统,或以 STDOUT 形式输出
create新建容器
diff检查容器的文件系统变动
events实时获得 Docker 服务器端的事件信息
exec在运行的容器内运行命令
export将容器的文件系统导出到一个归档文件中
kill杀死一个运行中的容器
logs获取容器的日志
pause暂停容器内部的所有进程
port输出容器的端口信息
ps显示容器列表
rename重命名一个容器
restart重启容器
rm删除一个或多个容器
run运行一个新容器
start启动一个或多个非运行状态的容器
stats实时显示容器的资源使用情况
stop停止正在运行的容器
top显示容器内正在运行的进程
unpause恢复容器内部的所有进程
update更新一个或者多个容器的配置
wait阻塞直至容器停止,然后打印退出代码

显示没有挂载到容器上的数据卷

数据卷插件,知名的有 Flocker、Convoy、GlusterFS、Keywhiz、REX-Ray 等

Docker 插件

Docker 支持的存储驱动程序

技术存储驱动程序的名称
OverlayFSoverlay1 或 overlay2
AUFSaufs
Btrfsbtrfs
Device Mapperdevicemapper
VFSvfs
ZFSzfs

容器网络

容器编排

安装 Docker Compose

docker-compose.yml 示例

Wordpress示例

Docker 集群管理

Docker Swarm 命令说明

命令说明
docker swarm init初始化一个 Swarm 集群
docker swarm join加入一个集群,包括普通 节点和管理节点
docker swarm join-token管理加入集群的口令
docker swarm leave离开当前集群
docker swarm unlock解锁集群
docker swarm unlock-key管理解锁集群的密钥
docker swarm update更新集群

集群节点管理命令说明

命令说明
docker node demote将一个或多个管理节点降级为普通 节点
docker node inspect显示节点的详细信息
docker node ls查看集群的所有节点
docker node promote将普通节点提升为管理节点
docker node ps显示一个或多个节点的正在运行的任务列 Shell,默认为当前节点
docker node rm移除一个或者多个节点
docker node update更新节点

Docker Stack 子命令

命令说明
docker stack deploy部署一个新的 Docker 栈或更新再有的 Docker 栈
docker stack ls显示所有的 Docker 栈
docker stack ps显示指定栈的任务
docker stack rm删除指定的 Docker 栈
docker stack services显示指定栈的服务列 Shell

集群搭建示例

安装 Docker Machine

安装 Virtualbox(CentOS 7为例)

国内提速:https://mirror.tuna.tsinghua.edu.cn/help/virtualbox/

注:如版本不匹配需要安装 kernel(yum install kernel) 时,请记得重启机器

集群管理面板

Shipyard

Portainer

Docker 生态

Docker Machine

容器编排调度:Marathon+Mesos、Swarm+Compose、Kubernetes

集群管理面板 Rancher

1.x 主攻容器编排,2.x 集群管理

https://rancher.com/docs/rancher/latest/zh/

https://rancher.com/docs/rancher/v2.x/en/

拉取私有仓库报错:repository does not exist or may require ‘docker login’: denied: requested access to the resource is denied

调度系统 Nomad、DC/OS

服务发现:etcd、consul、zookeeper、crypt、confd

私有镜像仓库

VMware Harbor:企业私有仓库

SUSE Portus:镜像仓库前端分布认证

Daemon 安全

详细配置:https://docs.docker.com/engine/security/https/

Docker 安全工具

监控与日志

  • cAdvisor
  • Logspout 日志处理
  • Grafana 数据可视化
  • 商业监控工具
    • Scout Scout
    • Datadog Datadog

基于 Docker 的 PaaS 平台

  • Deis:轻量级 PaaS平台
  • Tsuru:可扩展 PaaS 平台
  • Flynn:模块化 PaaS 平台

Docker 持续集成

  • Drone:轻量级CI工具
  • Travis CI

其它工具

  • Watchtower:检测容器镜像变化 ,自动使用新镜像重启容器
  • Docker-gc:自动清理不需要的容器和镜像
  • Rocker:扩展 Dockerfile 的功能

别人整理的 Docker 生态相关项目:https://github.com/veggiemonk/awesome-docker

Docker Api: https://docs.docker.com/engine/api/sdk/

Kubernetes 入门

Master 模块

  • APIServer
  • Scheduler
  • Controller Manager
  • etcd

Node 模块

  • Kubelet
  • Kube-proxy
  • runtime

Pod:自主式 Pod、控制器管理的 Pod

  • ReplicationController, ReplicaSet,Deployment
    • HPA(Horizontal Pod Autoscaling)
  • StatefulSet
  • DaemonSet
  • Job, Cronjob

网络解决方案:Flannel

常用命令

Kubernetes生产级实践指南 从部署到核心应用:https://gitee.com/pa/kubernetes-ha-kubeadm-private

常见问题

1、Docker 启动 MySQL权限问题

2、Can’t find gotests in GOPATH

 

 

喜欢 (2)
[]
分享 (0)
发表我的评论
取消评论

表情 贴图 加粗 删除线 居中 斜体 签到

Hi,您需要填写昵称和邮箱!

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址