• Kubernetes概述
  • Kubernetes设计架构
  • kubernetes设计理念
  • 创建Kubernetes集群
  • 基于Docker本地运行Kubernetes
  • 使用Vagrant
  • 本地运行Kubrenetes v1.0
  • Google Computer Engine入门
  • AWS EC2快速入门
  • 在Azure上使用CoreOS和Weave的 Kubernetes
  • 从零开始k8s
  • CoreOS部署Kubernetes集群
  • CloudStack部署Kubernetes集群
  • vSphere部署Kubernetes集群
  • Ferdora部署Kubernetes集群
  • CentOS部署Kubernetes集群
  • Ubuntu物理节点上部署Kubernets集群
  • Mesos部署Kubernetes集群
  • Kubernetes用户指南:应用程序管理
  • 名词解释 Pods
  • 名词解释 Labels
  • 名词解释:Namespace
  • 名词解释 Replication Controller
  • 名词解释:Node
  • 名词解释:ReplicaSets
  • 名词解释 Services
  • 名词解释 Volumes
  • 名词解释:PV/PVC/StorageClass
  • 名称解释:Deployment
  • 名词解释:Secret
  • 名词解释:StatefulSet
  • 名词解释:DaemonSet
  • 名词解释:Service Account
  • 名词解释:CronJob
  • 名词解释:Job
  • 名词解释:Security Context和PSP
  • 名词解释:Resource Quotas
  • 名词解释:Network Policy
  • 名词解释:Ingress
  • 名词解释:ThirdPartyResources
  • 名词解释:ConfigMap
  • 名词解释:PodPreset
  • 配置Kubernetes
  • 管理应用:部署持续运行的应用
  • Horizontal Pod Autoscaling
  • 管理应用:连接应用
  • 管理应用: 在生产环境中使用Pods和容器
  • Kubernetes UI
  • Kube-API Server
  • 授权插件
  • 认证插件
  • API Server端口配置
  • Admission Controller
  • Service Accounts集群管理指南
  • 使用Kubernetes在云上原生部署cassandra
  • Spark例子
  • Storm 示例
  • 示例: 分布式任务队列 Celery, RabbitMQ和Flower
  • Kubernetes在Hazelcast平台上部署原生云应用
  • Meteor on Kuberenetes
  • 配置文件使用入门
  • 环境向导示例
  • 在Kubernetes上运行你的第一个容器
  • kubectl
  • 安装和设置kubectl
  • kubectl annotate
  • kubectl api-versions
  • kubectl apply
  • kubectl attach
  • kubectl cluster-info
  • kubectl config
  • kubectl config set-cluster
  • kubectl config set-context
  • kubectl config set-credentials
  • kubectl config set
  • kubectl config unset
  • kubectl config use-context
  • kubectl config view
  • kubectl create
  • kubectl delete
  • kubectl describe
  • kubectl edit
  • kubectl exec
  • kubectl logs
  • kubectl version
  • 故障排查
  • 应用程序相关的故障排查
  • Node是Pod真正运行的主机,可以物理机,也可以是虚拟机。为了管理Pod,每个Node节点上至少要运行container runtime(比如docker或者rkt)、kubelet和kube-proxy服务。

    Node管理

    不像其他的资源(如Pod和Namespace),Node本质上不是Kubernetes来创建的,Kubernetes只是管理Node上的资源。虽然可以通过Manifest创建一个Node对象(如下json所示),但Kubernetes也只是去检查是否真的是有这么一个Node,如果检查失败,也不会往上调度Pod。

    "kind": "Node", "apiVersion": "v1", "metadata": { "name": "10.240.79.157", "labels": { "name": "my-first-k8s-node"

    这个检查是由Node Controller来完成的。Node Controller负责

  • 维护Node状态
  • 与Cloud Provider同步Node
  • 给Node分配容器CIDR
  • 删除带有NoExecute taint的Node上的Pods
  • 默认情况下,kubelet在启动时会向master注册自己,并创建Node资源。

    Node的状态

    每个Node都包括以下状态信息

  • 地址:包括hostname、外网IP和内网IP
  • 条件(Condition):包括OutOfDisk、Ready、MemoryPressure和DiskPressure
  • 容量(Capacity):Node上的可用资源,包括CPU、内存和Pod总数
  • 基本信息(Info):包括内核版本、容器引擎版本、OS类型等
  • Taints和tolerations

    Taints和tolerations用于保证Pod不被调度到不合适的Node上,Taint应用于Node上,而toleration则应用于Pod上(Toleration是可选的)。

    比如,可以使用taint命令给node1添加taints:

    kubectl taint nodes node1 key1=value1:NoSchedule
    kubectl taint nodes node1 key1=value2:NoExecute
    

    Taints和tolerations的具体使用方法请参考调度器章节

    Node维护模式

    标志Node不可调度但不影响其上正在运行的Pod,这种维护Node时是非常有用的

    kubectl cordon $NODENAME
    
  • Kubernetes Node
  • Taints和tolerations
  • https://feisky.gitbooks.io/kubernetes/concepts/node.html
  •