云原生一把梭
2024-04-11 01:23:24 4 举报
AI智能生成
登录查看完整内容
云原生
作者其他创作
大纲/内容
Linux
Docker VS 虚拟机
百度清华镜像源
安装
去阿里云ACR看去
代理
docker info
docker ps
docker stats
docker images
docker logs
正常情况下别这样玩,提交个黑盒子出来谁也不知道你做了什么,写Dockerfile build出来!
docker commit
docker pull
docker push
docker volume
docker rmi
dockr rm
docker exec
docker stop
docker run
docker tag
docker build
docker start
docker restart
docker login
docker history
docker help
常用命令
网上找个模板照着改就完事了
Dockerfile
docker network
bridg
和宿主机的端口一一对应
host
none
网络模式
隔离文件:chroot
隔离访问:namespaces
隔离资源:cgroups
封装系统:LXC
Docker 在镜像的设计中,引入了层(layer)的概念。也就是说,用户制作镜像的每一步操作,都会生成一个层,也就是一个增量 rootfs。这叫叫作联合文件系统(Union File System)
一个“容器”,实际上是一个由 Linux Namespace、Linux Cgroups 和 rootfs 三种技术构建出来的进程的隔离环境。
Docker实现原理
Docker
为用户提供一个具有普遍意义的容器编排工具
Kubernetes解决了什么?
基于 RAFT 的一致性,节点数必须为奇数
保存了整个集群的状态,理解成后端数据库得了
etcd
提供了资源操作的唯一入口,并提供认证、授权、访问控制、API 注册和发现等机制
apiserver
负责维护集群的状态,比如故障检测、自动扩展、滚动更新等
controller manager
负责资源的调度,按照预定的调度策略将 Pod 调度到相应的机器上
scheduler
负责维护容器的生命周期,同时也负责 Volume(CVI)和网络(CNI)的管理
kubelet
负责镜像管理以及 Pod 和容器的真正运行(CRI)
Container runtime
负责为 Service 提供 cluster 内部的服务发现和负载均衡
kube-proxy
kube-dns 负责为整个集群提供 DNS 服务
Ingress Controller 为服务提供外网入口
Heapster 提供资源监控
Dashboard 提供 GUI
Federation 提供跨可用区的集群
Fluentd-elasticsearch 提供集群日志采集、存储与查询
其他
核心组件
Container
共享Network Namespace
共享Volume
Pod 最重要的一个事实是:它只是一个逻辑概念。Pod,其实是一组共享了某些资源的容器。
Pending
Running
Succeeded
Failed
Unknown
生命周期
Pod
Node
Namespace
my-svc.my-namespace.svc.cluster.local-》serviceip-》podip
Service 是由 kube-proxy 组件,加上 iptables 来共同实现的
一直以来,基于 iptables 的 Service 实现,都是制约 Kubernetes 项目承载更多量级的 Pod 的主要障碍。而 IPVS 模式的 Service,就是解决这个问题的一个行之有效的方法
集群的内部 IP 公开 Service,选择该值时 Service 只能够在集群内部访问
ClusterIP(默认)
通过每个节点上的 IP 和静态端口(NodePort)公开 Service。
NodePort
使用云平台的负载均衡器向外部公开 Service。
LoadBalancer
将服务映射到 externalName 字段的内容(例如,映射到主机名 api.foo.bar.example)。 该映射将集群的 DNS 服务器配置为返回具有该外部主机名值的 CNAME 记录。 集群不会为之创建任何类型代理。
ExternalName
不会获得集群 IP,kube-proxy 不会处理这类 Service, 而且平台也不会为它们提供负载均衡或路由支持。
Headless
Service
Label
Annotations
Deployment 实际上是一个两层控制器。首先,它通过ReplicaSet 的个数来描述应用的版本;然后,它再通过ReplicaSet 的属性(比如 replicas 的值),来保证 Pod 的副本数量。
Deployment 控制 ReplicaSet(版本),ReplicaSet 控制 Pod(副本数)。这个两层控制关系一定要牢记。
Deployment
Job
CronJob
DaemonSet
StatefulSet
ConfigMap
Ingress
基本概念
YAML文件详解
在默认情况下,被限制在 Network Namespace 里的容器进程,实际上是通过 Veth Pair 设备 + 宿主机网桥的方式,实现了跟同其他容器的数据交换。
Flannel,VXLAN 模式
Calico
容器“跨主通信”的问题
容器网络
保底分配的资源,调度是根据这个值
requests
最大资源使用上限
limits
资源请求和限制
Kubernetes
云原生一把梭
0 条评论
回复 删除
下一页