k8s知识点速记
可以把豆子看成是docker容器,pod好比管理docker容器的一个虚拟机,每个pod在集群中都会有一个唯一的IP地址,pod中的各个容器之间可以通过localhost访问彼此容器的服务,pod内部可以共享存储卷。节点驱逐后,将会把节点的所有pod(不包括DaemonSet管理的Pod)从节点中驱逐到集群内其他节点,并将节点设置为封锁状态。本地存储的Pod被驱逐后数据将丢失。pod的容忍度的意思
1.Kubernetes是什么?
答:容器编排技术,简单的来说就是来管理成千上万的pod(里面放着是docker容器)。
2.pod是什么?
pod就像一个豆荚,里面有很多个小豆子。
可以把豆子看成是docker容器,pod好比管理docker容器的一个虚拟机,每个pod在集群中都会有一个唯一的IP地址,pod中的各个容器之间可以通过localhost访问彼此容器的服务,pod内部可以共享存储卷。
3.Kubernetes架构
答:由master节点(控制平面),node节点(工作节点)。master好比老板是发号施令的管理者,node节点就是接受命令的执行者,
这些节点在在这里为物理机或者是虚拟机。
4.Kubernetes的master节点存在的服务
Kube-Apiserver:k8s请求入口,提供kubectl命令对接,并且为node节点的kubelet进行状态汇报的对象。(为master节点上的进程,端口6443)
Kube-Controller-Manager :控制器管理,主要用来判断计算pod是要增加或者要减少。
Kube-Scheduler:任务调度,用来判断pod应该调度到哪一个节点上。
Etcd:键值对数据库,用来存储集群的一些信息。(可以在master节点上搭建也可以单独服务器搭建,进程端口2379)
5.pod服务配置访问形式
pod在被销毁后,重新启动后,ip是会在变动的。这就没法直接提供给应用直接使用。
1.所以可以使用服务Service,存在3种模式:
1.1ClutserIp:集群内访问(service的port对应到容器的TargetPort)
1.2NodePort:集群外访问,通过暴露节点服务器的端口,提供对外服务(NodeIp:NodePort->Port(service)-->TargetPort(容器))
1.3LoadBalancer:集群外访问,工作负载形式,在NodePort增加负载均衡器的形式访问
(LoadBalancerIp:LoadBalancerPort-->NodeIp:NodePort->Port(service)-->TargetPort(容器))
以上的作用在四层负载均衡(传输层工作)
2.使用服务Ingress。可使用路径转发规则,转发到NodePort或者LoadBalancer,有点类似nginx的形式,为七层负载均衡(在应用层和传输层工作)
6.节点进行封锁(cordon)
封锁节点后,将不接受新的Pod调度到该节点,不影响原先已经在该节点的pod。
7.节点进行驱逐(drain)
节点驱逐后,将会把节点的所有pod(不包括DaemonSet管理的Pod)从节点中驱逐到集群内其他节点,并将节点设置为封锁状态。本地存储的Pod被驱逐后数据将丢失。
8.污点
节点上污点的意思,是当前节点存在一些限制,可能内存不足、主节点不允许被pod调度,这些都是用来防止服务调度过来出现问题。
8.1查找节点污点
kubectl get nodes
kubectl describe node node名称 | grep -i taint
8.2去除节点污点(注意后面的-号表示去除的意思)
kubectl taint nodes node名称 node.cloudprovider.kubernetes.io/uninitialized=true:NoSchedule-
8.3节点打上污点
kubectl taint nodes node名称 node.cloudprovider.kubernetes.io/uninitialized=true:NoSchedule
9.pod容忍度
pod的容忍度的意思,是表示是否可以接受node节点的污点,如果是NoSchedule,pod接受了话就可以被调度到节点上。
10.亲和度、反亲和度
用这种来说明pod应该被部署在哪些节点上,或者哪些pod应该被部署到同一节点或不同节点。
亲和度:表示pod应该被调度到同一个节点上
反亲和度:表示pod的不应该被调度到同一个节点上
11.查看pod的容器日志
pod中多个容器: kubectl logs pod名称 -n 命名空间 --tail=10 -f -c 容器名称
pod中单个容器: kubectl logs pod名称 -n 命名空间 --tail=10 -f
12.进入pod的容器
kubectl exec -it pod名称 -- /bin/sh
更多推荐
所有评论(0)