docker和k8s(docker为什么要用k8s)

本文目录
- docker为什么要用k8s
- 简述Kubernetes和Docker的关系
- docker、docker-compose、docker swarm和k8s的区别
- Gitlab+Jenkins+Docker+Harbor+K8s集群搭建CICD平台
docker为什么要用k8s
Docker 是一个流行的容器技术,可以将应用程序、库、依赖项等打包到一个独立、运行时环境中,以便在不同的操作系统和服务器上部署和运行。但是,当一个企业或组织需要管理和运行数千个容器和多个容器集群时,使用仅 Docker 本身可能会带来很多困难。
因此,Kubernetes(k8s)被广泛用于管理 Docker 集群,这是一个流行的开源容器编排和管理系统。以下是一些使用 Kubernetes 的原因:
自动化:Kubernetes 可以自动化地管理容器的部署、升级、配置、扩容、缩容等,包括自动化计算节点的带宽和存储用量等资源。
可扩展性:Kubernetes 提供了规模化容器部署的手段和机制,可以快速扩展容器数量,以及构建高可用性和可靠性的系统。
跨平台:Kubernetes 可以在不同的云端和数据中心、不同的操作系统和服务器上使用,提供了跨平台的容器编排管理方案。
健康检查:Kubernetes 可以实现容器的自动健康检查和自动故障修复功能,确保容器和应用程序的稳定和可靠性。
可视化管理:Kubernetes 提供了完整的可视化管理界面,以方便管理和监控容器集群的状态和应用程序的性能等指标。
总的来说,Kubernetes 可以帮助企业更轻松地管理和运行大规模的 Docker 容器和集群,在应用程序的可靠性、安全性和可扩展性方面提供了可靠的解决方案。
简述Kubernetes和Docker的关系
Docker提供容器的生命周期管理和Docker镜像构建运行时容器。它的主要优点是将将软件/应用程序运行所需的设置和依赖项打包到一个容器中,从而实现了可移植性等优点。
Kubernetes用于关联和编排在多个主机上运行的容器。我推荐你去看看时速云,他们是一家全栈云原生技术服务提供商,提供云原生应用及数据平台产品,其中涵盖容器云PaaS、DevOps、微服务治理、服务网格、API网关等。大家可以去体验一下。 如果我的回答能够对您有帮助的话,求给大大的赞。
docker、docker-compose、docker swarm和k8s的区别
Docker 这个东西所扮演的角色,容易理解,它是一个容器引擎,也就是说实际上我们的容器最终是由Docker创建,运行在Docker中,其他相关的容器技术都是以Docker为基础,它是我们使用其他容器技术的核心。
Docker-Compose 是用来管理你的容器的,有点像一个容器的管家,想象一下当你的Docker中有成百上千的容器需要启动,如果一个一个的启动那得多费时间。有了Docker-Compose你只需要编写一个文件,在这个文件里面声明好要启动的容器,配置一些参数,执行一下这个文件,Docker就会按照你声明的配置去把所有的容器启动起来,只需docker-compose up即可启动所有的容器,但是Docker-Compose只能管理 当前主机 上的Docker,也就是说不能去启动 其他主机 上的Docker容器
Docker Swarm 是一款用来管理 多主机 上的Docker容器的工具,可以负责帮你 启动容器,监控容器状态,如果容器的状态不正常它会帮你重新帮你启动一个新的容器,来提供服务,同时也提供服务之间的负载均衡 ,而这些东西Docker-Compose 是做不到的
Kubernetes它本身的 角色定位是和Docker Swarm 是一样的 ,也就是说他们负责的工作在容器领域来说是相同的部分,都是一个 跨主机的容器管理平台 ,当然也有自己一些不一样的特点,k8s是谷歌公司根据自身的多年的运维经验研发的一款容器管理平台。而Docker Swarm则是由Docker 公司研发的。
既然这两个东西是一样的,那就面临选择的问题,应该学习哪一个技术呢?实际上这两年Kubernetes已经成为了很多大公司的默认使用的容器管理技术,而Docker Swarm已经在这场与Kubernetes竞争中已经逐渐失势,如今容器管理领域已经开始已经逐渐被Kubernetes一统天下了。所以建议大家学习的时候,应该多考虑一下这门技术在行业里面是不是有很多人在使用。
需要注意的是,虽然Docker Swarm在与Kubernetes的竞争中败下阵来,但是这个跟Docker这个容器引擎没有太大关系,它还是整个容器领域技术的基石,Kubernetes离开他什么也不是。
总结
Docker是容器技术的核心、基础,Docker Compose是一个 基于Docker的单主机容器编排工具.而k8s是一个跨主机的集群部署工具 ,功能并不像Docker Swarm和Kubernetes是基于Dcoker的跨主机的容器管理平台那么丰富
Gitlab+Jenkins+Docker+Harbor+K8s集群搭建CICD平台
上帝借由各种途径使人变得孤独,好让我们可以走向自己。 ——赫尔曼·黑塞《德米安》
CI即为 持续集成(Continue Integration,简称CI) ,用通俗的话讲,就是 持续的整合版本库代码编译后制作应用镜像 。建立有效的持续集成环境可以减少开发过程中一些不必要的问题、 提高代码质量、快速迭代 等,
Jenkins :基于Java开发的一种持续集成工具,用于监控持续重复的工作,旨在提供一个开放易用的软件平台,使软件的持续集成变成可能。
Bamboo : 是一个企业级商用软件,可以部署在大规模生产环境中。
CD即持续交付Continuous Delivery和持续部署Continuous Deployment,用通俗的话说,即可以持续的部署到生产环境给客户使用,这里分为两个阶段,持续交付我理解为满足上线条件的过程,但是没有上线,持续部署,即为上线应用的过程
关于 CD环境 ,我们使用以前搭建好的 K8s集群 ,K8s集群可以实现应用的 健康 检测,动态扩容,滚动更新 等优点,关于K8s集群的搭建,小伙伴可以看看我的其他文章
拉取镜像,启动并设置开机自启
配置docker加速器
GitLab 不多介绍。一个基于Git的版本控制平台,,提供了Git仓库管理、代码审查、问题跟踪、活动反馈和wiki,当然同时也提供了
切记:这里的端口要设置成80,要不push项目会提示没有报错,如果宿主机端口被占用,需要把这个端口腾出来
***隐藏网址***
gitlab_rails = ’192.168.26.55’
gitlab_rails = 222
修改完配置文件之后。直接启动容器
相关的git命令
下面我们要配置私有的docker镜像仓库,用到的机器为:
这里仓库我们选择 harbor ,因为有web页面,当然也可以使用 registry
首先需要设置selinux、防火墙
安装并启动docker并安装docker-compose,关于docker-compose,这里不用了解太多,一个轻量的docker编排工具
解压harbor 安装包:harbor-offline-installer-v2.0.6.tgz,导入相关镜像
修改配置文件
harbor.yml:设置IP和用户名密码
./prepare && ./install.sh
查看相关的镜像
访问测试
这里因为我们要在192.168.26.55(CI服务器)上push镜像到192.168.26.56(私仓),所有需要修改CI服务器上的Docker配置。添加仓库地址
修改后的配置文件
加载使其生效
CI机器简单测试一下
push一个镜像,可以在私仓的web页面查看
镜像jenkins拉取
这里为什么要改成 1000,是因为容器里是以 jenkins 用户的身份去读写数据,而在容器里jenkins 的 uid 是 1000,
更换国内清华大学镜像,Jenkins下载插件特别慢,更换国内的清华源的镜像地址会快不少
***隐藏网址***
替换后查看
重启docker,获取登录密匙
需要修改jenkins绑定的docker的启动参数 , ExecStart=/usr/bin/dockerd -H tcp://0.0.0.0:2376 -H fd:// --containerd=/run/containerd/containerd.sock
修改镜像库启动参数后需要重启docker
后面 gitlab 要和 jenkins 进行联动,所以必须要需要对 jenkins 的安全做一些设置,依次点击 系统管理-全局安全配置-授权策略,勾选"匿名用户具有可读权限"
添加 JVM 运行参数 -Dhudson.security.csrf.GlobalCrumbIssuerConfiguration.DISABLE_CSRF_PROTECTION=true 运行跨站请求访问
这里的话我们要通过jenkins上的kubectl客户端连接k8s,所以我们需要安装一个k8s的客户端kubectl,下载k8s客户端
然后拷贝kubeconfig 证书,k8s集群中查看证书位置,这里的证书是之前创建好的,小伙伴可以看看我之前的文章
命令测试没有问题
我们要部署 Nginx 来运行 hexo 博客系统, hexo 编译完后为一堆静态文件,所以我们需要创建一个 svc 和一个 deploy ,使用 SVC 提供服务,使用 deploy 提供服务能力,使用 Nginx+hexo的静态文件 构成的镜像
这里我们先用一个Nginx镜像来代替hexo博客的镜像
查看deployments和pod
访问测试没有问题,之后我们配置好jenkins上的触发器,直接替换就OK
我们通过 kubectl set 命令更新 deploy 的镜像时,获取的镜像是通过私仓获取的,所以需要在启动参数添加私仓地址
这里所有的节点都需要设置后重启docker
访问jenkins,接下来才是重点,我们要的jenkins上配置整个CICD流程,从而实现自动化
下面我们编译一下hexo,生成public的一个文件夹,然后上传gitlab
同时需要编写Dockerfile文件来创建镜像

更多文章:
avantage怎么设置为中文(Avantage安装丢失GIT)
2026年10月15日 03:00
activex控件未注册怎么办(登陆视频监控网页时提示activex控件未注册,怎么解决)
2026年10月14日 20:30
excel连接sql数据库教程(excel怎么连接sql数据库)
2026年10月14日 19:40






