使用 Kind 創建1.20.7 版本的 K8s 一主二從集群


Kind 是 Kubernetes In Docker 的縮寫,顧名思義是使用 Docker 容器作為 Node 並將 Kubernetes 部署至其中的一個工具。官方文檔中也把 Kind 作為一種本地集群搭建的工具進行推薦。

1.安裝 kind

# 建議下載最新版本的 kind
go get sigs.k8s.io/kind@v0.11.1
cp $(go env GOPATH)/bin/kind /usr/local/bin

2.使用 kind 搭建k8s集群

2.1 創建3結點集群的配置文件

vim ~/k8s-3nodes.yaml, 添加下述內容:

# three node (two workers) cluster config
kind: Cluster
apiVersion: kind.x-k8s.io/v1alpha4
nodes:
- role: control-plane
- role: worker
- role: worker

2.2 創建集群:

使用kind創建集群之前首先要確保 ~/.kube 目錄存在,如果不存在,要先使用 mkdir ~/.kube 創建 .kube 目錄。(防止后續非 root 用戶使用 kubectl 查看 Kind 創建的集群需要加sudo的問題)

mkdir ~/.kube

創建指定版本,指定節點的集群:

kind create cluster --config ~/k8s-3nodes.yaml --image kindest/node:v1.20.7@sha256:cbeaf907fc78ac97ce7b625e4bf0de16e3ea725daf6b04f930bd14c67c671ff9
  • 如果不指定--config,默認創建單master集群;
  • 使用--image參數可以指定創建的k8s版本,kind v0.11.1版本可以使用的node鏡像可以在這里面找到:https://github.com/kubernetes-sigs/kind/releases/tag/v0.11.1
  • 不手動使用 --name 指定集群名稱的時候,集群默認名為 kind
    注:鏡像后面的@sha256的這一串token最好加上。

這樣集群就創建好了,如下圖所示:
image

2.3 注意事項

1.如果結點一直處於NotReady,有可能是kind的版本問題。
2.由於前面只創建了一個集群,如果創建了很多個集群的話(使用--name可以指定集群名稱,所以可以創建很多不同名稱的集群),那么使用Kubectl命令的時候要使用 --context 指定集群名稱

查看集群信息
❯ kubectl  cluster-info --context kind-kind
Kubernetes master is running at https://127.0.0.1:41801
KubeDNS is running at https://127.0.0.1:41801/api/v1/namespaces/kube-system/services/kube-dns:dns/proxy

To further debug and diagnose cluster problems, use 'kubectl cluster-info dump'.

可以看到我們 k8s master 地址和 dns 的地址,注意一般情況下我們只創建一個集群不需要指定 --context cluster name 但是創建了多個集群時這個基本就是必須的一個命令了。如果不加這個參數可能會報下面的錯誤

The connection to the server localhost:8080 was refused - did you specify the right host or port?

這是因為 kubectl默認連接的 apiserver 地址是 localhost:8080但是我們的 apiserver 地址不是這個所以報錯。

為什么我們使用 --context cluster-name 就可以了呢?

這是因為 kind 在創建集群的時候會修改 $HOME/.kube/config 的配置,將集群的 apiserver 地址,證書等相關信息都自動寫入進去了

每次命令都要加上這個參數好麻煩怎么辦?

我們可以使用 kubectl config use-context context-name 來進行設置,設置好了之后我們后續就不用每次都加上 –-context 的參數了,同時還可以通過 kubectl config current-context 查詢我們當前默認操作的集群是哪一個

3. 登錄 k8s 結點

3.1 登錄結點

由於 Node 是 docker 容器,則可以使用 docker ps 命令查看當前運行的容器:
image
可以看到,3個結點對應3個 docker 容器,那么使用如下命令就可以登錄結點了,以master結點為例:

docker exec -it kind-control-plane bash

image

3.2 查看結點中已經下載的鏡像

可以使用 crictl 命令操作 kind 結點中的鏡像:

# 查看鏡像
crictl images

3.3 結點中安裝 vim 編輯器

但是進入結點后,會發現沒有 vim 命令,所以無法編輯文件。使用

kubectl describe node kind-control-plane

或者直接在此鏈接中可以發現,v0.11.1版本的kind中node的底層操作系統鏡像是 Ubuntu 21.04,因此可以使用 apt 來安裝vim命令。

# 這條 update 命令是必須的,否則會提示 Unable to locate package vim
apt-get update
apt-get install vim

這樣就安裝好了 vim 。

參考文章

https://kind.sigs.k8s.io/docs/user/quick-start/

https://github.com/kubernetes-sigs/kind/releases/tag/v0.11.1

Kind: 如何快速搭建本地 K8s 開發環境? - Mohuishou (lailin.xyz)

使用 Kind 搭建你的本地 Kubernetes 集群 - SegmentFault 思否

Docker---(6)問題:bash: vi: command not found_IT雲清-CSDN博客


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM