简介
Kubernetes 的整体架构如下。
K8S 包含了两类节点,Master 和 Nodes ,前者用于管理协调集群,包含了 kube-apiserver
kube-controller-manager
kube-scheduler
三个进程;后者则是真正工作的机器,包含了 kubelet
kube-proxy
两个进程。
- API Server 对外提供 RESTFull 接口,负责处理用户请求,这是唯一与 etcd 集群通信的组件。
- Controller 运行了一系列控制器,修改各种资源对象,向用户期望状态进行迁移。
- Scheduler 根据配置为运行的 Pod 选择部署的 Worker 节点。
客户端
通常通过 kubectl
与 K8S 集群进行交互。
自动补全
一般的 Bash 或者 Zsh 都提供了自动补全的方式,不过需要安装单独的依赖包,默认是安装的,例如 bash-completion
,可以通过 type _init_completion
命令检查,详细参考 自动补全 。
可以通过 kubectl completion bash
生成命令补全内容,参数也可以是 zsh
,然后通过如下方式进行配置。
----- 1. 生成配置文件,并添加到~/.bashrc文件中
# kubectl completion bash > /usr/share/bash-completion/bash_completion
# source /usr/share/bash-completion/bash_completion
----- 2. 加载默认配置,添加到默认的加载目录
# kubectl completion bash > /etc/bash_completion.d/kubectl
在输出的时候,可以通过 -o custom-columns=XXX
指定输出内容以及格式。
kubeconfig
K8S 中通过配置文件保存了集群、用户、命名空间、鉴权等与集群建立连接相关信息,默认保存在 ~/.kube/config
文件中,也可以通过 KUBECONFIG
环境变量,或者 --kubeconfig
参数指定。
当通过 kubectl config view
命令查看时,有可能是几个配置文件的合并,详见 Organizing Cluster Access Using kubeconfig Files 中的介绍。
通常一个集群对应了一个上下文,其上下文包括了:
- 集群 (Cluster),集群API服务器的URL地址;
- 用户 (User),集群的特定用户的身份验证凭据;
- 命名空间 (Namespace),连接到集群时使用的命名空间。
也就是说,在切换集群的时候,实际上就是切换上下文,当然,也可以通过 --cluster
--user
--namespace
指定。
如下是常用的命令。
----- 查看配置,也就是~/.kube/config,可以通过 --minify 减少输出
# client/bin/kubectl config view
----- 设置ctl命令的默认NS
# client/bin/kubectl config set-context --current --namespace=default
----- 列出所有上下文信息以及当前上下文信息
# client/bin/kubectl config get-contexts
# client/bin/kubectl config current-contexts
基本概念
Namespace
用来做逻辑隔离,一般在用户比较多的时候使用,在不同 Namespace 中可以出现相同的 name 。
----- 查看当前所有的NS
# kubectl get namespace
----- 查看某个NS下的Pods信息
# kubectl get pods --namespace=default
默认会创建三个命名空间:
default
如果在创建对象的时候不指定,则使用该空间;kube-system
由K8S系统本身所使用的空间;kube-public
一般在集群管理的时候使用,可以被多个集群同时访问。