docker常用的命令
# docker自动重启
docker run --restart always
# nginx启动命令
nginx -c /etc/nginx/nginx.conf -g 'daemon off;'
# 利用Dockerfile启动docker
docker build . -t go:v1 -f Dockerfile
Kubernetes(Google)是一个开源容器管理工具,负责容器部署,容器扩缩容以及负载平衡,与所有云提供商合作。可以理解为一个多容器管理解决方案。 本质上是一组服务器集群,可以在集群的各个节点上运行特定的dockers容器。
开发交付运维从代码到镜像(代码+配置),避免了很多运维时的错误。
# 配置开机自启
systemctl enable docker
systemctl daemon-reload
systemctl start docker
# 查看docker进程
ps aux | grep docker
# 查看系统日志 -u选择模块 -f监控
journalctl -fu docker
在容器上部署APP较在主机上部署,可以将容器本身与其他应用程序隔离,具备单独的库和二进制文件等。
自我修复:宕机后其他节点新建容器 弹性伸缩:根据服务器并发情况,创建/删除容器 自动部署:yaml 自动回滚:版本回滚 服务发现和负载均衡 机密和配置共享管理
注:Flannel是CoreOS团队针对Kubernetes设计的一个网络规划服务,简单来说,它的功能是让集群中的不同节点主机创建的Docker容器都具有全集群唯一的虚拟IP地址。
架构理解: (1)各个节点部署时将注册信息添加到etcd数据库中(可修改库类型)。 (2)当指令通过kubectl发送给master node前,首先通过API Server查询etcd数据库,指令是否可信。 (3)若可信,通过scheduler选举算法选择一个已注册的节点作为启动服务节点,将结果返回给API Server。 (4)API Server将节点信息发送给controller manager,向指定的一个work node发送启动docker的指令。 (5)指令在work node中被kubelet接收,并创建相应的pod。 (6)若docker需要与Internet通信,需通过kubeproxy来代理。