天天看點

docker容器管理平台k8部署與應用什麼是k8s為什麼要使用k8s什麼時候用在那用怎麼用

什麼是k8s

  • Kubernetes的名字來自希臘語,意思是“舵手” 或 “領航員”。K8s是将8個字母“ubernete”替換為“8”的縮寫。
  • K8S的創造者,是衆人皆知的行業巨頭——Google。
  • 然而K8S并不是一件全新的發明。它的前身,是Google自己搗鼓了十多年的Borg系統。
  • K8S是2014年6月由Google公司正式公布出來并宣布開源的。

為什麼要使用k8s

  • 就在Docker容器技術被炒得熱火朝天之時,大家發現,如果想要将Docker應用于具體的業務實作,是存在困難的——編排、管理和排程等各個方面,都不容易。于是,人們迫切需要一套管理系統,對Docker及容器進行更進階更靈活的管理,就在這個時候,K8S出現了
  • Kubernetes是Google 2014年建立管理的,是Google 10多年大規模容器管理技術Borg的開源版本。
  • K8s 是容器叢集管理系統,是一個開源的平台,可以實作容器叢集的自動化部署、自動擴縮容、維護等功能

什麼時候用

  • 快速部署應用
  • 快速擴充應用
  • 無縫對接新的應用功能
  • 節省資源,優化硬體資源的使用

在那用

  • 可移植: 支援公有雲,私有雲,混合雲,多重雲(multi-cloud)
  • 可擴充: 子產品化, 插件化, 可挂載, 可組合
  • 自動化: 自動部署,自動重新開機,自動複制,自動伸縮/擴充

怎麼用

  • Build, Ship and Run (建立,發送和運作)
  • Build once,Run anywhere(搭建一次,到處能用)
  • Docker技術的三大核心概念,分别是:
  1. 鏡像(Image)
  2. 容器(Container)
  3. 倉庫(Repository)

k8s 架構

一個K8S系統,通常稱為一個K8S叢集(Cluster)

這個叢集主要包括兩個部分:

  • 一個Master節點(主節點)
  • Master節點包括API Server、Scheduler、Controller manager、etcd。

    ​ API Server是整個系統的對外接口,供用戶端和其它元件調用,相當于“營業廳”。

    ​ Scheduler負責對叢集内部的資源進行排程,相當于“排程室”。

    ​ Controller manager負責管理控制器,相當于“大總管”。

  • 一群Node節點(計算節點)
  • Node節點包括Docker、kubelet、kube-proxy、Fluentd、kube-dns(可選),還有就是Pod。

    ​ Pod是Kubernetes最基本的操作單元。

    ​ 一個Pod代表着叢集中運作的一個程序,它内部封裝了一個或多個緊密相關的容器。

    ​ 除了Pod之外,K8S還有一個Service,一個Service可以看作一組提供相同服務的Pod的對外通路接口

    ​ Docker,不用說了,建立容器的。

    ​ Kubelet,主要負責監視指派到它所在Node上的Pod,包括建立、修改、監控、删除等。

    ​ Kube-proxy,主要負責為Pod對象提供代理。

    ​ Fluentd,主要負責日志收集、存儲與查詢。

安裝配置

1. 伺服器資源/IP規劃

registry 192.168.1.100 #鏡像私有倉庫

master 192.168.1.10 #主節點

node1 192.168.1.11 #docker子節點,性能盡量優選

node2 192.168.1.12

node3 192.168.1.13

2. 先決條件

開啟路由轉發 #每個節點都需要

echo “net.ipv4.ip_forward=1” >> /etc/sysctl.conf

關閉防火牆、selinux

3. 配置 yum 源

可以選擇配置線上yum源;或者私有yum源,私有鏡像資源可在此處下:k8s-yum

4. 在registry上安裝并啟動服務

yum install docker-distribution

systemctl start docker-distribution && systemctl enable docker-distribution

5. 在三台node節點上安裝 docker配置檔案并啟動服務

