K8S學習總結(一)

2021-10-03 06:06:32 字數 3034 閱讀 3403

kubernetes是容器集群管理系統,是乙個開源的平台,可以實現容器集群的自動化部署、自動化擴縮容、維護等功能。

master元件可以再集群中任何節點上執行,通常將所有master元件執行於一台伺服器上,並且不會在該伺服器上執行任何使用者容器。

kube-apiserver用於提供資源請求/呼叫介面

etcd是kubernetes提供的預設儲存系統,儲存所有集群資料,使用時需要為etcd資料提供備份;

kube-controller-manager執行管理控制器,是集群中處理常規任務的後台執行緒;它們被編譯成單個二進位制檔案,在單個程序中執行。

控制器包含:

節點控制器(node)

副本控制器(replication):負責維護系統中每個副本中的pod。

端點控制器(endpoints):填充endpoints物件(即連線services&pods)

service account和token控制器:為新的namespace建立預設賬戶訪問api token

雲控制管理器負責與底層雲提供商的平台互動。

cloud-controller-manager包括:

節點控制器(node)

路由控制器(route)

service控制器

卷控制器(volume)

kube-scheduler監視新建立沒有分配到node的pod,為pod選擇乙個node;

外掛程式(addon)是實現集**od和services功能的;

kubernetes集群都需要配置集群dns,集群dns是乙個dns伺服器,為kubernetes services提供dns記錄。

kube-ui提供集群狀態基礎資訊檢視。

容器資源監控提供乙個ui瀏覽監控資料。

cluster-level logging負責儲存容器日誌,搜尋/檢視日誌。

節點元件執行在node上,提供kubernetes執行時環境,以及維護pod。

kubelet是主要的節點**,它會監視已分配給節點的pod,具體功能如下:

安裝pod所需的volume

pod中執行的docker/expermentally/rkt容器

定期執行容器健康檢查

報告pod的狀態給系統其餘部分,如有必要建立pod映象

將節點的狀態報給系統其餘部分

kube-proxy通過在主機上維護網路規則並執行連線**來實現kubernetes服務抽象

docker用於執行容器

rkt執行容器,作為docker的替代方案

supervisord是乙個輕量級的監控系統,用於保障kubelet和docker執行狀態;

fluentd是乙個守護程序,可提供cluster-level logging.

kubernetes object包含object spec和object status兩個字段,spec描述物件所需的狀態,status描述物件的實際狀態。

kubernetes物件的yaml檔案,需要設定以下必填字段:

apiversion - 建立物件的kubernetes api版本

kind - 要建立什麼型別的物件

metadata - 具有唯一標識物件的資料,包括name、uid、namespace(可選)

spec欄位

kubernetes中所有物件都用name和uid來明確地標識。對於非唯一使用者提供的屬性,kubernetes提供labels和annotations.

uid是kubernetes生成的,在kubernetes集群的整個生命週期中建立的每個物件都有不同的uid。

namespace為名稱提供乙個範圍,將集群資源劃分為多個用途,預設情況下,同乙個namespace中的物件將具有相同的訪問控制策略。

建立namespace後在namespace基礎上建立pod。建立namespace命令如下:

kubectl create namespace new-namespace
通過yaml檔案建立,namespace.yaml內容如下:

apiversion: v1

kind: namespace

metadata:

name: new-namesapce

執行kubectl create -f ./namesapce.yaml

刪除namespace會自動刪除所有屬於該namespace的資源。

kubectl delete namespaces new-namespace

檢視namespace

kubectl get namespaces

kubernetes volume具有明確的生命週期,與pod相同,當pod被刪除時,volume也將消失。

kubernetes支援的volume型別有:

emptydir

hostpath

gcepersistentdisk

awselasticblockstore

nfsiscsi

fc (fibre channel)

flocker

glusterfs

rbdcephfs

gitrepo

secret

persistentvolumeclaim

downwardapi

projected

azurefilevolume

azuredisk

vspherevolume

quobyte

portworxvolume

scaleio

storageos

local

node可以是vm或物理機,每個node具有執行pod的一些必要條件,並由master元件進行管理,node節點上執行的服務包括docker、kubelet和kube-proxy

node status:

addresses

condition

capacity

info

秘鑰和證書儲存在secret中,configmap是儲存一些非敏感資訊。

k8s學習總結(六)

1.configmap k8s通過configmap來實現對容器中應用的配置管理 建立configmap的方式有兩種,一是通過yaml檔案建立,另一種是通過kubectl命令建立。通過yaml檔案 cat test config.yaml apiversion v1 kind configmap m...

k8s學習筆記一

假設現在有五颱機器,我們給其中的三颱安裝了mysql,那麼這三颱機器上就有了mysql的服務程序,我們把三個服務程序叫做k8s的乙個service。在實際的應用中,通過在一台機器上部署多個docker例項來達到這種效果。然後給service貼個標籤,比如起個名字 mysql 那麼,在k8s容器中,它...

K8S 操作總結

例如yaml中kind deployment 則應通過下面方法擴充套件 kubectl scale replicas 3 deployment foo 或者直接通過建立資源的yaml檔案擴充套件 kubectl scale replicas 3 f foo.yaml 將由 foo.yaml 配置檔案...