環境說明:node
主機名 | 操做系統版本 | ip | docker version | kubelet version | 配置 | 備註 |
---|---|---|---|---|---|---|
master | Centos 7.6.1810 | 172.27.9.131 | Docker 18.09.6 | V1.14.2 | 2C2G | master主機 |
node01 | Centos 7.6.1810 | 172.27.9.135 | Docker 18.09.6 | V1.14.2 | 2C2G | node節點 |
node02 | Centos 7.6.1810 | 172.27.9.136 | Docker 18.09.6 | V1.14.2 | 2C2G | node節點 |
k8s集羣部署詳見:Centos7.6部署k8s(v1.14.2)集羣
k8s學習資料詳見:基本概念、kubectl命令和資料分享 git
Kubernetes 主要由如下幾個核心組件組成:github
- etcd 保存了整個集羣的狀態;
- apiserver 提供了資源操做的惟一入口,並提供認證、受權、訪問控制、API註冊和發現等機制;
- controller manager 負責維護集羣的狀態,好比故障檢測、自動擴展、滾動更新等;
- scheduler 負責資源的調度,按照預約的調度策略將Pod調度到相應的機器上;
- kubelet 負責維護容器的生命週期,同時也負責Volume(CVI)和網絡(CNI)的管理;
- Container runtime 負責鏡像管理以及Pod和容器的真正運行(CRI);
- kube-proxy 負責爲Service提供cluster內部的服務發現和負載均衡
kubectl 是 Kubernetes 的命令行工具(CLI),是 Kubernetes 用戶和管理員必備的管理
工具。該kubectl工具控制Kubernetes集羣管理器。它可讓您檢查集羣資源,建立、刪除和更新組
件以及更多功能。kubectl 提供了大量的子命令,方便管理 Kubernetes 集羣中的各類功能。docker
- kubectl -h 查看子命令列表
- kubectl options 查看全局選項
- kubectl <command> --help 查看子命令的幫助
- kubectl [command] [PARAMS] -o=<format> 設置輸出格式(如 json、yaml、jsonpath 等)
- kubectl explain [RESOURCE] 查看資源的定義
krew
是一個用來管理 kubectl 插件的工具,相似於 apt 或 yum,支持搜索、安裝和管理kubectl 插件。json
[root@master ~]# yum -y install git
set -x; cd "$(mktemp -d)" && curl -fsSLO "https://github.com/kubernetes-sigs/krew/releases/download/v0.3.2/krew.{tar.gz,yaml}" && tar zxvf krew.tar.gz && ./krew-"$(uname | tr '[:upper:]' '[:lower:]')_amd64" install \ --manifest=krew.yaml --archive=krew.tar.gz
可能因爲網絡緣由介質沒法下載,已上傳github:https://github.com/loong576/krew-for-kubectl.gitapi
[root@master ~]# export PATH="${KREW_ROOT:-$HOME/.krew}/bin:$PATH"
能夠永久寫的用戶的環境變量文件,避免登出後失效。bash
[root@master ~]# kubectl plugin list The following compatible plugins are available: /root/.krew/bin/kubectl-krew
安裝完成網絡
[root@master ~]# kubectl krew update Updated the local copy of plugin index.
[root@master ~]# kubectl krew search [root@master ~]# kubectl krew search crt
搜索所有插件和模糊搜索app
[root@master ~]# kubectl krew install get-all [root@master ~]# kubectl krew install ns tail
[root@master ~]# kubectl krew list PLUGIN VERSION get-all v1.2.1 krew v0.3.2 ns v0.7.1 tail v0.10.1
[root@master ~]# 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. /
[root@master ~]# 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
更新插件ns,因爲是最新版因此更新失敗,可經過命令'kubectl krew upgrade'更新所有插件負載均衡
[root@master ~]# kubectl kubectl kubectl-get_all kubectl-krew kubectl-ns kubectl-tail [root@master ~]# kubectl ns weave [root@master ~]# kubectl-ns default
裝完插件後可經過命令kubectl <plugin-name> 或者kubectl-<plugin-name> 使用插件,好比'kubectl ns weave'和'kubectl-ns default'均可以切換默認表空間
[root@master ~]# kubectl-get_all
該命令相似'kubectl get all --all-namespaces',但更全。
[root@master ~]# kubectl-tail [root@master ~]# kubectl-tail --ns default [root@master ~]# kubectl-tail --rs kubeapps-8fd98f6f5 [root@master ~]# kubectl-tail --rs kubeapps/kubeapps-8fd98f6f5
tail爲輸出pod日誌,以上命令分別爲:輸出所有pod日誌、輸出全部命名空間default的pod日誌、輸出所有命名空間中全部replicaset爲kubeapps-8fd98f6f5的pod日誌、輸出命名空間爲kubeapps且replicaset爲kubeapps-8fd98f6f5的pod日誌。
[root@master ~]# kubectl krew uninstall tail Uninstalled plugin tail
卸載插件tail
rm -rf ~/.krew [root@master ~]# 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
[root@master ~]# rm -rf /root/.krew
本文全部腳本和配置文件已上傳:k8s實踐(十三):kubectl插件管理工具krew