K8S -- day01
一切皆资源
# 主要功能
1. 服务的自动发现和负载均衡
2. 自愈 self-healing
3. 滚动升级和回滚 automated
4. 水平扩展,弹性伸缩
# 理解
开源的容器管理平台
kubernates
docker swarm
messor marathon
# k8s 核心组件
1. etcd 保存整个集群的状态
2. apiserver 提供资源操作的唯一入口,提供认证,授权,访问控制,API注册和发现等机制
2. controller manager 维护集群状态
4. scheduler 资源调度, 按预定的调整策略将POD调度
5. kubelet 容器的生命周期
6. container runtime 负责镜像管理以及pod和容器的运行
7. kube-proxy 负责为service 提供cluster 内部的服务发现和负载均衡
# 附加组件
1. kube-dus 为集群提供DNS服务
2. Ingress Controller 为服务提供外网入口 (7层负载均衡)
3. Heapster 提供资源监控 (pod 资源消耗)
4. Dashboard
5. Fluentd-elasticsearch 提供日志采集,存储和查询
EFK (elasticsearch,Fluentd,kibana) -- 类似ELK
# 跨主机通信插件
flannel, weavenet.
Pod -- 最小的资源
# pod 运行容器的载体, 一个pod可以挂多个容器,小于4个
# yaml 文件
kind:Pod
metadate:
name: nginx
labels:
app:web
spec:
contains: # 可以写多个!!!
-name:nginx
image: ....nginx:1.12
ports:
containerPort:80
-name: ......
command: ....
1. 创建资源 -- nginx pod
# 创建
-- 启动两个容器???
kubectl create -f k8s_pod.yaml
# 查看资源信息
kubectl get pods -o wide / get pod nginx
# 查看详细信息
kubectl describe pod nginx
# 删除
kubectl delete pod nginx / delete pod --all
# 查看通用组件
kubectl get componentstatus
# 查看节点
kubectl get nodes
Question: 创建一个POD,启动两个容器???
# nginx pod
pod 用来实现k8s 高级功能!!!
普通nginx 和pod绑定
RC - replication conroller
# 通过RC创建pod -- 复制容器,保证容器高可用
# 副本控制器 -- 高可用
1. nginx-rc # 副本数2
nginx-rc.yaml 文件
kind: ReplicationController # 另一种资源
labels:
app: web # rc 通过标签控制pod,标签名检查数量
# 创建资源
kubectl create -f nginx-rc.yaml
# 查看资源
kubectl get rc
kubectl get pods -- 显示rc创建的pod
# 编辑配置文件
kubectl edit rc
kubectl edit rc myweb
# rc 特点
1. 通过标签控制pod
rc - 滚动升级
# delete myweb, add mywebV2 -- 例 升级naginx1.15
首先备份配置文件,用来快速回滚
1. 升级
kubectl rolling-update myweb -f 配置文件 --update-period=5
5秒删除一个pod
2. 回滚
kubectl rolling-update mywebv2 -f nginx-rc.yaml --update-period=1s
修改配置文件
容器外界能访问 -- service 资源 (内部负载均衡)
# k8s ip地址类型
1. pod:172.16.0.0/16
2. clusterIP 配置文件
3. nodeIp 宿主机ip地址
# pod ip不定,高可用
# 服务(pod里面的nginx)的发现和自动注册 -- 见下图
-- 和nginx做负载均衡类型,但是自动发现节点
!!! service VIP(自动发现,负载均衡) 关联pod通过 标签
K8S 资源类型
1. pod
2. rc
3. service
rc + svc
应用高可用,并被外界访问!!!
命令集
# 查看容器的IP地址
docker inspect dockerID
浙公网安备 33010602011771号