k8s基础概念、Pod、k8s基础命令
Master节点:管理整个k8s集群
生产环境至少3个节点,大型集群5个节点;
测试环境1个节点
Worker节点:运行容器,pod,容器生命周期管理;
每个节点运行10~100个pod;根据pod的规模调整Worker节点的数量;
Pod
Pod是k8s中最小的管理单元,Pod是用于管容器的;
Pod的作用是“虚拟的节点”,微型节点,一个Pod中至少可以管理运行一个或多个容器,在同一个Pod中的容器可以共享网络和存储;
管理器
用户管理pod的一系列管理器;
副本管理
生命周期管理
弹性的扩缩容管理
Deployment:管理无状态服务(Nginx、Tomcat、PHP)
StatefulSet:管理有状态服务(MySQL)
Job:管理一次性服务
cronJob:计划执行服务
服务发现与网络通信
通过网络将数据请求转发给指定容器;实现负载均衡的功能;
Service实现Pod的服务发现与负载均衡;
配置与存储
ConfigMap:存储配置文件
Sevret:存储密码或密钥
PV/PVC:持久化存储的资源与资源绑定
资源管理
Namespace:可以给不同的业务分组管理,实现资源的隔离与限制;
Label:标签,实现Pod调度、Pod的资源管理器、服务发现、负载均衡;
K8S常用命令
kubeadm
初始化master节点,全局设置,
#打印初始化配置
kubeadm config print init-defaults
# 返回新的node节点
token kubeadm token create --print-join-command
init:初始化Master节点
join:初始化Node节点并加入集群
reset:重置当前节点,无论是Master节点还是Node节点都可以重置
token: kubeadm init或输出的命令中返回的kubeadm join
kubectl:k8s集群管理命令
kubectl主要职责是对资源对象进行操作。
k8s当中一切皆为资源;
资源对象表
| 资源 | 缩写 | 说明 | 
|---|---|---|
| cluster | 集群 | |
| componentstatu ses | cs | 组件对象状态 | 
| configmaps | cm | ConfigMap是k8s配置管理工具,ConfigMap对象 | 
| daemonsets | ds | DaemonSet管理node节点运行Pod, DaemonSet对象 | 
| deployments | deploy | deployments对象 ,K8S最常用的控制器 | 
| endpoints | ep | Endpoints端点集合;IP地址列表 ;是实现服务的端点集合 | 
| events | ev | events集群事件;记录集群运行时的各种事件 | 
| ingress | ing | ingress访问入口 API对象,边缘路由功能 | 
| nodes | no | 节点 | 
| namespaces | ns | 命名空间 | 
| pods | po | 获取Pod信息 | 
| replicasets | rs | replicasets副本数,用户指定数量的Pod副本 | 
| cronjob | 周期任务管理器,周期性任务控制,不需要持续在后台运行 | |
| services | svc | 服务入口,各种服务 | 
# 查看API资源
kubectl api-resources
# 查看API版本
kubectl api-versions
查看资源
kubectl get 资源 -o 格式
* wide 显示详细信息
* json 以json格式显示详细信息
* yaml 以yaml格式显示详细信息
-w 等待显示资源状态的修改
创建资源
kubectl create -f xxx.yaml
删除资源
kubectl delete -f xxx.yaml
kubectl delete pod nginx -n default
kubectl delete 资源类型 名称 -n 命名空间
更新资源
#当资源不存在时创建资源,也可以更新资源
kebectl apply -f xxx.yaml(资源名称)
查看资源的详细信息,运行状态,常用于排错
kubectl describe pod nginx
查看运行日志,用于排除
kubectl logs nginx-game(pod名称)
在线更新运行中配置,yaml格式
kubectl edit pod nginx-game(pod名称)
进入容器
kubectl exec -it pod名称 --bash
直接创建pod并启动容器
kubectl run --image=nginx nginx-app --port=8082
双向复制
kubectl cp init.sh nginx-game:/data
kubectl cp nginx-game:/data/./
