### 端口: master apiserver:6443(https), 8080 etcd:2379(外部访问。client访问),2380(etcd集群互访) kubelet: 10250 kube-scheduler(healthy):10251 controler-manager(healthy):10252 cloud-manager(healthy):10253 kubulet api: 10255 kube-proxy(healthy):10256 ### k8s架构 master:api server,scheduler,controller manager node:kubelet,kube-proxy ### k8s最小调度单元:pod pod有标签(label),标签选择器(label selector) pod分为自主式与控制器管理的pod ##控制器类型: RepllicationController ReplicaSet Deployment StatefulSet DaemonSet Job CronJob HPA(HorizontalPodAutoscaler,自动扩展) ##CNI: flannel:网络配置 calica:网络配置,网络策略 ... ### 资源对象: 负载类型资源:pod,ReplicaSet,Deployment,service,Job,CronJob ### pod生命周期: 初始化容器:init container 启动后:start post 存活状态检测:liveness probe 就绪检测:readiness probe 停止前: pre stop --- 显示集群的运行信息:kubectl cluster-info 显示集群各组件的运行信息:kubectl get cs 显示apiserver各版本:kubectl api-version 查看ReplicaSet的apiVersion:kubelet explian rs 获取pod简单信息:kubectl get pod 获取pod信息并显示label:kubectl get pod --show-labels 获取pod详细信息:kubectl get pod -o wide 获取pod信息并显示为yaml格式:kubectl get pod -o yaml 持续查看pod信息:kubectl get pod -w (watch) 显示标签中含有xxx标签的pod:kubectl get pod -l xxx 为pod打标签:kubectl label pod pod名称 标签key=标签value --overwrite 查看pod的描述信息:kubectl describe xxx 扩缩容器数量:kubectl scale --replicas=3 xxx 回滚到上一个版本:kubectl rollout undo pod名称 修改配置信息:kubectl edit 查看资源字段定义及使用:kubectl explain 资源字段 从dockerhub中拉取最新的nginx镜像,运行端口80,一个副本:kubectl run nginx-deploy --image=nginx --port=80 --relicas=1 查看pod日志:kubelet logs pod名称 容器名称 进入pod中的容器里:kubelet exec -it pod名称 -c 容器名称 -- /bin/sh 删除资源:kubectl delete 删除指定配置资源清单:kubectl delete -f xxx.yaml 删除指定资源:kubelet delete 资源名称 -n namespace 禁止pod调度到该node:kubectl cordon 驱逐节点上的所有pod:kubectl drain 节点重新添加到集群:kubectl uncordon 为节点设置污点:kubectl taint nodes node1 key1=value1:NoSchedule --- 大部分资源的配置清单 --- apiVersion:group/version # kubectl explain 资源类型 kind: 资源类别 metadata:元数据 name:资源名称 namespace:资源命名空间 labels:标签 annotations: spec:规格,期望的状态 containers: livenessProbe:存活探针 httpGet: port:端口或容器中ports定义的端口对应的name path:/index.html exec: command:[命令或脚本] initialDelaySeconds:数字,延迟时间,秒 periodSeconds:数字,探测间隔,秒 readinessProbe:就绪探针 httpGet: port:端口或容器中ports定义的端口对应的name path:/index.html exec: command:[命令或脚本] initialDelaySeconds:数字,延迟时间,秒 periodSeconds:数字,探测间隔,秒 - name:名称 image:镜像地址 args:[entrypoint] lifecycle:存活钩子 postStart: exec: command - name:名称 image:镜像地址 imagePullPolicy:Always[总是去拉取镜像],Never[从来不去拉取],IfNotPresent[本地不存在,拉取] ports:端口列表 - name:端口名称 containerPort:端口 - name:端口名称 containerPort:端口 protocol:协议,默认tcp command:[命令] restartPolicy:Always[总是重启],OnFailure[失败重启],Never[不重启],默认时Always nodeSelector:{节点标签选择器} nodeName:节点名称 annotations:与label不同地方在于,它不能用于挑选资源对象,仅用于为对象提供“元数据” status:状态只读字段,不需要定义 ---