yum install docker

sed -i ‘/^# INSECURE/s/^# //’ /etc/sysconfig/docker

sed -i ‘/^INSE/s/-registry/-registry 192.168.1.100:5000/’ /etc/sysconfig/docker

sed -i ‘/ADD_REGISTRY/s/registry.access.redhat.com/192.168.1.100:5000/’ /etc/sysconfig/docker

上傳鏡像至其中一個node,然後load并push至registry倉庫 #以下3個鏡像可在此處下載下傳:轉至下載下傳頁

centos.tar

kubernetes-dashboard.tar

pod-infrastructure.tar

上傳過程詳見:上傳至私有倉庫

驗證

curl http://192.168.1.100:5000/v2/_catalog

6. 配置 kubernets - master主機

需安裝的 package:

etcd

kubernetes-master

kubernetes-client

需啟動的 service: #在修改完配置檔案後啟動并設定開機自啟

kube-apiserver

kube-controller-manager

kube-scheduler

etcd

conf:

/etc/etcd/etcd.conf

6: ETCD_LISTEN_CLIENT_URLS=“http://192.168.1.10:2379”

/etc/kubernetes/config

22: KUBE_MASTER="–master=http://192.168.1.10:8080"

/etc/kubernetes/apiserver

8: KUBE_API_ADDRESS="–insecure-bind-address=0.0.0.0"

17: KUBE_ETCD_SERVERS="–etcd-servers=http://192.168.1.10:2379"

23: 删除 ServiceAccount 參數

/etc/kubernetes/controller-manager #無需改動

/etc/kubernetes/scheduler #無需改動

驗證

kubectl get cs

kubectl get csr

kubectl get node

7. 配置 kubernets #三台node上都需要

需安裝 package:

kubernetes-node

需啟動 service: #在修改完配置檔案後啟動

kubelet

kube-proxy

docker

需配置 conf:

/etc/sysconfig/docker

4: 添加參數 --insecure-registry=192.168.1.100:5000 --add-registry 192.168.1.100:5000

/etc/kubernetes/config

22: KUBE_MASTER="–master=http://192.168.1.10:8080"

/etc/kubernetes/kubelet

5: KUBELET_ADDRESS="–address=0.0.0.0"

11: KUBELET_HOSTNAME="–hostname-override=本機名稱"

14: 添加 --kubeconfig=/etc/kubernetes/kubelet.kubeconfig --pod-infra-container-image=pod-infrastructure:latest

手動建立:

vim /etc/kubernetes/kubelet.kubeconfig ##在node節點上建立此檔案

apiVersion: v1

kind: Config

clusters:

- cluster:

server: http://192.168.1.10:8080 ###Master的IP,即自身IP

name: local

contexts:

- context:

cluster: local

name: local

current-context: local

8. 網絡

master:

vim /etc/etcd/etcd.conf #修改檔案參數

ETCD_LISTEN_CLIENT_URLS=“http://0.0.0.0:2379”

執行以下指令:

etcdctl mk /atomic.io/network/config ‘{“Network”: “10.254.0.0/16”, “Backend”: {“Type”: “vxlan”}}’

重新開機etcd服務

#所有node節點及masetr節點上執行

安裝 package: flannel

vim /etc/sysconfig/flanneld

FLANNEL_ETCD_ENDPOINTS=“http://192.168.1.10:2379”

重新開機服務:

systemctl restart flanneld docker

9. 建立容器,測試

baseos.yaml kube-dashboard.yaml 檔案可自己寫,也可以在步驟3中下載下傳

kubectl create -f baseos.yaml

測試

kubectl get pod -o wide

kubectl exec -it 容器ID – /bin/bash

kubectl create -f kube-dashboard.yaml

浏覽器通路http://192.168.1.11:30090

docker容器管理平台k8部署與應用什麼是k8s為什麼要使用k8s什麼時候用在那用怎麼用

繼續閱讀