pod

k8s之安装环境知识点一:Kubernetes 组件

落花浮王杯 提交于 2020-01-27 02:29:12
Kubernetes 组件 Kubernetes 组件:   Kubernetes Master控制组件,调度管理整个系统(集群),包含如下组件:   1.Kubernetes API Server     作为Kubernetes系统的入口,其封装了核心对象的增删改查操作,以RESTful API接口方式提供给外部客户和内部组件调用。维护的REST对象持久化到Etcd中存储。   2.Kubernetes Scheduler     为新建立的Pod进行节点(node)选择(即分配机器),负责集群的资源调度。组件抽离,可以方便替换成其他调度器。   3.Kubernetes Controller     负责执行各种控制器,目前已经提供了很多控制器来保证Kubernetes的正常运行。   4. Replication Controller     管理维护Replication Controller,关联Replication Controller和Pod,保证Replication Controller定义的副本数量与实际运行Pod数量一致。   5. Node Controller     管理维护Node,定期检查Node的健康状态,标识出(失效|未失效)的Node节点。   6. Namespace Controller     管理维护Namespace

Kubernetes系列之理解K8s Service的几种模式

邮差的信 提交于 2020-01-27 01:45:58
今天给大家介绍下k8s的service的几种访问模式。 概述 我们知道pod的ip不是固定的,是根据所在宿主机的docker0网卡生成的,每次重启,更新,调度等情况IP都会变,那pod与pod之间需要互相调用,肯定不能用ip的,因为地址不是固定的, 如何能保障pod之前访问的可靠性,由此就衍生出Service的概念。 在实际生产环境中,一般有两种访问 对集群内部的访问, 集群外部的访问。service现在分为以下类型 ClusterIP 集群内部容器访问地址,会生成一个虚拟IP 与pod不在一个网段。 NodePort 会在宿主机上映射一个端口,供外部应用访问模式。 Headless CluserIP 无头模式,无serviceip,即把spec.clusterip设置为None 。 LoadBalancer 使用外部负载均衡。 Port类型 我们先理解Service Port的几种类型。 NodePort 指定暴露到宿主机的端口,不指定的话会随机分配个,分配的IP在apiserver的配置文件中指定了--service-node-port-range=30000-50000,表示只允许分配30000-50000之间的端口。 比如一个nginx应用需要能被外部访问,就需要配置类型为type=NodePort,并且需要配置下nodePort: 30002(指定固定端口)

Kubernetes Pod 驱逐详解

孤者浪人 提交于 2020-01-27 00:56:40
原文链接: Kubernetes Pod 驱逐详解 在 Kubernetes 中,Pod 使用的资源最重要的是 CPU、内存和磁盘 IO,这些资源可以被分为可压缩资源(CPU)和不可压缩资源(内存,磁盘 IO)。可压缩资源不可能导致 Pod 被驱逐,因为当 Pod 的 CPU 使用量很多时,系统可以通过重新分配权重来限制 Pod 的 CPU 使用。而对于不可压缩资源来说,如果资源不足,也就无法继续申请资源(内存用完就是用完了),此时 Kubernetes 会从该节点上驱逐一定数量的 Pod,以保证该节点上有充足的资源。 当不可压缩资源不足时,Kubernetes 是通过 kubelet 来驱逐 Pod 的。kubelet 也不是随机驱逐的,它有自己的一套驱逐机制,每个计算节点的 kubelet 都会通过抓取 cAdvisor 的指标来监控节点的资源使用量,下面我们来具体分析每种情况。 1. 存储资源不足 下面是 kubelet 默认的关于节点存储的驱逐触发条件: nodefs.available<10%(容器 volume 使用的文件系统的可用空间,包括文件系统剩余大小和 inode 数量) imagefs.available<15%(容器镜像使用的文件系统的可用空间,包括文件系统剩余大小和 inode 数量) 当 imagefs 使用量达到阈值时,kubelet

[k8s]kube-dns架构图解

余生长醉 提交于 2020-01-26 13:58:30
kubedns  DNS Policy http://blog.fleeto.us/translation/configuring-private-dns-zones-and-upstream-nameservers-kubernetes Kubernetes 目前在 Pod 定义中支持两个 DNS 策略:Default和ClusterFirst,dnsPolicy缺省为ClusterFirst: 如果dnsPolicy设置为Default,那么域名解析配置会从 Pod 所在节点继承而来。注意,本文所述功能在dnsPolicy设置为Default时无效。 如果dnsPolicy设置为ClusterFirst,DNS 查询会被发送到 kube-dns 服务。kube-dns 服务负责相应以集群域名为后缀(例如.cluster.local)的查询。其他的域名查询(例如 www.kubernetes.io )会被转发给来自节点定义的上级域名服务器。 https://kubernetes.io/docs/concepts/services-networking/dns-pod-service/#dns-policy By default, DNS policy for a pod is ‘ClusterFirst’. So pods running with hostNetwork

Kubernetes基础:重启pod的方法

大城市里の小女人 提交于 2020-01-26 01:04:43
Kubernetes没有提供诸如docker restart类似的命令用于重启容器那样重启pod的命令,一般会结合restartPolicy进行自动重启,这篇文章整理一下偶尔需要手动进行重启的时候所需要使用的方法。 事前准备 环境准备 本文使用Kubernetes 1.17,可参看下文进行快速环境搭建: 单机版本或者集群版本环境搭建 pod准备 使用如下pod的yaml文件 [root@host131 config]# cat busybox-pod-test.yaml apiVersion: v1 kind: Pod metadata: name: test-pod spec: containers: - name: busybox-container image: busybox:latest command: ["sleep", "15"] restartPolicy: Never [root@host131 config]# 执行命令:kubectl create -f busybox-pod-volume.yaml 执行日志示例如下所示 [root@host131 ~]# kubectl get pods No resources found in default namespace. [root@host131 ~]# kubectl create -f busybox

