k8s-部署及介紹


 

 

 

Kubernetes主要功能:
 數據卷
Pod中容器之間共享數據,可以使用數據卷。
 應用程序健康檢查
容器內服務可能進程堵塞無法處理請求,可以設置監控檢查策略保證應用健壯性。
 復制應用程序實例
控制器維護着Pod副本數量,保證一個Pod或一組同類的Pod數量始終可用。
 彈性伸縮
根據設定的指標(CPU利用率)自動縮放Pod副本數。
 服務發現
使用環境變量或DNS服務插件保證容器中程序發現Pod入口訪問地址。
 負載均衡
一組Pod副本分配一個私有的集群IP地址,負載均衡轉發請求到后端容器。在集群內部其他Pod可通過這個ClusterIP訪問應用。
 滾動更新
更新服務不中斷,一次更新一個Pod,而不是同時刪除整個服務。
 服務編排
通過文件描述部署服務,使得應用程序部署變得更高效。
 資源監控
Node節點組件集成cAdvisor資源收集工具,可通過Heapster匯總整個集群節點資源數據,然后存儲到InfluxDB時序數據庫,再由Grafana展示。
 提供認證和授權
支持屬性訪問控制(ABAC)、角色訪問控制(
RBAC)認證授權策略

 

 

 

基本對象概念
基本對象:
 Pod
Pod是最小部署單元,一個Pod有一個或多個容器組成,Pod中容器共享存儲和網絡,在同一台Docker主機上運行。
 Service
Service一個應用服務抽象,定義了Pod邏輯集合和訪問這個Pod集合的策略。
Service代理Pod集合對外表現是為一個訪問入口,分配一個集群IP地址,來自這個IP的請求將負載均衡轉發后端Pod中的容器。
Service通過Lable Selector選擇一組Pod提供服務。
 Volume
數據卷,共享Pod中容器使用的數據。
 Namespace
命名空間將對象邏輯上分配到不同Namespace,可以是不同的項目、用戶等區分管理,並設定控制策略,從而實現多租戶。
命名空間也稱為虛擬集群。
 Lable
標簽用於區分對象(比如Pod、Service),鍵/值對存在;每個對象可以有多個標簽,通過標簽關聯對象。

 

基本對象概念
基於基本對象更高層次抽象:
 ReplicaSet
下一代Replication Controller。確保任何給定時間指定的Pod副本數量,並提供聲明式更新等功能。
RC與RS唯一區別就是lable selector支持不同,RS支持新的基於集合的標簽,RC僅支持基於等式的標簽。
 Deployment
Deployment是一個更高層次的API對象,它管理ReplicaSets和Pod,並提供聲明式更新等功能。
官方建議使用Deployment管理ReplicaSets,而不是直接使用ReplicaSets,這就意味着可能永遠不需要直接操作ReplicaSet對象。
 StatefulSet
StatefulSet適合持久性的應用程序,有唯一的網絡標識符(IP),持久存儲,有序的部署、擴展、刪除和滾動更新。
 DaemonSet
DaemonSet確保所有(或一些)節點運行同一個Pod。當節點加入Kubernetes集群中,Pod會被調度到該節點上運行,當節點從集群中
移除時,DaemonSet的Pod會被刪除。刪除DaemonSet會清理它所有創建的Pod。
 Job
一次性任務,運行完成后Pod銷毀,不再重新啟動新容器。還可以任務定時運行。

 

 

K8S主要用於自動化部署、擴展和管理容器應用,提供了資源調度、部署管理、服務發現、擴容縮容、監控等一整套功能。

                          系統架構及組件功能

 

                        容器集群管理之Kubernetes 集群部署

                              集群部署

 

 

