K8s+Docker+KubeSphere+DevOps

本文介绍了云平台的核心优势,包括公有云和私有云的特点,强调了云服务器、VPC、安全组等基础概念。接着详细讲解了Docker的作用,如统一标准和资源隔离,并提供了CentOS下安装Docker的步骤。最后,通过实例展示了Docker的常用命令、启动容器、修改容器内容及提交镜像等实战技巧。


哔哩哔哩视频地址: https://www.bilibili.com/video/BV13Q4y1C7hS?p=10

云平台核心

1. 为什么用云平台

  • 环境统一
  • 按需付费
  • 即开即用
  • 稳定性强

国内常见云平台:

  • 阿里云、百度云、腾讯云、华为云、青云…

国外常见云平台:

  • 亚马逊 AWS、微软 Azure …

1.1 公有云

购买云服务商提供的公共服务器

  • 公有云是最常见的云计算部署类型。公有云资源(例如服务器和存储空间)由第三方云服务提供商拥有和运营,这些资源通过 Internet 提供。在公有云中,所有硬件、软件和其他支持性基础结构均为云提供商所拥有和管理。Microsoft Azure 是公有云的一个示例。
  • 在公有云中,你与其他组织或云“租户”共享相同的硬件、存储和网络设备,并且你可以使用 Web 浏览器访问服务和管理帐户。公有云部署通常用于提供基于 Web 的电子邮件、网上办公应用、存储以及测试和开发环境。
    公有云优势:
  • 成本更低:无需购买硬件或软件,仅对使用的服务付费。
  • 无需维护:维护由服务提供商提供。
  • 近乎无限制的缩放性:提供按需资源,可满足业务需求。
  • 高可靠性:具备众多服务器,确保免受故障影响。
    • 可用性: N个9 9 全年的故障时间: 365243600*(1-99.9999%)

1.2 私有云

  • 自己搭建云平台,或者购买
  • 私有云由专供一个企业或组织使用的云计算资源构成。私有云可在物理上位于组织的现场数据中心,也可由第三方服务提供商托管。但是,在私有云中,服务和基础结构始终在私有网络上进行维护,硬件和软件专供组织使用。
  • 这样,私有云可使组织更加方便地自定义资源,从而满足特定的 IT 需求。私有云的使用对象通常为政府机构、金融机构以及其他具备业务关键性运营且希望对环境拥有更大控制权的中型到大型组织。
    私有云优势:
    • 灵活性更强:组织可自定义云环境以满足特定业务需求。
    • 控制力更强:资源不与其他组织共享,因此能获得更高的控制力以及更高的隐私级别。
    • 可伸缩性更强:与本地基础结构相比,私有云通常具有更强的可伸缩性。
  • 没有一种云计算类型适用于所有人。多种不同的云计算模型、类型和服务已得到发展,可以满足组织快速变化的技术需求。
  • 部署云计算资源有三种不同的方法:公共云、私有云和混合云。采用的部署方法取决于业务需求

2. 核心构架

2.1 所需软件

electerm: https://electerm.github.io/electerm/
https://wwa.lanzoui.com/b016k9bha
密码:900h

注册云平台:

  • 阿里云 aliyun.com
  • 腾讯云 cloud.tencent.com
  • 华为云 cloud.huawei.com
  • 青云 qingcloud.com
  • 百度云 cloud.baidu.com

2.2 基础概念

  • 云服务器作为应用的最终载体
  • VPC为所有云服务器提供网络隔离
  • 所有云服务器都是绑定某个私有网络
  • 安全组控制每个服务器的防火墙规则
  • 公网IP使得资源可访问
  • 端口转发的方式访问到具体服务器

Docker基本概念

1. 解决的问题

1.1 统一标准

  • 应用构建
    • Java、C++、JavaScript
    • 打成软件包
    • .exe
    • docker build … 镜像
  • 应用分享
    • 所有软件的镜像放到一个指定地方 docker hub
    • 安卓,应用市场
  • 应用运行
    • 统一标准的 镜像
    • docker run

1.2 资源隔离

  • cpu、memory资源隔离与限制
  • 访问设备隔离与限制
  • 网络隔离与限制
  • 用户、用户组隔离限制

2. 架构