k8s CLI 操作笔记

落花浮王杯 提交于 2020-01-26 00:18:17
k8s CLI 操作笔记 k8s 获取所有的命名空间 namspace 可简写为 ns [ root@vic-master ~ ] # kubectl get ns NAME STATUS AGE default Active 32d development Active 31d kube-node-lease Active 32d kube-public Active 32d kube-system Active 32d 查看所有的节点 node 可简写为 no [ root@vic-master ~ ] # kubectl get no NAME STATUS ROLES AGE VERSION vic-master Ready master 33d v1.14.0 vic-node1 Ready < none > 32d v1.14.0 vic-node2 Ready < none > 32d v1.14.0 查询 pod , pod 简写为 po , 这里默认的命名空间的 default [ root@vic-master ~ ] # kubectl get po NAME READY STATUS RESTARTS AGE frontend 1/1 Running 0 31d myapp-54fc6bbfbd-f6cpk 1/1 Running 0 20h myapp

k8s 通过环境变量获取Pod信息

狂风中的少年 提交于 2020-01-25 22:59:40
env: - name: MY_NODE_NAME valueFrom: fieldRef: fieldPath: spec.nodeName // 节点名称 - name: MY_POD_NAME valueFrom: fieldRef: fieldPath: metadata.name // pod 名称 - name: MY_POD_NAMESPACE valueFrom: fieldRef: fieldPath: metadata.namespace // 命名空间 - name: MY_POD_IP valueFrom: fieldRef: fieldPath: status.podIP // pod ip - name: MY_POD_SERVICE_ACCOUNT valueFrom: fieldRef: fieldPath: spec.serviceAccountName // 这个不清楚,还没学习到 官方链接: https://kubernetes.io/zh/docs/tasks/inject-data-application/environment-variable-expose-pod-information/ 来源: https://www.cnblogs.com/wh-blog/p/12233483.html

pod的状态及操作

安稳与你 提交于 2020-01-25 17:58:22
查看pod的标签 [root@master pod]# kubectl get pods --show-labels NAME READY STATUS RESTARTS AGE LABELS cv-podh 1/2 CrashLoopBackOff 15 55m app=myapp,tier=frontend mysql-gh9ds 1/1 Running 4 28h app=mysql,cx=z pod 1/2 CrashLoopBackOff 70 27h app=myapp,tier=frontend 给pod添加标签 [root@master pod]# kubectl label pods mysql-gh9ds sql=3306 pod/mysql-gh9ds labeled [root@master pod]# kubectl get pods -l sql=3306 --show-labels NAME READY STATUS RESTARTS AGE LABELS mysql-gh9ds 1/1 Running 4 28h app=mysql,cx=z,sql=3306 修改pod标签 [root@master pod]# kubectl label pods mysql-gh9ds --overwrite sql=321 pod/mysql-gh9ds

Kubernetes-Service资源详解

安稳与你 提交于 2020-01-25 13:23:30
service的三种工作模式: (userstats(效率低)、iptables、ipvs) service可以自动实现负载均衡 。 service自动实现了负载均衡,service通过selector标签选择器匹配了后面多个pod!后端多个pod提供底层服务。 Service版本介绍 userspace: 1.1之前版本 iptabls: 1.10之前版本 ipvs: 1.11之后版本 service依赖core-dns 四种 service类型: ExternalName (把外部集群服务引入到集群内部使用)、 ClusterIP ( 默认这个。仅仅用于集群内部通信 )、 NodePort (和集群外部通信)、 LoadBalance (把k8s部署在云环境上面,云环境支持LBAS(负载均衡即服务一键调用),创建软负载均衡器使用。自动外部触发创建一个负载均衡,例如阿里LB-service)。 资源记录 SVC_NAME.NS_NAME.DOMAIN.LTD. #提供service服务域名格式 svc.clusqter.local #集群的默认名字域名 redis.default.svc.clustel.local. #每一个服务生产的域名格式,默认格式 Service用标签selector和后端pod建立关系,所以pod要先跑起来。 0、 kube

初识k8s

拈花ヽ惹草 提交于 2020-01-25 09:40:24
Kubernetes,简称K8s,是用8代替8个字符“ubernete”而成的缩写。是一个开源的,用于管理云平台中多个主机上的容器化的应用,Kubernetes的目标是让部署容器化的应用简单并且高效(powerful),Kubernetes提供了应用部署,规划,更新,维护的一种机制。 传统的应用部署方式是通过插件或脚本来安装应用。这样做的缺点是应用的运行、配置、管理、所有生存周期将与当前操作系统绑定,这样做并不利于应用的升级更新/回滚等操作,当然也可以通过创建虚拟机的方式来实现某些功能,但是虚拟机非常重,并不利于可移植性。 新的方式是通过部署容器方式实现,每个容器之间互相隔离,每个容器有自己的文件系统 ,容器之间进程不会相互影响,能区分计算资源。相对于虚拟机,容器能快速部署,由于容器与底层设施、机器文件系统解耦的,所以它能在不同云、不同版本操作系统间进行迁移。 容器占用资源少、部署快,每个应用可以被打包成一个容器镜像,每个应用与容器间成一对一关系也使容器有更大优势,使用容器可以在build或release 的阶段,为应用创建容器镜像,因为每个应用不需要与其余的应用堆栈组合,也不依赖于生产环境基础结构,这使得从研发到测试、生产能提供一致环境。类似地,容器比虚拟机轻量、更“透明”,这更便于监控和管理。 Kubernetes概述 Kubernetes是Google开源的一个容器编排引擎