1. Master 负责管理集群 负责协调集群中的所有活动,例如调度应用程序,维护应用程序的状态,扩展和更新应用程序。
  2. Worker节点是VM(虚拟机)或物理计算机,充当k8s集群中的工作计算机。
  3. 每个Worker节点都有一个Kubelet,它管理一个Worker节点并与负责与Master节点通信。该Worker节点还应具有用于处理容器操作的工具,例如Docker
  4. 执行命令 kubectl get namespaces 可以查看名称空间
  5. 执行 kubectl 命令时,可以使用 --namespace 参数指定名称空间,例如:
  6. kubectl run nginx --image=nginx --namespace=<您的名称空间>
  7. kubectl get pods --namespace=<您的名称空间>
  8. 可以通过 set-context 命令改变当前 kubectl 上下文 的名称空间,后续所有命令都默认在此名称空间下执行。
  9. kubectl config set-context --current --namespace=<您的名称空间>
  10. # 验证结果
  11. kubectl config view --minify | grep namespace:
  12. 执行一下命令可查看哪些 Kubernetes 对象在名称空间里,哪些不在:
  13. # 在名称空间里
  14. kubectl api-resources --namespaced=true
  15. # 不在名称空间里
  16. kubectl api-resources --namespaced=false
  17. kubectl k8s 的客户端工具,可以使用命令行管理集群
  18. Deployment 译名为 部署。在k8s中,通过发布 Deployment,可以创建应用程序 (docker image) 的实例 (docker container),这个实例会被包含在称为 Pod 的概念中,Pod k8s 中最小单元的可管理单元。
  19. k8s 集群中发布 Deployment 后,Deployment 将指示 k8s 如何创建和更新应用程序的实例,master 节点将应用程序实例调度到集群中的具体的节点上。
  20. 创建应用程序实例后,Kubernetes Deployment Controller 会持续监控这些实例。如果运行实例的 worker 节点关机或被删除,则 Kubernetes Deployment Controller 将在群集中资源最优的另一个 worker 节点上重新创建一个新的实例。这提供了一种自我修复机制来解决机器故障或维护问题。
  21. Deployment 处于 master 节点上,通过发布 Deploymentmaster 节点会选择合适的 worker 节点创建 ContainerContainer 会被包含在 Pod 里。
  22. 创建 Deployment 后,k8s创建了一个 Pod(容器组) 来放置应用程序实例(container 容器)
  23. Kubernetes Pods(容器组)
  24. Pod 容器组 是一个k8s中一个抽象的概念,用于存放一组 container(可包含一个或多个 container 容器),以及这些 container (容器)的一些共享资源
  25. 这些资源包括:
  26. 共享存储,称为卷(Volumes)
  27. 网络,每个 Pod(容器组)在集群中有个唯一的 IPpod(容器组)中的 container(容器)共享该IP地址
  28. container(容器)的基本信息,例如容器的镜像版本,对外暴露的端口等
  29. Pod(容器组)是 k8s 集群上的最基本的单元。当我们在 k8s 上创建 Deployment 时,会在集群上创建包含容器的 Pod (而不是直接创建容器)。每个Pod都与运行它的 worker 点(Node)绑定,并保持在那里直到终止或被删除。如果节点(Node)发生故障,则会在群集中的其他可用节点(Node)上运行相同的 Pod(从同样的镜像创建 Container,使用同样的配置,IP 地址不同,Pod 名字不同)。
  30. Pod 是一组容器(可包含一个或多个应用程序容器),以及共享存储(卷 Volumes)、IP 地址和有关如何运行容器的信息。
  31. 如果多个容器紧密耦合并且需要共享磁盘等资源,则他们应该被部署在同一个Pod(容器组)中。
  32. Kubernetes Nodes(节点)
  33. 执行以下命令可查看所有节点的列表:
  34. kubectl get nodes -o wide
  35. 执行以下命令可查看节点状态以及节点的其他详细信息:
  36. kubectl describe node <your-node-name>
  37. Pod(容器组)总是在 Node(节点) 上运行。Node(节点)是 kubernetes 集群中的计算机,可以是虚拟机或物理机。每个 Node(节点)都由 master 管理。一个 Node(节点)可以有多个Pod(容器组),kubernetes master 会根据每个 Node(节点)上可用资源的情况,自动调度 Pod(容器组)到最佳的 Node(节点)上。
  38. 每个 Kubernetes Node(节点)至少运行:
  39. Kubelet,负责 master 节点和 worker 节点之间通信的进程;管理 Pod(容器组)和 Pod(容器组)内运行的 Container(容器)。
  40. 容器运行环境(如Docker)负责下载镜像、创建和运行容器等。
  41. Kubernetes 中的 Service(服务) 提供了这样的一个抽象层,它选择具备某些特征的 Pod(容器组)并为它们定义一个访问方式。Service(服务)使 Pod(容器组)之间的相互依赖解耦(原本从一个 Pod 中访问另外一个 Pod,需要知道对方的 IP 地址)。一个 Service(服务)选定哪些 Pod(容器组) 通常由 LabelSelector(标签选择器) 来决定。
  42. 在创建Service的时候,通过设置配置文件中的 spec.type 字段的值,可以以不同方式向外部暴露应用程序:
  43. ClusterIP(默认)
  44. 在群集中的内部IP上公布服务,这种方式的 Service(服务)只在集群内部可以访问到
  45. NodePort
  46. 使用 NAT 在集群中每个的同一端口上公布服务。这种方式下,可以通过访问集群中任意节点+端口号的方式访问服务 <NodeIP>:<NodePort>。此时 ClusterIP 的访问方式仍然可用。
  47. LoadBalancer
  48. 在云环境中(需要云供应商可以支持)创建一个集群外部的负载均衡器,并为使用该负载均衡器的 IP 地址作为服务的访问地址。此时 ClusterIP NodePort 的访问方式仍然可用。
  49. Rolling Update滚动更新 通过使用新版本的 Pod 逐步替代旧版本的 Pod 来实现 Deployment 的更新,从而实现零停机。新的 Pod 将在具有可用资源的 Node(节点)上进行调度。
  50. Kubernetes 更新多副本的 Deployment 的版本时,会逐步的创建新版本的 Pod,逐步的停止旧版本的 Pod,以便使应用一直处于可用状态。这个过程中,Service 能够监视 Pod 的状态,将流量始终转发到可用的 Pod 上。
  51. 默认情况下,Rolling Update 滚动更新 过程中,Kubernetes 逐个使用新版本 Pod 替换旧版本 Pod(最大不可用 Pod 数为 1、最大新建 Pod 数也为 1)。这两个参数可以配置为数字或百分比。在Kubernetes 中,更新是版本化的,任何部署更新都可以恢复为以前的(稳定)版本。
  52. 滚动更新允许以下操作:
  53. 将应用程序从准上线环境升级到生产环境(通过更新容器镜像)
  54. 回滚到以前的版本
  55. 持续集成和持续交付应用程序,无需停机
  56. 查看名称空间:kubectl get namespace
  57. 创建名称空间:kubectl create namespace test_hkd
  58. 查看详细信息:kubectl describe namespace test_hkd
  59. 使用 kubectl api-versions 即可查看当前集群支持的版本
  60. 应用 YAML 文件: kubectl apply -f nginx-deployment.yaml
  61. kubectl get - 显示资源列表
  62. # kubectl get 资源类型
  63. #获取类型为Deployment的资源列表
  64. kubectl get deployments
  65. #获取类型为Pod的资源列表
  66. kubectl get pods
  67. #获取类型为Node的资源列表
  68. kubectl get nodes
  69. kubectl describe - 显示有关资源的详细信息
  70. # kubectl describe 资源类型 资源名称
  71. #查看名称为nginx-XXXXXX的Pod的信息
  72. kubectl describe pod nginx-XXXXXX
  73. #查看名称为nginx的Deployment的信息
  74. kubectl describe deployment nginx
  75. kubectl logs - 查看pod中的容器的打印日志(和命令docker logs 类似)
  76. # kubectl logs Pod名称
  77. #查看名称为nginx-pod-XXXXXXX的Pod内的容器打印的日志
  78. #本案例中的 nginx-pod 没有输出日志,所以您看到的结果是空的
  79. kubectl logs -f nginx-pod-XXXXXXX
  80. kubectl exec - pod中的容器环境内执行命令(和命令docker exec 类似)
  81. # kubectl exec Pod名称 操作命令
  82. # 在名称为nginx-pod-xxxxxx的Pod中运行bash
  83. kubectl exec -it nginx-pod-xxxxxx /bin/bash
  84. ####
  85. kubectl controls the Kubernetes cluster manager.
  86. Find more information at: https://kubernetes.io/docs/reference/kubectl/overview/
  87. Basic Commands (Beginner):
  88. create Create a resource from a file or from stdin.
  89. expose Take a replication controller, service, deployment or pod and expose it as a new Kubernetes Service
  90. run Run a particular image on the cluster
  91. set Set specific features on objects
  92. Basic Commands (Intermediate):
  93. explain Documentation of resources
  94. get Display one or many resources
  95. edit Edit a resource on the server
  96. delete Delete resources by filenames, stdin, resources and names, or by resources and label selector
  97. Deploy Commands:
  98. rollout Manage the rollout of a resource
  99. scale Set a new size for a Deployment, ReplicaSet, Replication Controller, or Job
  100. autoscale Auto-scale a Deployment, ReplicaSet, or ReplicationController
  101. Cluster Management Commands:
  102. certificate Modify certificate resources.
  103. cluster-info Display cluster info
  104. top Display Resource (CPU/Memory/Storage) usage.
  105. cordon Mark node as unschedulable
  106. uncordon Mark node as schedulable
  107. drain Drain node in preparation for maintenance
  108. taint Update the taints on one or more nodes
  109. Troubleshooting and Debugging Commands:
  110. describe Show details of a specific resource or group of resources
  111. logs Print the logs for a container in a pod
  112. attach Attach to a running container
  113. exec Execute a command in a container
  114. port-forward Forward one or more local ports to a pod
  115. proxy Run a proxy to the Kubernetes API server
  116. cp Copy files and directories to and from containers.
  117. auth Inspect authorization
  118. Advanced Commands:
  119. diff Diff live version against would-be applied version
  120. apply Apply a configuration to a resource by filename or stdin
  121. patch Update field(s) of a resource using strategic merge patch
  122. replace Replace a resource by filename or stdin
  123. wait Experimental: Wait for a specific condition on one or many resources.
  124. convert Convert config files between different API versions
  125. kustomize Build a kustomization target from a directory or a remote url.
  126. Settings Commands:
  127. label Update the labels on a resource
  128. annotate Update the annotations on a resource
  129. completion Output shell completion code for the specified shell (bash or zsh)
  130. Other Commands:
  131. api-resources Print the supported API resources on the server
  132. api-versions Print the supported API versions on the server, in the form of "group/version"
  133. config Modify kubeconfig files
  134. plugin Provides utilities for interacting with plugins.
  135. version Print the client and server version information
  136. Usage:
  137. kubectl [flags] [options]
  138. Use "kubectl <command> --help" for more information about a given command.
  139. Use "kubectl options" for a list of global command-line options (applies to all commands).
  140. ####