在这里插入图片描述

  • Docker_Host:
    • 安装Docker的主机
  • Docker Daemon:
    • 运行在Docker主机上的Docker后台进程
  • Client:
    • 操作Docker主机的客户端(命令行、UI等)
  • Registry:
    • 镜像仓库
    • Docker Hub
  • Images:
    • 镜像,带环境打包好的程序,可以直接启动运行
  • Containers:
    • 容器,由镜像启动起来正在运行中的程序

交互逻辑

  • 装好Docker,然后去 软件市场 寻找镜像,下载并运行,查看容器状态日志等排错

3. 安装

3.1 centos下安装docker

  • 其他系统参照如下文档
    https://docs.docker.com/engine/install/centos/

3.2 移除以前docker相关包

sudo yum remove docker \
                docker-client \
                docker-client-latest \
                docker-common \
                docker-latest \
                docker-latest-logrotate \
                docker-logrotate \
                docker-engine

3.3 配置yum源

sudo yum install -y yum-utils
sudo yum-config-manager \
--add-repo \
http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo

3.4 安装docker

sudo yum install -y docker-ce docker-ce-cli containerd.io
#以下是在安装k8s的时候使用
yum install -y docker-ce-20.10.7 docker-ce-cli-20.10.7  containerd.io-1.4.6

3.5 启动

systemctl enable docker --now

3.6 配置加速

这里额外添加了docker的生产环境核心配置cgroup

sudo mkdir -p /etc/docker
sudo tee /etc/docker/daemon.json <<-'EOF'
{
  "registry-mirrors": ["https://82m9ar63.mirror.aliyuncs.com"],
  "exec-opts": ["native.cgroupdriver=systemd"],
  "log-driver": "json-file",
  "log-opts": {
    "max-size": "100m"
  },
  "storage-driver": "overlay2"
}
EOF
sudo systemctl daemon-reload
sudo systemctl restart docker
重点关注:["https://82m9ar63.mirror.aliyuncs.com"],可以登录自己的阿里云替换加速地址

Docker命令实战

1.常用命令

在这里插入图片描述

2. 基础实战

2.1 查找镜像

Docker Hub官网镜像地址: https://hub.docker.com/

	docker pull nginx  #下载最新版
	语法: 镜像名:版本号(标签)
	docker pull nginx:1.20.1 #下载1.29.1版本的nginx
	docker pull redis  #下载最新
	docker pull redis:latest #下载最新
	docker pull redis:6.2.4 #下载6.2.4版本的redis
	不指定latest时,默认下载的是最新的
	docker rmi 镜像名:版本号/镜像id  #删除镜像

2.2 启动容器

  • 启动nginx应用容器,并映射88端口,测试的访问
	docker run [OPTIONS] IMAGE [COMMAND] [ARG...]
    语法:【docker run  设置项   镜像名  】 镜像启动运行的命令(镜像里面默认有的,一般不会写)
    # -d:后台运行
	# --restart=always: 开机自启
	docker run --name=mynginx   -d  --restart=always -p  88:80   nginx
	
	# 查看正在运行的容器
	docker ps
	# 查看所有
	docker ps -a
	# 删除停止的容器
	docker rm  容器id/名字
	docker rm -f mynginx   #强制删除正在运行中的
	
	#停止容器
	docker stop 容器id/名字
	#再次启动
	docker start 容器id/名字
	
	#应用开机自启
	docker update 容器id/名字 --restart=always

3. 修改容器中nginx内容

  • 修改nginx的默认index.html页面

3.1 进容器内部修改

	# 进入容器内部的系统,修改容器内容
	docker exec -it 容器id  /bin/bash
	# -it: 交互模式
	# /bin/bash 进入容器内部控制台,相当于一台小型linux系统,也可以使用/bin/sh
	exit #进入容器后,退出容器

3.2 挂载数据到外部修改

	docker run --name=mynginx   \
	-d  --restart=always \
	-p  88:80 -v /data/html:/usr/share/nginx/html:ro  \
	nginx
	
	# 修改页面只需要去 主机的 /data/html

4. 提交修改的镜像

将自己修改好的镜像提交

在这里插入图片描述

	docker commit [OPTIONS] CONTAINER [REPOSITORY[:TAG]]
	docker commit -a "chentengfei"  -m "首页变化" 341d81f7504f guignginx:v1.0

5. 镜像传输

