- Day1 容器入门之了解容器的基础知识
- Day2 容器入门之手把手教您制作镜像
- Day3 容器入门之手把手教您运行一个容器
- Day4 容器进阶之kubernetes之基础知识介绍
- Day5 容器进阶之Kubernetes pod调度原理分析
- Day7 容器进阶之Kubernetes 应用生命周期原理分析
- Day9 容器进阶之Kubernetes 网络管理原理分析
- Day11 容器进阶之Kubernetes 存储管理原理分析
- Day13 容器进阶之Kubernetes 安全原理分析
- Day15 容器进阶之lstio服务与架构
- Day16 容器进阶之lstio灰度发布任务的介绍与实践
- Day17 容器进阶之lstio流量治理与全景监控实践
- Day18 容器应用之ContainerOps介绍
- Day19 容器应用之基于containerops进行容器化交付
- Day20+Day21 容器应用之AOS介绍 + 基于AOS进行全自动云上编排
学习目的:通过21天的课程学习,了解docker和k8s的常用知识,达到扫盲的目的
课程来源:21天转型容器实战营 by华为云团队
Day1 容器入门之了解容器的基础知识
虚拟机VS容器
Docker是CS架构
docker 的模块
docker常见的架构
Day2 容器入门之手把手教您制作镜像
什么是分层镜像

有点:
资源的共享
基础镜像被改变了,已经运行的容器是否会改变? 结论:不会改变。
操作(基于镜像构建镜像)
- docker pull 镜像名
- 运行镜像
docker run -it 镜像名 sh - 修改运行的容器文件并创建新的镜像
docker commit 容器id 新的镜像名 - 查看镜像分层
docker history 镜像id
题外话:
- 创建一个100M的空文件
dd if=/dev/zero of=hello.txt bs=100M count=1
- 退出容器快捷键
ctrl + p && ctrl + q保证退出容器后,容器依然运行
什么是Dockerfile

FROM 一个基础镜像;每一个RUN会新增一个镜像层

使用Dockerfile构建镜像

使用容器镜像服务在线构建镜像

Day3 容器入门之手把手教您运行一个容器
什么是容器
参数介绍

启动容器
端口映射docker
run -d --name tank -p 80:80 ${image}
文件挂载docker cp tank:/etc/nginx/conf.d/default.conf ./
docker run -d --name tank1 -p 8081:8080 -v $PWD/default.conf:/etc/nginx/conf.d/default.conf ${image}
Day4 容器进阶之kubernetes之基础知识介绍
CKA 认证介绍
报名链接:https://www.cncf.io/certification/cka/
考纲解读
考纲 :https://github.com/cncf/curriculum
k8s架构和工作原理
架构
master - slave
原理
list- watch
理解k8s API原语


- template 是对pod的定义
- selector>matchLabels 需要和 template中的labels一致,才能查询到该pod
使用kubectl



创建一个 deployment
kubectl run edgar --image=edgar --port=80
kubectl run deployment名字 镜像地址 访问端口
弹性伸缩
kubectl scale deployment nginx --replicas=2
课后作业

- 使用create创建Pod时报错invalid object doesn’t have additional properties
解决方式:https://stackoverflow.com/questions/55417410/kubernetes-create-deployment-unexpected-schemaerror
课后题一:
第一小问
使用 create 的方式创建pod。准备的文件pod.yaml 如下:
12 {3 "kind": "Pod",4 "apiVersion": "v1",5 "metadata": {6 "name": "pod-name-cka-04",7 "labels": {8 "name": "label-day-04"9 }10 },11 "spec": {12 "containers": [13 {14 "name": "cka-day4",15 "image": "nginx",16 "ports": [17 {18 "containerPort": 637919 }20 ]21 }22 ]23 }24 }
kubectl create -f pod.yaml // 返回pod name 表示创建pod成功
第二小问:
获取pod-name-cka-04的yamlkubectl get pod/pod-name-cka-04 -o yaml > complete-pod.yaml
complete-pod.yaml
初始化yamlkubectl run --image=nginx init-yaml-name -o yaml --dry-run >> init.yaml
init.yaml
1 apiVersion: apps/v1
2 kind: Deployment
3 metadata:
4 creationTimestamp: null
5 labels:
6 run: init-yaml-name
7 name: init-yaml-name
8 spec:
9 replicas: 1
10 selector:
11 matchLabels:
12 run: init-yaml-name
13 strategy: {}
14 template:
15 metadata:
16 creationTimestamp: null
17 labels:
18 run: init-yaml-name
19 spec:
20 containers:
21 - image: nginx
22 name: init-yaml-name
23 resources: {}
24 status: {}
课后题二:
其他知识点:
- 登录docker共享仓库https://hub.docker.com 时不需要加访问地址server
docker login [options] [server]
options:
-p password
-u username
Day5 容器进阶之Kubernetes pod调度原理分析

调度相关概念
scheduling: 为Pod找到一个合适的Node
调度的结果:找到合适的Node,节点的组件kubelet将Pod运行起来 


高级调度和用法




手动调度和daemonSet




调度失败原因分析

多调度器


