[K8S 系列]k8s 學習二,kubernetes 核心概念及初步瞭解安裝部署方式

小魔童哪吒發表於2022-01-01

我們們再來回顧一下 K8S 叢集架構的元件,在網上找一張叢集架構圖說明一波

1、master 元件

  • apiserver

叢集的統一入口,restful 的方式,最後交給 etcd 儲存

  • shcheduler

節點排程,選擇 node 節點進行應用部署

  • controller-manager

處理叢集中常規後臺任務,一個資源對應一個控制器

  • etcd

儲存系統,用於儲存叢集相關的資料

2、node 元件,工作節點

  • kubelet

master 排到 node 節點代表,管理本機的容器

  • kube-proxy

提供網路代理,負載均衡等操作

k8s 核心概念

1、Pod

  • 最小部署的邏輯單元
  • 是一組容器的集合
  • 共享網路
  • 生命週期短暫

2、controller

  • 確保預期的 Pod 副本數量
  • 無狀態應用部署 / 有狀態應用部署
  • 確保所有 node 執行同一個 Pod
  • 執行一次性任務和定時任務

3、service

  • 定義一組 Pod 的訪問規則

Kubernetes 安裝方式:

  • 使用官方提供的 minikube
  • 使用 kubeadmin 進行部署,k8s的部署工具,跑在 k8s 裡面,這個使用起來相對簡單

kubeadmin 提供 kubeadmin init 和 kubeadmin join,用於快速部署 k8s 叢集

官網地址為:kubernetes.io/docs/reference/setup...

  • 自己使用 kubernetes 二進位制方式安裝部署 (這種部署方式,我們學習的時候一定要走這個步驟,一步一步的去搭建,才能遇到很多問題,進而解決他,熟悉他)

官方提供的 minikube

minikube

點選 Launch Terminal ,可以檢視到如下介面

image-20210814141641989

官方給我們提供的 minikube ,版本是 v1.8.1

系統是 Ubuntu 18.04

CPU 2 核

記憶體 2 G

磁碟 145 G 左右

Kubernetes 版本 v1.17.6

Docker 版本 19.03.6

我們們可以使用 kubectl get pods -n kube-system 檢視一下 pod 節點

image-20210814142527561

kubeadmin 進行部署

使用 kubeadmin 來進行部署,相對使用二進位制來部署就會簡單容易一些,先來規劃一下部署方案

平臺規劃

單 master 搭建方式

多 master 搭建方式

kubeadmin 開始部署

使用 kubeadmin 部署 k8s 環境,通過如下 2 條指令即可完成 kubernetes 的部署:

  • kubeadm init

建立一個 master 節點

  • kubeadm join <master 節點的IP 和埠>

將 node 節點加入到叢集中

測試環境硬體要求

master 節點: 2 核,2G,磁碟 20 G

node 節點:4 核,8G,磁碟 80 G

  • 一臺或者多臺機器,作業系統自選,可以是 ubuntu ,可以是 centos
  • 硬體配置如上
  • 叢集中所有的節點網路互通
  • 可以訪問外網,可以拉取映象
  • 禁止 swap 分割槽

先來安裝一下 kubectl

官方提供了 4 種方式來安裝 kubecrl

我們們直接使用第 1 種:

1、用如下命令下載最新的 kubectl 版本

curl -LO "https://dl.k8s.io/release/$(curl -L -s https://dl.k8s.io/release/stable.txt)/bin/linux/amd64/kubectl"

2、下載 kubectl 校驗和檔案

curl -LO "https://dl.k8s.io/$(curl -L -s https://dl.k8s.io/release/stable.txt)/bin/linux/amd64/kubectl.sha256"

3、驗證 kubectl 的可執行檔案

echo "$(<kubectl.sha256) kubectl" | sha256sum --check

# echo "$(<kubectl.sha256) kubectl" | sha256sum --check
kubectl: OK

出現上述情況,為驗證通過

4、安裝 kubectl

sudo install -o root -g root -m 0755 kubectl /usr/local/bin/kubectl

5、檢視我們們安裝的版本

kubectl version --client

# kubectl version --client
Client Version: version.Info{Major:"1", Minor:"22", GitVersion:"v1.22.0", GitCommit:"c2b5237ccd9c0f1d600d3072634ca66cefdf272f", GitTreeState:"clean", BuildDate:"2021-08-04T18:03:20Z", GoVersion:"go1.16.6", Compiler:"gc", Platform:"linux/amd64"}
  • GitVersion

git 的版本是 v1.22.0

  • GoVersion

go 的版本是 1.16.6

  • BuildDate

構建時間為 2021-08-04T18:03 ,還算挺新

配置一下 kubectl 自動補全功能

kubectl 的自動補全功能依賴 bash-completion,因此需要我們安裝他

1、安裝 bash-completion

apt-get install bash-completion

2、啟動 kubectl 自動補全功能

~/.bashrc 中匯入(source)補全指令碼

echo 'source <(kubectl completion bash)' >>~/.bashrc

將補全指令碼新增到目錄 /etc/bash_completion.d

kubectl completion bash >/etc/bash_completion.d/kubectl

如果 kubectl 有關聯的別名,你可以擴充套件 shell 補全來適配此別名

echo 'alias k=kubectl' >>~/.bashrc
echo 'complete -F __start_kubectl k' >>~/.bashrc

kubernetes 的安裝部署方式步驟相對有點多,這個必須要自己一步一步的實踐,否則是學不到東西的,大家可以多在官網上摸摸魚

kubernetes.io/docs/tasks/tools/ins...

參考資料:

kubernetes docs

歡迎點贊,關注,收藏

朋友們,你的支援和鼓勵,是我堅持分享,提高質量的動力

好了,本次就到這裡

技術是開放的,我們的心態,更應是開放的。擁抱變化,向陽而生,努力向前行。

我是小魔童哪吒,歡迎點贊關注收藏,下次見~

本作品採用《CC 協議》,轉載必須註明作者和本文連結
關注微信公眾號:小魔童哪吒

相關文章