第一种方式: 物理传输

	# 将镜像保存成压缩包
	docker save -o abc.tar guignginx:v1.0
	# 通过copy或者其他方式传输到另一台安装了docker的机器
	# 别的机器加载这个镜像
	docker load -i abc.tar
# 离线安装

第二种方式: 推送到远程仓库

我的gitee地址: https://gitee.com/ctflq
喜欢请点赞关注吆,持续更新中…

### Gradle 构建在 KubeSphere DevOps 中的集成配置 KubeSphere DevOps 支持多种构建工具,包括 Maven、Node.js、Python 等,也支持使用 Gradle 构建 Java 项目。为了在 KubeSphere DevOps 流水线中集成 Gradle 构建流程,用户需要配置 Jenkins Agent 并编写合适的 Jenkinsfile,以确保 Gradle 构建任务能够顺利执行。 #### Jenkins Agent 配置 在 Kubernetes 环境中,Jenkins Agent 以 Pod 的形式运行。为支持 Gradle 构建,需要确保 Jenkins Agent 容器镜像中已安装 Gradle 工具链。可以通过自定义 Jenkins Agent 镜像或使用 Kubernetes Pod 模板动态挂载 Gradle 依赖环境。 例如,可以在 Jenkins Agent 的 Pod 模板中指定包含 Gradle 的镜像,或通过 volume 挂载 Gradle 缓存目录,以提升构建效率并减少依赖下载时间[^2]。 ```yaml podTemplate( containers: [ containerTemplate( name: 'jnlp', image: 'jenkins/jnlp4-agent:latest', args: '${computer.jnlpmac} ${computer.name}' ), containerTemplate( name: 'gradle', image: 'gradle:7.4-jdk11', command: 'cat', ttyEnabled: true ) ] ) ``` #### Jenkinsfile 配置示例 在 KubeSphere DevOps 流水线中,Jenkinsfile 用于定义完整的 CI/CD 流程。以下是一个典型的 Jenkinsfile 示例,展示了如何使用 Gradle 构建 Java 项目,并将其打包为 Docker 镜像并部署到 Kubernetes 集群中。 ```groovy pipeline { agent { label 'gradle' } stages { stage('Clone Code') { steps { git branch: 'main', url: 'https://github.com/yourname/your-gradle-project.git' } } stage('Build with Gradle') { steps { container('gradle') { sh './gradlew build' } } } stage('Build Image') { steps { sh 'docker build -t your-gradle-app:latest .' } } stage('Push Image') { steps { sh 'docker login registry.example.com -u admin -p password' sh 'docker tag your-gradle-app:latest registry.example.com/library/your-gradle-app:latest' sh 'docker push registry.example.com/library/your-gradle-app:latest' } } stage('Deploy to Kubernetes') { steps { sh 'kubectl apply -f k8s-deployment.yaml' } } } } ``` #### 依赖管理与缓存优化 Gradle 项目通常涉及大量的依赖下载,为提高构建效率,可以在 Jenkins Agent 中配置 Gradle 缓存目录,避免每次构建都重新下载依赖。可以通过 Kubernetes 的 volume 挂载方式将本地缓存目录挂载到容器中。 ```groovy volumes { hostPathVolume(hostPath: '/opt/gradle-cache', path: '/home/jenkins/.gradle') } ``` 此配置可确保多个构建任务之间共享 Gradle 缓存,显著减少构建时间。 #### 集成测试与自动化部署 KubeSphere DevOps 支持在流水线中集成单元测试与集成测试步骤。可以在 Jenkinsfile 中添加 Gradle 测试任务,例如: ```groovy sh './gradlew test' ``` 此外,可结合 Kubernetes 的滚动更新策略,在部署阶段实现零停机时间的自动化部署。 ```yaml apiVersion: apps/v1 kind: Deployment metadata: name: your-gradle-app spec: replicas: 3 strategy: type: RollingUpdate rollingUpdate: maxSurge: 1 maxUnavailable: 1 template: spec: containers: - name: app image: registry.example.com/library/your-gradle-app:latest ``` 通过上述配置,KubeSphere DevOps 可以实现完整的 Gradle 项目 CI/CD 流程,包括代码拉取、依赖管理、构建、测试、镜像打包、推送与 Kubernetes 部署。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

陳騰飛

你的鼓励是我一直持续创造的动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值