K8S中文官网
https://www.kubernetes.org.cn/
Kubernetes集群组件结构
一个kubernetes集群主要是由控制节点(master)、**工作节点(node)**构成,每个节点上都会安装不同的组件。
-
master:集群的控制平面,负责集群的决策 ( 管理 )
-
ApiServer : 资源操作的唯一入口,接收用户输入的命令,提供认证、授权、API注册和发现等机制
-
Scheduler :
负责集群资源调度,按照预定的调度策略将Pod调度到相应的node节点上 -
ControllerManager :
负责维护集群的状态,比如程序部署安排、故障检测、自动扩展、滚动更新等 -
Etcd :负责存储集群中各种资源对象的信息
- Etcd被形容为Kubernetes集群的大脑,是 Kubernetes的关键组件,因为它存储了集群的整个状态:其配置,规格以及运行中的工作负载的状态。 我们可以直接把 etcd 的数据存储理解为一个有序的 map,它存储着 key-value 数据。
- Etcd主要由四个部分组成:HTTP Server、Store、Raft以及WAL
-
node:集群的数据平面,负责为容器提供运行环境 ( 干活 )
Kubelet : 负责维护容器的生命周期,即通过控制docker,来创建、更新、销毁容器
KubeProxy : 负责提供集群内部的服务发现和负载均衡
Docker : 负责节点上容器的各种操作
Kubernetes 特点
-
可移植: 支持公有云,私有云,混合云,多重云(multi-cloud)
-
可扩展: 模块化, 插件化, 可挂载, 可组合
-
自动化: 自动部署,自动重启,自动复制,自动伸缩/扩展
Pod是什么?
* 每个 Pod 都有一个唯一的 IP 和主机名,并且在同一个 Pod 中,容器可以通过 localhost 相互通信
* k8s中的最小部署单元,不是一个程序/进程,而是一个环境, 其中可以运行1个或多个container(docker或其他容器),在一个pod内部的container共享所有资源,包括共享pod的ip:port和磁盘
* pod是临时性的,用完即丢弃的
* 具有共享存储/网络/UTS/PID的能力以及运行容器的规范
Kubernetes集群里的三种IP地址
- Node IP
- 工作节点哪台机器上的IP(可能是物理机的IP也可能是虚拟机的IP ),每个service都会在node节点上开通一个端口,外部可以通过NodeIP:NodePort来访问service中的pod
- pod和集群外通信,要借助于node ip
- Pod IP
- 它是Docker Engine根据docker网桥的IP地址段进行分配的,通常是一个虚拟的二层网络
- 同Service下的pod可以直接根据PodIP相互通信
- Cluster IP
- Service的IP地址,此为虚拟IP地址。外部网络无法ping通,只有kubernetes集群内部访问使用
- 不同Service下的pod在集群间pod通信要借助于 cluster ip
三种IP网络间的通信
service地址和pod地址在不同网段,service地址为虚拟地址,不配在pod上或主机上,外部访问时,先到Node节点网络,再转到service网络,最后代理给pod网络
K8S的常用指令
-
kubectl get namespace --查看当前有哪些namespace
-
kubectl get ns default --指定查看某一个namespace
-
kubectl create -f pod-command.yaml -n default --拉取镜像(创建新的,如果已存在就会报错)
-
kubectl apply -f pod-command.yaml -n default --拉取镜像(有就更新,没有就创建)
-
kubectl delete pod mount-docker-sock -n attacktest --删除镜像
-
kubectl describe pod pod-base -n dev --查看pod运行信息错信息
-
kubectl exec -it mount-docker-sock-8644f59ff8-qkdcz bash -n attacktest --进入容器
-
kubectl delete deployment mount-docker-sock -n attacktest --删除deployment
-
kubectl cp 宿主机文件夹路径 ns名称/pod名称:/ --从宿主机复制到容器内
-
kubectl edit deployment/kspm-controller – 修改deployment运行的yaml文件