k8s访问pod里面容器(k8s访问容器内部端口)
原标题:k8s访问pod里面容器(k8s访问容器内部端口)
导读:
k8s在创建pod时先创建pause容器,还是先与cni交互执行网络1、总结,Kubernetes在创建pod时,先启动pause容器以创建命名空...
k8s在创建Pod时先创建pause容器,还是先与cni交互执行网络
1、总结,kubernetes在创建POD时,先启动pause容器以创建命名空间,然后pod中的其他容器共享这个命名空间,实现进程间的隔离和独立封装。通过pause容器的命名空间机制,确保了容器之间的资源隔离和通信隔离,有效管理了容器在集群中的运行。
2、sandbox创建:首先,containerd通过CRI创建sandbox,包含容器的基本信息和配置。网络环境设置:在创建sandbox的过程中,CNI插件负责设置容器的网络环境,包括命名空间、网卡等。容器创建与网络配置:容器创建后,CNI插件执行网络设置,确保每个Pod的网络环境正确配置。
3、K8s中Pod的创建开始到结束的详细过程包括用户提交创建请求、API server接收并认证、Pod对象信息写入etcd、Scheduler调度Pod、Kubelet创建并运行Pod、Pod状态更新以及Pod就绪性探测。用户提交创建请求:用户通过kubectl命令行工具或其他Kubernetes API客户端提交Pod创建请求。
4、Pod 功能:Pod是K8S中最小的可部署单元,通常由一个或多个紧密耦合的容器组成。这些容器共享网络、存储资源,并在同一个环境中运行。结构:Pod可以包含一个或多个容器,这些容器通过共享资源实现紧密耦合。当创建一个Pod时,K8S调度器会将Pod调度到合适的工作节点上。
K8S之nodePort、port、targetPort和containerport
1、K8S中的NodePort、port、tarGetPort和containERPort解释如下:在KuberneTES(K8s)中,Service是一种抽象层,它定义了一个逻辑集合和访问它们的策略。Service允许你访问一组运行在一个或多个Pods上的应用程序。
2、targetPort是针对Docker容器设置的端口。当数据从nodePort或port进入时,kube-proxy将数据路由至后端pod的targetPort上,最终进入容器内部。值得注意的是,targetPort与containerPort必须保持一致。containerPort则是定义在pod控制器中的端口,用于容器需要暴露给外界的接口。
3、Service的端口范围(port)通过参数--service-node-port-range指定(默认30000-32767),并映射到Pods的特定端口(containerPort)。这样,Service IP + port组合可以提供稳定的服务访问,而无需担心Pods的变化。为了实现更复杂的服务发现和路由,Kubernetes提供了几种解决方案。
4、由于Apache SkyWalking Kubernetes默认的安装方式是采用的ClusterIP,我们需要改为NodePort方式。在skywalking-kubernetes/chart/skywalking/templates下找到oap-svc.yaml文件,修改其中的配置,添加targetPort和nodePort。如果仅仅用于安装演示skywalking。本步骤可以跳过不执行。
5、我们使用的service type是NodePort,yaml里没有申明nodePort 所以k8s会默认创建一个nodePort (30000-40000),然后我们通过node ip 加 nodePort 就可以访问service。
...系列」docker容器经常被kill掉,k8s中该节点的pod也被驱赶,怎么分析...
在面临Docker容器被频繁kill掉,以及k8s中该节点pod被驱赶的情况时,要找出问题的根源,关键在于深入分析容器的运行状态、内存使用情况以及系统资源的分配状况。以下为解决此类问题时,可以采取的步骤与工具,帮助您更直观地找出问题所在。首先,要从容器输出和状态详情入手。
Node:集群中的工作负载节点,可以是物理机或虚拟机,由Master分配负载。当节点宕机,工作负载会被自动转移。3 Pod:最小管理单位,运行在Node节点上,包含多个业务容器,容器间共享网络命名空间、IP地址、端口,可通过localhost进行通讯。
在Kubernetes(K8s)中,当pod状态显示为“ContainerCreating”,这意味着pod已经由调度器分配至特定节点,该节点的kubelet正在创建容器。在此阶段,系统会进行容器创建操作。一旦所有容器启动并运行,pod状态将从“ContainerCreating”转变为“Running”。
Docker容器:Docker容器内的应用程序进程直接运行在宿主机的内核上,没有自己的内核。这使得Docker容器比传统虚拟机更轻便、更高效。k8s容器集群:在k8s中,容器通常是以Pod的形式存在的,Pod是k8s中最小的可部署的计算单元。k8s负责将Pod调度到合适的节点上运行,并确保Pod的高可用性和可扩展性。
例如,查看某个pod的日志时,首先需要在pod所在节点上查看kubelet存放的日志文件。数字标记代表了容器重启次数,例如“2393”和“2394”分别表示第2393次和第2394次重启后的日志记录。实际上,这些日志文件为链接文件,指向了docker容器的日志文件。