K8S概念理解的更多相关文章

  1. K8S概念理解参考

  2. 大数据核心知识点:Hbase、Spark、Hive、MapReduce概念理解,特点及机制

    今天,上海尚学堂大数据培训班毕业的一位学生去参加易普软件公司面试,应聘的职位是大数据开发.面试官问了他10个问题,主要集中在Hbase.Spark.Hive和MapReduce上,基础概念.特点.应用 ...

  3. SpringIOC的概念理解、构造器注入、setter注入、p命名空间注入、IOC容器介绍与比较

    1.IOC概念理解 IOC(Inversion of Control)即“控制反转”,不是什么技术,而是一种设计思想.在Java开发中,Ioc意味着将你设计好的对象交给容器控制,而不是传统的在你的对象 ...

  4. Kubernetes重要概念理解

    Kubernetes重要概念理解 kubernetes是目前最主流的容器编排工具,是下一代分布式架构的王者.2018年的kubernetes第一个版本1.10已经发布.下面整理一下,kubernete ...

  5. SNF快速开发平台2019-角色、权限、账户的概念理解-非常全的理论讲解权限控制

    组织模型   资源模型  操作模型 谁能够执行哪些操作    执行资源的范围 资源概念资源就是想要的到的最终物质,我们可以给每一个资源定义一个权限,也可以给某一类资源定义一个权限 权限概念权限是对资源 ...

  6. elasticsearch基本概念理解+elasticsearch 的shards unassigned处理方法 -- 最佳运维实践 - 集群规划

    1.es与MySQL的概念对比 2.概念理解 2.1 Index : 一个索引即是文档的集合 2.2 Document : 一个文档即是一个可被索引的基础单元信息,一条记录: 2.3 Replicas ...

  7. fragment概念理解

    fragment概念理解知识,fragment概念理解图片 fragment概念理解内容,fragment概念理介绍,fragment概念理正文 Fragment是Android honeycomb ...

  8. ubuntn系统下将文件拷贝到优盘中及挂载概念理解

    参考资料:http://jingyan.baidu.com/article/7082dc1c76f178e40a89bdd3.html: http://bbs.csdn.net/topics/3801 ...

  9. Ceph 概念理解

    简介 Ceph是一个可靠地.自动重均衡.自动恢复的分布式存储系统,根据场景划分可以将Ceph分为三大块,分别是对象存储.块设备存储和文件系统服务. 在虚拟化领域里,比较常用到的是Ceph的块设备存储, ...

