文章轉載自:https://blog.51cto.com/loong576/2452592
一、k8s核心組件

Kubernetes 主要由以下幾個核心組件組成:
- etcd 保存了整個集群的狀態;
- apiserver 提供了資源操作的唯一入口,並提供認證、授權、訪問控制、API注冊和發現等機制;
- controller manager 負責維護集群的狀態,比如故障檢測、自動擴展、滾動更新等;
- scheduler 負責資源的調度,按照預定的調度策略將Pod調度到相應的機器上;
- kubelet 負責維護容器的生命周期,同時也負責Volume(CVI)和網絡(CNI)的管理;
- Container runtime 負責鏡像管理以及Pod和容器的真正運行(CRI);
- kube-proxy 負責為Service提供cluster內部的服務發現和負載均衡
二、kubectl簡介
kubectl 是 Kubernetes 的命令行工具(CLI),是 Kubernetes 用戶和管理員必備的管理工具。該kubectl工具控制Kubernetes集群管理器。它可以讓您檢查集群資源,創建、刪除和更新組件以及更多功能。kubectl 提供了大量的子命令,方便管理 Kubernetes 集群中的各種功能。
1.kubectl用法
- kubectl -h 查看子命令列表
- kubectl options 查看全局選項
- kubectl
--help 查看子命令的幫助 - kubectl [command] [PARAMS] -o=
設置輸出格式(如 json、yaml、jsonpath 等) - kubectl explain [RESOURCE] 查看資源的定義
2.kubectl 插件krew
krew 是一個用來管理 kubectl 插件的工具,類似於 apt 或 yum,支持搜索、安裝和管理kubectl 插件。
1.git安裝
# yum -y install git
2.安裝krew
官方地址:https://krew.sigs.k8s.io/docs/user-guide/setup/install/
(
set -x; cd "$(mktemp -d)" &&
OS="$(uname | tr '[:upper:]' '[:lower:]')" &&
ARCH="$(uname -m | sed -e 's/x86_64/amd64/' -e 's/\(arm\)\(64\)\?.*/\1\2/' -e 's/aarch64$/arm64/')" &&
KREW="krew-${OS}_${ARCH}" &&
curl -fsSLO "https://github.com/kubernetes-sigs/krew/releases/latest/download/${KREW}.tar.gz" &&
tar zxvf "${KREW}.tar.gz" &&
./"${KREW}" install krew
)
3.加載環境變量
# export PATH="${KREW_ROOT:-$HOME/.krew}/bin:$PATH"
# 可以永久寫的用戶的環境變量文件,避免登出后失效。
# cat ~/.bashrc
export PATH="${KREW_ROOT:-$HOME/.krew}/bin:$PATH"
4.安裝確認
# kubectl plugin list
The following compatible plugins are available:
/root/.krew/bin/kubectl-krew
四、krew使用
1.插件索引更新
# kubectl krew update
Updated the local copy of plugin index.
2.插件搜索
# kubectl krew search
# kubectl krew search crt
搜索全部插件和模糊搜索

3.安裝插件
# kubectl krew install get-all
# kubectl krew install ns tail

4.查看已裝插件
# kubectl krew list
PLUGIN VERSION
get-all v1.2.1
krew v0.3.2
ns v0.7.1
tail v0.10.1
5.查看插件詳情
# kubectl krew info ns
NAME: ns
URI: https://github.com/ahmetb/kubectx/archive/v0.7.1.tar.gz
SHA256: 6df4def2caf5a9c291310124098ad6c4c3123936ddd4080b382b9f7930a233ec
VERSION: v0.7.1
HOMEPAGE: https://github.com/ahmetb/kubectx
DESCRIPTION:
Also known as "kubens", a utility to set your current namespace and switch
between them.
CAVEATS:
\
| If fzf is installed on your machine, you can interactively choose
| between the entries using the arrow keys, or by fuzzy searching
| as you type.
|
| See https://github.com/ahmetb/kubectx for customization and details.
/
6.插件更新
更新插件ns,由於是最新版所以更新失敗,可通過命令’kubectl krew upgrade’更新全部插件
# kubectl krew upgrade ns
Updated the local copy of plugin index.
F1118 17:21:47.271927 81116 root.go:58] failed to upgrade plugin "ns": can't upgrade, the newest version is already installed
7.使用插件–ns
# kubectl
kubectl kubectl-get_all kubectl-krew kubectl-ns kubectl-tail
# kubectl ns weave
# kubectl-ns default

裝完插件后可通過命令kubectl <plugin-name> 或者kubectl-<plugin-name> 使用插件,比如’kubectl ns weave’和’kubectl-ns default’都可以切換默認表空間
8.使用插件–get-all
該命令類似’kubectl get all --all-namespaces’,但更全。
# kubectl-get_all

9.使用插件–tail
tail為輸出pod日志,以上命令分別為:輸出全部pod日志、輸出所有命名空間default的pod日志、輸出全部命名空間中所有replicaset為kubeapps-8fd98f6f5的pod日志、輸出命名空間為kubeapps且replicaset為kubeapps-8fd98f6f5的pod日志。
# kubectl-tail
# kubectl-tail --ns default
# kubectl-tail --rs kubeapps-8fd98f6f5
# kubectl-tail --rs kubeapps/kubeapps-8fd98f6f5

10.卸載插件
卸載插件tail
# kubectl krew uninstall tail
Uninstalled plugin tail
五、krew卸載
主要是刪除用戶目錄下的.krew隱藏文件夾:rm -rf ~/.krew
1.查看安裝目錄
# kubectl krew version
OPTION VALUE
GitTag v0.3.2
GitCommit bd754e1
IndexURI https://github.com/kubernetes-sigs/krew-index.git
BasePath /root/.krew
IndexPath /root/.krew/index
InstallPath /root/.krew/store
DownloadPath /tmp/krew-downloads
BinPath /root/.krew/bin
2.卸載
# rm -rf /root/.krew