ubantu安裝Etcd存儲服務:
apt-get install etcd -y 
vim /etc/default/etcd
ETCD_DATA_DIR="/var/lib/etcd/default"
ETCD_LISTEN_CLIENT_URLS="http://0.0.0.0:2379"
ETCD_ADVERTISE_CLIENT_URLS=http://0.0.0.0:2379
service etcd restart
centos7安裝Etcd存儲服務:
yum -y install etcd
#打開配置文件:
vim /etc/etcd/etcd.conf
ETCD_DATA_DIR="/var/lib/etcd/default.etcd"
ETCD_LISTEN_CLIENT_URLS="http://0.0.0.0:2379"
ETCD_ADVERTISE_CLIENT_URLS="http://0.0.0.0:2379"
systemctl restart etcd
                                 集群部署
運行Master組件:
mkdir -p /opt/kubernetes/{bin,cfg}
chmod +x *
mv kube-apiserver kube-controller-manager kube-scheduler kubectl /opt/kubernetes/bin
./apiserver.sh 192.168.1.198 http://192.168.1.198:2379
./scheduler.sh 192.168.1.198
./controller-manager.sh 192.168.1.198
echo "export PATH=$PATH:/opt/kubernetes/bin" >> /etc/profile
source /etc/profile
運行Node組件:
mkdir -p /opt/kubernetes/{bin,cfg}
chmod +x *
mv kubelet kube-proxy /opt/kubernetes/bin
./kubelet.sh 192.168.1.198 192.168.1.200 10.10.10.2
./proxy.sh 192.168.1.198 192.168.1.200
查看集群狀態:
kubectl get node
kubectl get componentstatus            

 

 

集群部署
示例:
# 創建並運行Nginx鏡像
kubectl run nginx --image=nginx --replicas=3
# 查看pods
kubectl get pods
# 查看pods及運行節點
kubectl get pods -o wide
# 為deployment資源暴露一個新Service
kubectl expose deployment nginx --port=88 --target-port=80
# 查看Service
kubectl get services nginx
# 查看Service的endpoints
kubectl get ep nginx

 

 

 

Kubectl命令行管理對象
類型 命令 描述
基礎命令
create 通過文件名或標准輸入創建資源。
expose 將一個資源公開為一個新的Kubernetes服務。
run
創建並運行一個特定的鏡像,可能是副本。
創建一個deployment或job管理創建的容器。
set 配置應用資源。
修改現有應用程序資源。
get 顯示一個或多個資源。
explain 文檔參考資料。
edit 使用默認的編輯器編輯一個資源。
delete 通過文件名、標准輸入、資源名稱或標簽選擇器來刪除資源。
部署命令
rollout 管理資源的發布。
rolling-update 執行指定復制控制的滾動更新。
scale 擴容或縮容Pod數量,Deployment、ReplicaSet、RC或Job。
autoscale 創建一個自動選擇擴容或縮容並設置Pod數量。
集群管理命令
certificate 修改證書資源。
cluster-info 顯示集群信息。
top 顯示資源(CPU/Memory/Storage)使用。需要Heapster運行。
cordon 標記節點不可調度。
uncordon 標記節點可調度。
drain 維護期間排除節點。
tain

 

 

 

Kubectl命令行管理對象
類型 命令 描述
故障診斷和調試命令
describe 顯示特定資源或資源組的詳細信息。
logs 在pod或指定的資源中容器打印日志。如果pod只有一個容器,容器名稱是可選的。
attach 附加到一個進程到一個已經運行的容器。
exec 執行命令到容器。
port-forward 轉發一個或多個本地端口到一個pod。
proxy 為kubernetes API Server啟動服務代理。
cp 拷貝文件或目錄到容器中。
auth 檢查授權。
高級命令
apply 通過文件名或標准輸入對資源應用配置。
patch 使用補丁修改、更新資源的字段。
replace 通過文件名或標准輸入替換一個資源。
convert 不同的API版本之間轉換配置文件。YAML和JSON格式都接受。
設置命令
label 更新資源上的標簽。
annotate 在一個或多個資源上更新注釋。
completion 用於實現kubectl工具自動補全。
其他命令
api-versions 打印受支持的API版本。
config 修改kubeconfig文件(用於訪問API,比如配置認證信息)。
help 所有命令幫助。
plugin 運行一個命令行插件。
version 打印客戶端和服務版本信息。

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM