kubernetes框架
Kubernetes 是用来管理容器集群的平台。
Pod 是 Kubernetes 管理的最小单位。
一个K8S集群是由两大部分组成:Master节点和Node节点
Master节点主要包括API Server、Scheduler、Controller manager、etcd四大组件。
Node节点主要包括kubelet和kube-proxy。
Pod创建流程
1.用户通过RESTAPI 创建一个Pod
2.apiserver 将其写入etcd
3.scheduluer检测未绑定node的pod,开始调度并更新Pod的Node绑定
4.kubelet检测到有更新的Pod调度过来,通过container runtime运行该Pod
5.kubelet通过container runtime取到Pod状态,并更新到apiserver中
k9s管理工具 安装方法 curl -sS https://webinstall.dev/k9s | bash
Pod
Pod 是 Kubernetes 管理的最小单位。
Pod由一个或多个容器组成,并且这些容器共享网络和存储资源
init 容器
两个特点
1.Init 容器总是运行到成功完成为止。
2.每个 Init 容器都必须在下一个 Init 容器启动之前成功完成
pause容器
用来实现pod中多个容器之间资源共享的基础。
自动补全
apt install bash-completion
source /usr/share/bash-completion/bash_completion
source <(kubectl completion bash)
三大接口 CRI CNI CSI
namespace 作用 创建 删除
集群切换 kubectl config use-context {NAME}
etcd 作用
安装etcdctl
apt install etcd-client –y
创建快照
ETCDCTL_API=3 etcdctl snapshot save /root/etcd-snapshot.db
–endpoints=https://127.0.0.1:2379
–cert=/etc/kubernetes/pki/etcd/server.crt
–cacert=/etc/kubernetes/pki/etcd/ca.crt
–key=/etc/kubernetes/pki/etcd/server.key
回滚快照
ETCDCTL_API=3 etcdctl snapshot restore /root/etcd-snapshot.db
–data-dir=/root/etcd
–endpoints=https://127.0.0.1:2379
–cert=/etc/kubernetes/pki/etcd/server.crt
–cacert=/etc/kubernetes/pki/etcd/ca.crt
–key=/etc/kubernetes/pki/etcd/server.key
查看某个资源的详细信息
kubectl describe
将某个资源的信息以yaml形式输出
kubectl get pod xxx -o yaml
label 标签 是不同资源之间互相关联的方式
annotation 注解 仅供第三方工具查询,不起实际作用
查看api version信息 kubectl api-version
查看当前集群的resources kubectl api-resources
静态pod static pod
由特定节点上的kubelet直接管理,不受api server管理。
默认路径是 /etc/kubernetes/manifests/
Pod 生命周期 pending Pod 已被 Kubernetes 系统接受 ,但有一个或者多个容器镜像尚未创建。
工作负载
deployment statefulset daemonset job cronjob
Service
转发后端的四种方式: Clusterip Nodeport Loadblance Externalname
三种IP Pod IP ClusterIP NodeIP
三种端口 Port Targetport NodePort
应用对外暴露的方式 Nodeport loadblance ingress
会话保持 service.spec.sessionAffinity 设置为 ClientIP
服务发现 ——DNS服务 coreDNS kube-DNS
DNS策略 四种 Default ClusterFirst ClusterFirstWithHostNet None
健康检查
存活探针 LivenessProbe
就绪探针 ReadinessProbe
三种诊断方法 Exec TCPSocket HTTPGet
initialDelaySeconds
数据存储
PV 与 PVC的概念
PVC的三种访问模式 以及 回收策略
PV卷的四种状态
storageClass
EmptyDir 用于pod内多个container共享同一个目录
configmap 用来对应用的配置文件进行统一管理
secret 用来给pod传递敏感信息 使用base64加解密
Pod的节点分配(调度)
nodename
nodeselector
affinity/anti-affinity 硬性要求 软性要求
taint/toleration
Pod的水平伸缩(HPA)
计算公式:期望副本数 = ceil[当前副本数 * ( 当前指标 / 期望指标 )]
监控指标收集过程
集群的资源管理
设定namespaces的资源限制
设定pod的资源限制
QOS(服务质量) ———— limits 和 requests ;有三种QOS
yaml语法
标量 字典 列表
缩进使用空格 不能使用tab
管理节点的三个命令 cordon drain delete
节点停机维护流程
1.kubectl cordon node3 设置node3为不可调度
2.kubectl drain node3 驱逐node3上的pod
3.进行节点停机维护
4,维护完成后 kubectl uncordon node3 设置node3 接受调度
kubectl delete node3 删除节点node3
kubectl logs 查看pod日志
kubectl edit 编辑资源对象
Role 和 ClusterRole 配置规则
RoleBinding 和 ClusterRoleBinding 将规则授予用户
创建用户 kubectl create serviceaccount cicd-token -n app-team1
NetworkPolicy