1.可访问rancher、k8s官网
2.基于Borg的开源版本
3.每三个月一个新版本,目前版本1.17
CRI - Runtime
CNI - Network
CSI - Storage
网络方案
Flannel - 默认vxlan模式
Calico - BGP模式/IPIP模式
Canal - Flannel(模式) + Calico(策略)
vim cluster.yml 部署1.6版本
rke up --config cluster.yml
rke部署 默认证书10年
kubectl get cs - 查看组件状态
kubectl api-resources/api-versions - API信息
kubectl explain <resource> - 查看资源verson信息
Label标签 - key/value
Annotation注释 - 关联资源对象被其他程序调用
kubectl label node node01 K=V 设置
kubectl annotate nodes k8s-node01 K=
kubectl label node node01 K- 删除
kubectl annotate nodes k8s-node01 K-
查看
kubectl get nodes k8s-node01 --show-labels
kubectl describe nodes k8s-node01
kubectl get nodes k8s-node01 -o yaml
kubectl get nodes k8s-node01 -o json
pod内一个或多个容器,可根据容器的生命周期是否一致来评估
调度流程
api-server - etcd - scheduler - kubelet - docker
查看pod事件
kubectl describe pod myapp-pod1
kubectl create namespace test
kubectl -n test create -f pod.yaml
kubectl exec -it pod名 -c 容器名
Init容器
Static Pod - 在固定节点、特定目录下创建yaml文件(业务场景很少)
(rke部署k8s,默认在/etc/k8s/maniftest - cluster.yaml配置文件指定)
无法通过api-server删除,只能通过api查看镜像状态,只能通过删除yaml文件实现
Replicaset副本数
kubectl get replicasets.apps
kubectl get deployments.apps
kubectl describe deployments.apps nginx-deployment
kubectl rollout history deployment nginx-deployment
daemonset 每个节点运行一个副本
statfulset 有状态应用
Job Cronjob
Service转发
Clusterip - 内部集群
Nodeport - 30000-32767
Loadblance - 云服务商负载均衡
Externalname - 外部服务传入K8S集群、通过DSN实现
ExternalIP - 指定主机端口解析
创建service后自动创建相应endpoints
kubectl get service
kubectl get endpoints
ExternalName - 解析外部服务
ExternalIPs - 指定主机端口解析,不像nodeport暴露所有主机端口
同个Namespace的应用可以直接通过service_name访问。
跨Namespace访问通过service_name.namespace。
pvc和pv绑定,删除pvc后pvc数据reatain保留但是无法被其他pvc调用
除非修改pv.yaml中的pvc数据
删除pv后数据仍然保留,除非修改数据保留参数retain-recylce
kubectl cordon维护模式
kubectl uncordon解除维护
kubectl drain node01应用迁移
Ingress
将HTTP和HTTPS之外的服务公开到因特网通常使用类型是NodePort或loadbalance的service
ingress资源只支持用于指导HTTP通信的规则
CRI runtime 引擎
CNI network 网络
CSI storage 存储
Flannel vxlan - 跨二层
Calico
Canal = Flannel网络方案 + Calico网络策略
Alpha测试 v1alpha1
Beta测试 v2beta3
稳定版本 vX
查看当前Kubernetes集群的api版本
kubectl api-versions
查看某个资源的解释信息
kubectl explain <resources>
标签label - label slector
注释annotate
controller类型
replicaset pod副本数量
deployment 无状态服务,提供更新、回滚
daemonset 每个节点一个pod副本
statefulset 有状态应用程序
jobs
cronjob
负载均衡与服务发现
service转发后端方式
clusterip 默认type
nodeport
loadbalance 外部负载均衡器路由到service
externalname 外部服务域名映射到集群内部
service端口类型
port:svc对内端口
target-port:pod暴漏端口
nodeport:对外暴漏端口
集群外部访问
nodeport
lb
externalip - 单个node的端口
会话保持 - clien连接到同一pod
service.spec.sessionAffinity - ClientIP(默认为none)
最大会话停留时间
service.spec.sessionAffinityConfig.clientIP.timeoutSeconds
ingress实现针对url、path、ssl的请求转发
dns策略默认使用clusterfirst
健康检查
livenessprobe 存活 - 异常后重启
readinessprobe 就绪 - 就绪后分发
container诊断方法:exec \ tcpsocket \ httpget
数据存储
PV PVC
RWO ROM RWM
pv策略:retain保留 recycle回收 delete删除
静态 - 手动创建pv对应pvc
动态 - 创建storageclass存储类
configmap secret
emptydir
POD节点分配
nodename
nodeselector - 通过label约束 pod.sec.nodeselector
亲和与反亲和 affinity anti-affinity
node-affinity pod-affinity
污点与宽容 taint toleration
应用的弹性伸缩HPA
监控指标获取 metric-server
pod必须添加request资源
集群安全配置管理
namespace配置cpu、mem、pod num额度
应用的资源限制
requests 最小资源请求
limits 最大资源使用
如果只配limit没配request,那么默认request=limit。
当pod内存超过limit时,会被oom。
cpu 1core = 1000m
mem Mi
limit range
network policy
RBAC