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

Logo

K8S/Kubernetes社区为您提供最前沿的新闻资讯和知识内容

更多推荐