随机推荐

  1. Linux环境下ProxyChains应用网络代理

    1.下载源码 git clone https://github.com.cnpmjs.org/rofl0r/proxychains-ng.git 或者 https://hub.fastgit.org/ ...

  2. zookeeper Caused by: java.lang.IllegalArgumentException: myid file is missing

    zookeeper 安装集群,配置文件和data和其它都没有问题. 则需要在data里面下添加一个myid 文件 myid里面的数据个service一致 比如.cnf里面配置是 dataDir=/us ...

  3. Kafka启动遇到ERROR Exiting Kafka due to fatal exception (kafka.Kafka$) 解决办法 从kafka的根目录启动 bin/kafka-server-start.sh config/server.properties

    Mysql配置读写数据库 ERROR 1227 (42000): Access denied; you need (at least one of) the SUPER privilege(s) fo ...

  4. VMare 设置固定IP和网段

    切换目录 cd /etc/sysconfig/network-scripts ls查看当前目录下的东西 找到ipcfg- 开头的,而且不是iocfg-lo,而上图就是那个ifcfg-ens33. 则进 ...

  5. 21条最佳实践,全面保障 GitHub 使用安全

    GitHub 是开发人员工作流程中不可或缺的一部分.无论你去哪个企业或开发团队,GitHub 都以某种形式存在.它被超过8300万开发人员,400万个组织和托管超过2亿个存储库使用.GitHub 是世 ...

  6. 【一本通提高组合数学】 计算系数(NOIP2011提高组)

    题面 思路 根据二项式定理, 那么 算  需要用快速幂. 可以根据组合式的递推公式算组合数.我是这么写的. 或者是利用组合数的定义式,但是因为有取余, 所以要用逆元. 其中  为逆元, 这个可以直接用 ...

  7. vue中如何在自定义组件上使用v-model和.sync

    自定义事件 tips 推荐始终使用 kebab-case 的事件名.(v-on会将事件名自动转换为小写,避免匹配不到) changeData × change-data √ 自定义组件的v-model ...

  8. Apache DolphinScheduler 项目笔记 — 1. 问题定位和排查问题

    导语: Yuanhao Ji 同学是<暑期 2021 - API 模块 UT 测试问题解决>项目负责人,本文记录了他是如何排查和定位问题. 1. 背景 问题:在部分 UT 中使用 Powe ...

  9. 入门 Socket.io

    概念 Socket.io 是一个支持客户端和服务器之间的低延迟.双向和基于事件的通信的库,除了支持 JavaScript 以外,还支持 Java.Python.Golang. Socket.io 构建 ...

  10. 手把手教你怎么将linux的一个函数性能搞奔溃

    static struct fib_table *fib_empty_table(struct net *net){    u32 id;    for (id = 1; id <= RT_TA ...