kubectl 的基本使用

kubectl 是与 kubernetes 集群交互的一个命令行工具。我们可以用它来查看和管理 kubernetes 集群。

kubectl 是一个相对独立的工具。它可以配置用来访问本地的集群,也可以用来访问远端的集群。这些都可以保存在配置文件里并通过 context 进行切换。

kubernetes 对外通过 http 端口暴露服务,kubectl 正是通过与 kubernets api server 的 http 端口交互来操作集群。

使用kubectl查看k8s集群的版本和基本信息

kubectl cluster-info

可以看到, kubernetes 监听了本地的 32768 端口, kubectl 正是通过此端口与 kubernetes api server (master)交互。

版本信息里面显示了 client (kubectl) 以及 server( api server) 组件的版本等详细信息。

使用kubectl查看k8s集群结构

pods是类似于 docker 中 container 的概念,是 kubernetes 最基本的单元之一。可以看到, kubernetes 本身的组件也是通过容器化的方式运行在集群中,并且都存在于 kube-system 这个 namespace 下。

这些组件有:

  • etcd: kubernetes 的存储组件。kubernetes 中的数据主要都存在于其中,比如我们之前提到的 ConfigMap,、Namespace 等各种 Resource。
  • apiserver: kubernetes 对外提供 API 服务的组件,它也主要负责与 etcd 交互。
  • scheduler: 负责调度 pod 的组件。当我们想在一堆机器中运行 pod 时,它负责决定将 pod 运行在哪个机器上。
  • controller-manager: 当 pod 调度到机器上之后,其它服务将 pod 运行起来。controller manager 相当于一个具体执行任务的组件。V
  • proxy: 负责 pod / 服务 访问的组件,每个机器上都会有一个,所以上面会有三个(三个节点)
  • dns: 负责集群内的 dns 功能。
  • dashboard: 提供了一个 UI 管理界面,是可选组件。本次实验中用不到,可忽略其错误。

可以将上面的 Pods 列表与 Kubernetes 集群的架构图对比观察:

此处输入图片的描述

其中 kubelet 是每个节点上都会有的 agent,负责本机器上的一些任务执行。

kubernetes 自身的组件也是通过上面所说的 Resource 结构来呈现的。之前说过,集群有一个已经创建的 namespace 叫 kube-system, 我们可以通过研究下它里面的内容来查看下集群结构:

kubectl get pods -n kube-system

查看 kubernetes 集群配置文件

在当前用户的目录下,我们可以看到 kubectl 的配置文件的内容:

cat ~/.kube/config
移动端设备除iPad Pro外,其它移动设备仅能阅读基础的文本文字。
建议使用PC或笔记本电脑,浏览器使用Chrome或FireFox进行浏览,以开启左侧互动实验区来提升学习效率,推荐使用的分辨率为1920x1080或更高。
我们坚信最好的学习是参与其中这一理念,并致力成为中文互联网上体验更好的学练一体的IT技术学习交流平台。
您可加QQ群:575806994,一起学习交流技术,反馈网站使用中遇到问题。
内容、课程、广告等相关合作请扫描右侧二维码添加好友。

狐狸教程 Copyright 2021

进入全屏