一、Kubernetes介紹
Kubernetes(簡稱K8s)是一個自動化容器部署、容器調度、以及容器集群管理的開源平台,通過提供API介面,實現容器應用程序部署、服務擴展、故障恢復、自動化操作、彈性伸縮等功能。它由谷歌公司開發並捐贈給雲原生基金會(CNCF),目前已成為容器應用程序部署和管理領域的事實標準。
Kubernetes提供了豐富的功能,包括:
1、容器的自動部署和伸縮
2、自動化容器應用程序的發布和滾動更新
3、自動化容器應用程序的健康檢查和故障修復
4、容器存儲與網路的自動化管理
二、Kubernetes架構
Kubernetes的架構非常複雜,主要包括以下幾個核心組件:
1、Master:Kubernetes集群的控制中心,負責集群中的任務調度、服務發現、故障恢復等任務。
2、Node:Kubernetes集群中的工作節點,負責執行Master分配的任務。
3、Pod:是Kubernetes中的最小部署單元,是一個由一個或多個容器組成的集合。
4、Service:用於實現Pod集合的網路服務,它為Pod集合提供了一個固定的IP地址和埠號。
5、Replication Controller:用於自動對Pod進行副本管理和彈性伸縮。
6、Label:用於對Pod、Service等對象進行標記,用於篩選和管理對象。
三、Kubernetes安裝
Kubernetes的安裝方式有多種,官方提供了多種方式的安裝文檔,如:通過二進位文件安裝、通過Kubeadm安裝、通過Minikube安裝等。本文介紹基於Kubeadm安裝的方法。
1、安裝Docker和Kubeadm
// 安裝Docker $ apt-get update && apt-get install -y apt-transport-https ca-certificates curl software-properties-common $ curl -fsSL https://mirrors.aliyun.com/docker-ce/linux/ubuntu/gpg | sudo apt-key add - $ add-apt-repository "deb [arch=amd64] https://mirrors.aliyun.com/docker-ce/linux/ubuntu $(lsb_release -cs) stable" $ apt-get update && apt-get install -y docker-ce=18.06.2~ce~3-0~ubuntu // 安裝Kubeadm $ apt-get install -y apt-transport-https curl $ curl -s https://mirrors.aliyun.com/kubernetes/apt/doc/apt-key.gpg | apt-key add - $ cat </etc/apt/sources.list.d/kubernetes.list deb https://mirrors.aliyun.com/kubernetes/apt/ kubernetes-xenial main EOF $ apt-get update && apt-get install -y kubelet=1.19.11-00 kubeadm=1.19.11-00 kubectl=1.19.11-00
2、創建Kubernetes集群
$ kubeadm init --image-repository registry.aliyuncs.com/google_containers --kubernetes-version 1.19.11 --pod-network-cidr=10.244.0.0/16
3、加入節點
$ kubeadm join ...
四、Kubernetes入門
Kubernetes入門分為以下幾個步驟:
1、創建Deployment
apiVersion: apps/v1 kind: Deployment metadata: name: nginx-deployment spec: selector: matchLabels: app: nginx replicas: 2 template: metadata: labels: app: nginx spec: containers: - name: nginx image: nginx:1.14.2 ports: - containerPort: 80
2、創建Service
apiVersion: v1 kind: Service metadata: name: nginx-service spec: selector: app: nginx ports: - protocol: TCP port: 80 targetPort: 80 type: ClusterIP
3、使用瀏覽器訪問Service的ClusterIP地址即可訪問到Nginx應用
五、Kubernetes擴展
Kubernetes提供了多種擴展機制,如策略擴展、資源擴展、API擴展等。其中策略擴展是最常用的擴展機制之一,通過策略擴展可以實現對Pod、Service等對象的訪問控制、網路策略、限流等功能。
下面是一個簡單的網路策略實現:
1、創建網路策略
apiVersion: networking.k8s.io/v1 kind: NetworkPolicy metadata: name: allow-paid-service spec: podSelector: matchLabels: app: paid-service ingress: - from: - podSelector: matchLabels: tier: frontend policyTypes: - Ingress
2、添加標籤
$ kubectl label pods paid-service tier=backend $ kubectl label pods frontend tier=frontend
六、Kubernetes應用部署
Kubernetes應用程序的部署可以通過多種方式實現,如Kubectl、Helm、Jenkins等工具。下面介紹一種簡單的基於Kubectl的部署方式:
1、創建Deployment
$ kubectl create deployment nginx --image=nginx
2、創建Service
$ kubectl expose deployment/nginx --port=80 --type=NodePort
3、通過瀏覽器訪問NodePort即可訪問Nginx應用
七、參考資料
1、官方文檔:https://kubernetes.io/docs/home/
2、Kubernetes中文社區:https://www.kubernetes.org.cn/
3、Kubernetes教程:https://www.runoob.com/kubernetes/kubernetes-tutorial.html
原創文章,作者:AWIJR,如若轉載,請註明出處:https://www.506064.com/zh-tw/n/349313.html