2、准备工作-容器化改造部署实战

准备工作

目标


  • 准备并熟悉运行实验环境。
  • 熟悉 Docker 基础知识和指令。
  • 熟悉 K8S 基础知识和 kubectl 基本指令。

说明


  • 本项目的开发依赖了多种语言和技术栈,我们已经为您准备了实验环境的 CVM 镜像,课前这个镜像会被分享给您。
  • 所有的操作都可以在 CVM 实例中进行。
  • 但您也可以选择自己在本地环境安装,请参考本章下方的安装说明,但本地开发并不是实战的主要内容。

基础知识


Docker 名词解释

  • 镜像(Image):Docker 镜像(Image),就相当于是一个 root 文件系统。比如官方镜像 ubuntu:16.04 就包含了完整的一套 Ubuntu16.04 最小系统的 root 文件系统。
  • 容器(Container):镜像(Image)和容器(Container)的关系,就像是面向对象程序设计中的类和实例一样,镜像是静态的定义,容器是镜像运行时的实体。容器可以被创建、启动、停止、删除、暂停等。
  • 仓库(Repository):仓库可看成一个代码控制中心,用来保存镜像。
  • 层(Layer):镜像是由多个文件系统(只读层)叠加而成, 每个层仅包含了前一层的差异部分。 当我们启动一个容器的时候,Docker会加载镜像层并在其上添加一个可写层。容器上所做的任何更改,譬如新建文件、更改文件、删除文件,都将记录与可写层上。

Docker 常用命令

运行容器:

docker run --name=nginx -p 8099:80 -v /tmp:/tmp -d nginx:alpine
docker run -it --rm nginx:alpine sh
  • –name 容器名称
  • -p 端口映射
  • -v 磁盘映射
  • -d 以守护进程运行
  • -it 运行后获得一个交互终端
  • –rm 实例退出后,直接删除容器实例(无需执行 docker rm 清理)。请注意:如果程序运行失败导致进程退出,实例亦会被清除。
  • 镜像后面的 “sh”:表示需要运行的容器内的命令,如果没有具体的命令,会运行 Dockerfile 里面指定的 cmd 或者 entrypoint 等命令。

查看镜像信息:

docker images

查看运行中的容器实例:

doker ps 

查看所有容器实例,包括没有运行的:

docker ps -a
  • 通过上述命令,可以查看容器镜像或实例的名字和 ID,名字和 ID 都可以作为标识符用于操作相应资源。

查看容器详情:

docker inspect nginx
  • nginx 是容器名称,也可以使用 容器ID。

对于一个已经启动的容器,可以使用下面的命令进入容器终端 或者 执行某个指令。

docker exec -it nginx sh -c "(bash || ash || sh)"
docker exec nginx sh -c "ls /tmp"

停止一个容器实例

docker stop nginx

启动一个未运行的容器实例

docker start nginx

查看容器日志

docker logs nginx
docker logs nginx -n 200
docker logs nginx -f
  • -n 从尾部开始数,需要显示的行数。
  • -f 持续追踪日志。
    删除镜像实例:
docker rm nginx

删除镜像:

docker rmi nginx:alpine

镜像构建

docker build -t yourimage .
  • -t 是标签,通常,标签的组成是 镜像地址/命名空间/镜像名称:版本号 。
    镜像推送
docker login yourregistry
docker push yourimage
  • 一般的镜像私服需要登录,使用 docker login 命令进行登录。
  • yourimage 是你本地镜像的完整名称,包含地址,名称,版本号,也是你镜像的标签。

K8S 名词解释

使用腾讯云容器服务 TKE,会涉及到以下基本概念:

  • 集群(Cluster):是指容器运行所需云资源的集合,包含了若干台云服务器、负载均衡器等云资源。
  • 节点(Node):节点可以是一个虚拟机或者物理机器,取决于所在的集群配置,每个节点包含运行 Pods 所需的服务。
  • 实例(Pod):由相关的一个或多个容器构成一个实例,这些容器共享相同的存储和网络空间。
  • 工作负载(Workloads):Kubernetes 资源对象,用于管理 Pod 副本的创建、调度以及整个生命周期的自动控制。
  • Service:由多个相同配置的实例(Pod)和访问这些实例(Pod)的规则组成的微服务。
  • Ingress:Ingress 是用于将外部 HTTP(S)流量路由到服务(Service)的规则集合。
  • 镜像仓库:用于存放 Docker 镜像,Docker 镜像用于部署容器服务。

K8S常用命令

kubectl 目前安装在容器镜像中,可以在容器内的终端环境中测试下面的命令。
当前您可能还没有可用集群,但不要紧,我们会在课程现场协助大家开通 TKE 集群。

请首先掌握如下几个基础的命令行操作:
查看资源(namespace,configmap,pod,service 等):

kubectl get <ns|cm|po|svc|..> -n <namespace>  

创建和修改 Kubernetes 资源:

kubectl apply -f some.yaml

删除 Kubernetes 资源:

kubectl delete -f some.yaml

进入 Pod 内部:

kubectl exec -it <pod-name> -- sh

查看 Pod 详情:

kubectl describe pod <pod-name>

查看 Pod 日志:

# 返回仅包含一个容器的pod nginx的日志快照
kubectl logs nginx

# 持续输出pod ruby中的容器web-1的日志
kubectl logs -f -c ruby web-1

# 仅输出pod nginx中最近的20条日志
kubectl logs --tail=20 nginx

# 输出pod nginx中最近一小时内产生的所有日志
kubectl logs --since=1h nginx

延伸:本地安装说明


1. 安装 Docker Desktop 环境

本地安装 Docker Desktop 环境,下载地址:https://www.docker.com/products/docker-desktop
下载后,按照提示安装即可。

2. 安装 kubectl

kubectl 是与 K8S 集群交互的命令行工具,是控制 K8S 的基础。
本地安装 kubectl 客户端工具,参考此帮助文档安装:https://kubernetes.io/zh/docs/tasks/tools/

3. 安装 JAVA 环境

安装 JDK
下载官方 JDK,或者 OpenJDK,并按照说明安装。

安装 Maven
Maven 是 Java 项目,编译/包依赖管理工具。

下载 Maven(http://mirrors.tencent.com/apache/maven/maven-3/),解压后,请将 bin 目录设置为系统 path。

4. 安装 .NET 环境

下载 .NET Core 安装包:https://dotnet.microsoft.com/download ,按照软件提示步骤安装。

5. 安装 PHP 环境

PHP 运行时
可以按照官方文档:https://www.php.net/manual/zh/install.php 。或者使用 PHP 集成的开发运行环境,如 XAMPP,WAMPServer 等。
Mac 下已经内置了足够运行本项目的 PHP 环境。

安装 composer
composer 是 PHP 的依赖包管理工具。
请按照官方指示安装:https://getcomposer.org/

6. 安装 Golang 环境

到官方下载页面 https://golang.org/dl/ 下载安装包,按照提示安装即可。

7. 安装 Node.js

到官方首页 https://nodejs.org/zh-cn/ 下载安装包安装。

8. 安装 wrk 压测工具

提示:wrk 支持 mac 和 linux,暂不支持 Windows。如果您的本地环境是 Windows,可选择够买一台腾讯云上的 CVM 虚拟机,进行后续的压测实战。

  1. MacOS 安装:
brew install wrk
  1. CentOS / RedHat / Fedora:
sudo yum groupinstall 'Development Tools'
sudo yum install -y openssl-devel git 
git clone https://github.com/wg/wrk.git wrk
cd wrk
make
sudo cp wrk /usr/local/bin
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值