rancher学习

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
原文地址:https://www.cnblogs.com/kylingx/p/12444063.html