日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

docker 如何加入kubernetes_使用 Kind 在 5 分钟内快速部署一个 Kubernetes 高可用集群...

發布時間:2025/4/16 编程问答 20 豆豆
生活随笔 收集整理的這篇文章主要介紹了 docker 如何加入kubernetes_使用 Kind 在 5 分钟内快速部署一个 Kubernetes 高可用集群... 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

什么是 Kind

Kind(Kubernetes in Docker) 是一個Kubernetes孵化項目,Kind是一套開箱即用的Kubernetes環境搭建方案。顧名思義,就是將Kubernetes所需要的所有組件,全部部署在一個Docker容器中,可以很方便的搭建Kubernetes集群。

Kind已經廣泛的應用于Kubernetes上游及相關項目的CI環境中,官方文檔中也把Kind作為一種本地集群搭建的工具推薦給大家。

項目地址:https://github.com/kubernetes-sigs/kind

Kind 可以做什么?

  • 快速創建一個或多個 Kubernetes集群

  • 支持部署高可用的 Kubernetes集群

  • 支持從源碼構建并部署一個 Kubernetes集群

  • 可以快速低成本體驗一個最新的 Kubernetes集群,并支持Kubernetes的絕大部分功能

  • 支持本地離線運行一個多節點集群

  • Kind 有哪些優勢?

  • 最小的安裝依賴,僅需要安裝 Docker即可

  • 使用方法簡單,只需 Kind Cli工具即可快速創建集群

  • 使用容器來模似 Kubernetes節點

  • 內部使用 Kubeadm的官方主流部署工具

  • 通過了 CNCF官方的K8S Conformance測試

  • Kind 是如何工作的?

    Kind使用容器來模擬每一個Kubernetes節點,并在容器里面運行Systemd。 容器里的Systemd托管了Kubelet和Containerd,然后容器內部的Kubelet把其它Kubernetes組件:Kube-Apiserver、Etcd、CNI等等組件運行起來。

    Kind內部使用了Kubeadm這個工具來做集群的部署,包括高可用集群也是借助Kubeadm提供的特性來完成的。在高用集群下還會額外部署了一個Nginx來提供負載均衡VIP。

    安裝 Kind

    安裝 Kind 依賴組件

    Kind把部署Kubernetes環境的依賴降低到了最小,僅需要機器安裝Docker即可。

  • 安裝 Docker

  • 這里以 Linux系統為例:

    $ curl -sSL https://get.daocloud.io/docker | sh

    更多平臺的安裝方法可參考官方文檔:https://docs.docker.com/install/

  • 安裝 Kubectl

  • 如果你需要通過命令行管理集群,則需要安裝 Kubectl。

    這里以 Linux系統為例:

    $ curl -LO https://storage.googleapis.com/kubernetes-release/release/v1.15.0/bin/linux/amd64/kubectl$ chmod +x ./kubectl$ sudo mv ./kubectl /usr/local/bin/kubectl

    更多平臺的安裝方法可參考官方文檔:https://kubernetes.io/docs/tasks/tools/install-kubectl/#install-kubectl

    安裝 Kind

    Kind使用Golang進行開發,原生支持良好的跨平臺特性,通常只需要直接下載構建好的二進制文件就可使用。

  • 通過二進制安裝

    • Linux

    $ curl -Lo ./kind https://github.com/kubernetes-sigs/kind/releases/download/v0.5.1/kind-linux-amd64$ chmod +x ./kind$ mv ./kind /usr/local/bin/kind
    • Windows

    $ curl.exe -Lo kind-windows-amd64.exe https://github.com/kubernetes-sigs/kind/releases/download/v0.5.1/kind-windows-amd64$ mv .kind-windows-amd64.exe c:kind.exe

    更多平臺的安裝方法可參考官方文檔:https://kind.sigs.k8s.io/docs/user/quick-start/

  • 通過源碼安裝

  • 如果本地環境已經配置好 Golang (1.11+) 的開發環境,你也可以直接通過源碼進行安裝。

    $ go get sigs.k8s.io/kind@v0.5.1

    運行完上述命令后,會將 Kind的可執行文件放到$GOPATH/bin目錄內。為了方便使用,你需要將此目錄加入到$PATH中。

    使用 Kind

    安裝完成之后,我們可以來看看 Kind支持哪些命令行操作。

    $ kindkind creates and manages local Kubernetes clusters using Docker container 'nodes'Usage: kind [command]Available Commands: build Build one of [base-image, node-image] create Creates one of [cluster] delete Deletes one of [cluster] export exports one of [logs] get Gets one of [clusters, nodes, kubeconfig-path] help Help about any command load Loads images into nodes version prints the kind CLI versionFlags: -h, --help help for kind --loglevel string logrus log level [panic, fatal, error, warning, info, debug] (default "warning") --version version for kindUse "kind [command] --help" for more information about a command.

    簡單說下幾個比較常用選項的含義:

    • build:用來從Kubernetes源代碼構建一個新的鏡像。

    • create:創建一個Kubernetes集群。

    • delete:刪除一個Kubernetes集群。

    • get:可用來查看當前集群、節點信息以及Kubectl配置文件的地址。

    • load:從宿主機向Kubernetes節點內導入鏡像。

    使用 Kind 創建 Kubernetes 集群

    搭建一個單節點集群

    搭建單節點集群是 Kind最基礎的功能,當然使用起來也很簡單,僅需一條指令即可完成。

    $ kind create cluster --name my-clusterCreating cluster "my-cluster" ... ? Ensuring node image (kindest/node:v1.15.3) ? Preparing nodes ? Creating kubeadm config ? Starting control-plane ?Cluster creation complete. You can now use the cluster with:export KUBECONFIG="$(kind get kubeconfig-path --name="my-cluster")"kubectl cluster-info

    以上命令中 --name是可選參數。如果不指定,默認創建出來的集群名字為kind。

    使用默認安裝的方式時,我們沒有指定任何配置文件。從安裝過程的輸出來看,一共分為 4 步:

    • 檢查本地環境是否存在一個基礎的安裝鏡像,默認是 kindest/node:v1.15.3,該鏡像里面包含了所有需要安裝的東西,包括:kubectl、kubeadm、kubelet的二進制文件,以及安裝對應版本Kubernetes所需要的鏡像。

    • 準備 Kubernetes節點,主要就是啟動容器、解壓鏡像這類的操作。

    • 建立對應的 kubeadm的配置,完成之后就通過kubeadm進行安裝。安裝完成后還會做一些清理操作,比如:刪掉主節點上的污點,否則對于沒有容忍的Pod無法完成部署。

    • 上面所有操作都完成后,就成功啟動了一個 Kubernetes集群并輸出一些操作集群的提示信息。

  • 默認情況下,Kind會先下載kindest/node:v1.15.3鏡像。如果你想指定不同版本,可以使用--image參數,類似這樣:kind create cluster --image kindest/node:v1.15.3

  • kindest/node這個鏡像目前托管于 Docker Hub 上,下載時可能會較慢。同樣的問題Kind進行集群的創建也是存在的,Kind實際使用Kubeadm進行集群的創建。對Kubeadm有所了解的同學都知道它默認使用的鏡像在國內是不能訪問的,所以一樣需要自行解決網絡問題。

  • 如果你存在上面說的網絡問題,最好配置一個國內的加速器或者鏡像源。如果你還不知道如何配置加速器和鏡像源可以參考:「Docker / Kubernetes 鏡像源不可用,教你幾招搞定它!」和 「 Docker 下使用 DaoCloud / 阿里云鏡像加速」兩篇文章。

  • 接下來,我們根據上面命令執行完后,輸出的提示信息進行操作來驗證一下集群是否部署成功。

    # 獲取指定集群的配置文件所在的路徑$ export KUBECONFIG="$(kind get kubeconfig-path --name="my-cluster")"$ kubectl cluster-infoKubernetes master is running at https://localhost:34458KubeDNS is running at https://localhost:34458/api/v1/namespaces/kube-system/services/kube-dns:dns/proxyTo further debug and diagnose cluster problems, use 'kubectl cluster-info dump'.$ kubectl get nodesNAME STATUS ROLES AGE VERSIONmy-cluster-control-plane Ready master 2m v1.15.3$ kubectl get po -n kube-systemNAME READY STATUS RESTARTS AGEcoredns-86c58d9df4-6g66f 1/1 Running 0 21mcoredns-86c58d9df4-pqcc4 1/1 Running 0 21metcd-my-cluster-control-plane 1/1 Running 0 20mkube-apiserver-my-cluster-control-plane 1/1 Running 0 20mkube-controller-manager-my-cluster-control-plane 1/1 Running 0 20mkube-proxy-cjgnt 1/1 Running 0 21mkube-scheduler-my-cluster-control-plane 1/1 Running 0 21mweave-net-ls2v8 2/2 Running 1 21m

    從上面的輸出結果,可以看到單節點的 Kubernetes已經搭建成功。單節點集群默認方式啟動的節點類型是control-plane,該節點包含了所有的組件。這些組件分別是:2*Coredns、Etcd、Api-Server、Controller-Manager、Kube-Proxy、Sheduler和網絡插件Weave,目前默認使用的網絡插件也是Weave。

    創建多節點的集群

    默認安裝的集群只部署了一個控制節點,如果需要部署多節點集群,我們可以通過配置文件的方式來創建多個容器。這樣就可以達到模擬多個節點目的,并以這些節點來構建一個多節點的 Kubernetes集群。

  • 創建多節點 Kubernetes 集群配置文件

  • Kind在創建集群的時候,支持通過--config參數傳遞配置文件給Kind,配置文件可修改的內容主要有 role 和 節點使用的鏡像。

    $ vim my-cluster-multi-node.yaml# 一共兩個節點,一個主節點,一個從節點。kind: ClusterapiVersion: kind.sigs.k8s.io/v1alpha3nodes:- role: control-plane- role: worker
  • 創建多節點 Kubernetes 集群

  • 配置文件創建完成后,就可以使用下面的命令來完成多節點 Kubernetes集群搭建。

    $ kind create cluster --config my-cluster-multi-node.yaml --name my-cluster-multi-nodeCreating cluster "my-cluster-multi-node" ... ? Ensuring node image (kindest/node:v1.15.3) ? Preparing nodes ? Creating kubeadm config ? Starting control-plane ? ? Joining worker nodes Cluster creation complete. You can now use the cluster with:export KUBECONFIG="$(kind get kubeconfig-path --name="my-cluster-multi-node")"kubectl cluster-info

    和上面創建的單節點集群一樣,我們同樣根據上面命令執行完后,輸出的提示信息進行操作來驗證一下集群是否部署成功。

    $ kubectl get nodesNAME STATUS ROLES AGE VERSIONmy-cluster-multi-node-control-plane Ready master 3m20s v1.15.3my-cluster-multi-node-worker Ready 3m8s v1.15.3$ kubectl get po -n kube-systemNAME READY STATUS RESTARTS AGEcoredns-86c58d9df4-cnqhc 1/1 Running 0 5m29scoredns-86c58d9df4-hn9mv 1/1 Running 0 5m29setcd-my-cluster-multi-node-control-plane 1/1 Running 0 4m24skube-apiserver-my-cluster-multi-node-control-plane 1/1 Running 0 4m17skube-controller-manager-my-cluster-multi-node-control-plane 1/1 Running 0 4m21skube-proxy-8t4xt 1/1 Running 0 5m27skube-proxy-skd5v 1/1 Running 0 5m29skube-scheduler-my-cluster-multi-node-control-plane 1/1 Running 0 4m18sweave-net-nmfq2 2/2 Running 1 5m27sweave-net-srdfw 2/2 Running 0 5m29s

    創建高可用 Kubernetes 集群

    Kind也支持搭建高可用的Kubernetes集群,創建方式和多節點集群類似,也是通過配置文件來實現。

  • 創建高可用 Kubernetes 集群配置文件

  • $ vim my-cluster-ha.yaml# 一共六個節點,三個 control-plane 節點,三個 workers 節點kind: ClusterapiVersion: kind.sigs.k8s.io/v1alpha3kubeadmConfigPatches:- | apiVersion: kubeadm.k8s.io/v1beta2 kind: ClusterConfiguration metadata: name: config networking: serviceSubnet: 10.0.0.0/16 imageRepository: registry.aliyuncs.com/google_containers nodeRegistration: kubeletExtraArgs: pod-infra-container-image: registry.aliyuncs.com/google_containers/pause:3.1- | apiVersion: kubeadm.k8s.io/v1beta2 kind: InitConfiguration metadata: name: config networking: serviceSubnet: 10.0.0.0/16 imageRepository: registry.aliyuncs.com/google_containersnodes:- role: control-plane- role: control-plane- role: control-plane- role: worker- role: worker- role: worker

    這里,我們通過直接在配置文件里使用國內容器鏡像源的方式解決了官方容器鏡像源不可用的問題,同時也達到了加速集群創建的目的。

  • 創建高可用 Kubernetes 集群

  • 配置文件創建完成后,就可以使用下面的命令來完成高可用 Kubernetes集群搭建。

    $ kind create cluster --name my-cluster-ha --config my-cluster-ha.yamlCreating cluster "my-cluster-ha" ... ? Ensuring node image (kindest/node:v1.15.3) ? Preparing nodes ? Starting the external load balancer ?? ? Creating kubeadm config ? Starting control-plane ? ? Joining more control-plane nodes ? Joining worker nodes Cluster creation complete. You can now use the cluster with:export KUBECONFIG="$(kind get kubeconfig-path --name="my-cluster-ha")"kubectl cluster-infomaster $ export KUBECONFIG="$(kind get kubeconfig-path --name="my-cluster-ha")"master $ kubectl cluster-infoKubernetes master is running at https://localhost:44019KubeDNS is running at https://localhost:44019/api/v1/namespaces/kube-system/services/kube-dns:dns/proxyTo further debug and diagnose cluster problems, use 'kubectl cluster-info dump'.

    同樣,我們根據上面命令執行完后,輸出的提示信息進行操作來驗證一下集群是否部署成功。

    $ kubectl get nodesNAME STATUS ROLES AGE VERSIONmy-cluster-ha-control-plane Ready master 3m42s v1.15.3my-cluster-ha-control-plane2 Ready master 3m24s v1.15.3my-cluster-ha-control-plane3 Ready master 2m13s v1.15.3my-cluster-ha-worker Ready 96s v1.15.3my-cluster-ha-worker2 Ready 98s v1.15.3my-cluster-ha-worker3 Ready 95s v1.15.3

    從上面的輸出結果,可以看到包含了多個 master 節點,說明高可用的 Kubernetes集群已經搭建成功。

    其它相關知識

    Kind 的鏡像里的秘密

    Kind鏡像一共分為兩類,一類是Base鏡像,另一類是Node鏡像。

  • Base 鏡像

  • Base 鏡像目前使用了 ubuntu:19.04作為基礎鏡像,并做了下面的調整:

    • 安裝 Systemd相關的包,并調整一些配置以適應在容器內運行。

    • 安裝 Kubernetes運行時的依賴包,比如:Conntrack、Socat、CNI等。

    • 安裝容器運行環境,比如: Containerd、Crictl等。

    • 配置自己的 ENTRYPOINT腳本,以適應和調整容器內運行的問題。

    更多具體的構建邏輯可以參考:https://github.com/kubernetes-sigs/kind/blob/master/images/base/Dockerfile

  • Node 鏡像

  • Node鏡像的構建比較復雜,目前是通過運行Base鏡像并在Base鏡像內執行操作,再保存此容器內容為鏡像的方式來構建的,包含的操作有:

    • 構建 Kubernetes相關資源,比如:二進制文件和鏡像。

    • 運行一個用于構建的容器

    • 把構建的 Kubernetes相關資源復制到容器里

    • 調整部分組件配置參數,以支持在容器內運行

    • 預先拉去運行環境需要的鏡像

    • 通過 docker commit方式保存當前的構建容器為Node鏡像

    如何快速刪除一個集群

    如果你不需要本地的集群環境,通過以下命令進行刪除:

    $ kind delete cluster --name my-clusterDeleting cluster "my-cluster" ...$KUBECONFIG is still set to use /root/.kube/kind-config-my-cluster even though that file has been deleted, remember to unset it

    至此,我們就演示完了如何使用 Kind快速搭建一個Kubernetes集群。不過有一個你需要注意的地方,Kind搭建的集群不適用于生產環境中使用。但是如果你想在本地快速構建一個Kubernetes集群環境,并且不想占用太多的硬件資源,那么Kind會是你不錯的選擇。

    參考文檔

  • https://www.google.com

  • http://t.cn/AiRVBwDS

  • https://zhuanlan.zhihu.com/p/60464867

  • https://yeya24.github.io/post/kind/

  • http://dockerone.com/article/8974

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

  • 你可能還喜歡

    Docker / Kubernetes 鏡像源不可用,教你幾招搞定它!

    總結

    以上是生活随笔為你收集整理的docker 如何加入kubernetes_使用 Kind 在 5 分钟内快速部署一个 Kubernetes 高可用集群...的全部內容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。

    主站蜘蛛池模板: 亚洲无在线观看 | 国产精品成人在线 | 欧美色综合 | 日韩啪啪片 | 欧美激情免费观看 | 日韩中文字幕亚洲 | av在线专区| 亚洲爽爽爽| 午夜激情导航 | 日韩理论片在线观看 | 黄色av小说在线观看 | wwwav视频| 1024视频在线 | 国产福利视频 | 香蕉中文网 | 日本加勒比中文字幕 | av毛片在线免费观看 | 欧美一区二区高清 | 黄色三级网站在线观看 | xxx69美国| 182av| 一区二区三区四区av | 午夜生活片 | 欧美大白屁股 | 欧美日韩久久久久久 | 玉女心经是什么意思 | 强行挺进皇后紧窄湿润小说 | 欧洲久久久 | www.亚洲精品| 蜜臀av午夜精品 | 加勒比av在线播放 | 99re6在线 | 亚洲是色 | 三级视频小说 | 99re久久精品国产 | 亚洲av无码国产精品久久 | 国产成人午夜 | 国产主播自拍av | 天堂影视av | 国产又粗又猛又色 | 奇米综合网 | 亚洲欧美中文日韩在线v日本 | 啪啪短视频 | 黄色av网站免费在线观看 | 丝瓜av| 国产一区二区三区精品在线 | 在线亚洲一区二区 | 尤物视频在线免费观看 | 四川操bbb| 欧美一区亚洲二区 | 熟女国产精品一区二区三 | 无码 人妻 在线 视频 | 四季av国产一区二区三区 | 成人免费毛片观看 | 日本视频网 | 天天综合久久 | 欧美69精品久久久久久不卡 | 国产亚洲网站 | 免费网站在线观看人数在哪动漫 | 日韩精品在线免费视频 | 久久观看 | 国产一级片在线播放 | 永久免费av无码网站性色av | 一区二区三区韩国 | 久久青娱乐 | 丰满人妻妇伦又伦精品国产 | 欧美一区不卡 | eeuss国产一区二区三区黑人 | 成人午夜在线免费观看 | 亚洲精品一区二区三区四区 | 最新av免费在线观看 | 少妇激情偷人爽爽91嫩草 | 高清免费av | 娇小的粉嫩xxx极品 国产精品人人爽人人爽 | 国产女人和拘做受视频免费 | 视色视频在线观看 | 欧美日韩一区二区区别是什么 | 极品尤物一区二区 | 1000部多毛熟女毛茸茸 | 日韩久久精品一区二区 | 麻豆av网址 | 亚洲国产成人一区二区 | 国产白浆在线观看 | 99视频网 | www.日韩在线观看 | 亚洲精品国产精品国自产 | 日本成人在线免费观看 | 公车乳尖揉捏酥软呻吟 | 亚州福利 | 国产激情影院 | 噜啪啪| 黄色a区| 好吊日精品视频 | 久久永久免费 | 美女日批在线观看 | 中文精品久久久久人妻不卡 | 日韩一区二区三区在线看 | 成人性生活视频 | 亚洲性天堂 |