中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

Kubernetes知識點有哪些

發布時間:2021-11-18 11:17:25 來源:億速云 閱讀:161 作者:iii 欄目:編程語言

這篇文章主要講解了“Kubernetes知識點有哪些”,文中的講解內容簡單清晰,易于學習與理解,下面請大家跟著小編的思路慢慢深入,一起來研究和學習“Kubernetes知識點有哪些”吧!


k8s對象組件

Kubernetes知識點有哪些

Node工作節點
  • 負責應用運行(生產環境至少需要三個工作節點)

  • 單Node上可工作數個Pod

  • 運行三項關鍵服務

    • Kubelet:節點上的集群客戶端,負責節點管理及對master通信的代理

    • Kube Proxy:維護網絡以支持Service服務層

    • Container Runtime:容器運行時交互

Master管理節點
  • 負責集群調度

  • 運行關鍵服務

    • Kube API Server:提供Kube Api服務

    • Etcd:集群內部一致性、可用性數據存儲

    • Kube Scheduler:調度Pod到合適Pod上運行

    • Kube Controller Manager

    • Kube DNS

ReplicaSet
  • 工作在master節點上,下一代的Replication Controller

  • 主要被Deployments用作pod的管理調度

Pod容器組
  • 在Node上創建,非持久化

  • 包含一組相互間可localhost通信、關系緊密的容器(共享存儲卷、分配的cluster-ip、運行信息)

  • 容器應用的基本管理單元,可接受EndPoint請求

Deployment
  • 部署pod容器組,并監控管理

  • master node上Controller Manager的一部分

Service服務
  • 一組后端Pods的抽象并提供穩定的服務入口,實現集群內部服務發現+負載均衡,同時也可對外暴露服務

  • 會分配到一個cluster-ip(是個VirtualIP,ping不通)

Service對象類型

  • ClusterIP:默認方式,服務僅開放到集群內網IP(通過kube-proxy調用iptables創建規則將流量轉發到pod中,直接ping不通,因為不存在綁定的實際網絡設備)

  • NodePort:在集群所有woker node靜態端口NAT映射到ClusterIP服務(可對外暴露服務,端口范圍30000~32767)

  • LoadBalancer:在支持的云廠商上自動創建L4 LBS節點并路由到NodePort服務(可對外暴露服務)

  • ExternalName:基于CNAME機制使用字符串來開放服務

端口類別:

  • TargetPort:Pod開放的端口

  • Port:Service開放的虛擬服務端口,其對接的EndPoints為下屬Pod的TargetPort

  • NodePort:service對外的公網的端口

從簡單到復雜可以分成三類

  • 無狀態服務:RS維護Pod,Service開放接口

  • 普通有狀態服務:通過Volume和Persistent Volume實現狀態保存

  • 有狀態集群服務

    • 基于PV/PVC獲得穩定存儲

    • 基于Headless Service獲得穩定網絡身份

    • 序號命名規則

    • Init Container:做初始化工作的容器(可多個,順序執行完后啟動主容器)

    • Stateful Set

StatefullSet
  • 用于管理部署有狀態應用

DaemonSet
  • 確保選定節點上始終有指定pod運行

Ingress
  • 作為公網訪問集群后端服務的入口,是Service Nodeport等之外更高級的服務暴露模型

  • 功能包括:集群外部的L7負載均衡+服務發現、反向代理,SSL截斷,虛擬主機頭訪問

  • 僅能在標準80/443口上暴露服務,可配置http訪問規則,包括:host、path

  • 駐留在control plane節點上,不占用work node的主機端口資源

IngressController
  • 持續請求kubernetes API,實時感知后端 service、pod變化(traifik無需這步,其直接和K8S交互)

  • 結合Ingress規則刷新負載均衡器的配置,實現服務發現

Volume

基于插件形式實現,擴展性強

  • Volume:不能單獨創建,非獨立資源對象

    • Block Storage

    • Distributed File System

    • EmptyDir:空目錄,限于Pod生命周期但超越容器(可指定磁盤或內存,可設定存儲上限,類似于docker volume內部聲明)

    • HostPath:掛載宿主機已有的目錄,獨立于Pod存在(類似于docker volume外部聲明)

    • 單節點存儲,基于Pod所在節點的本地目錄,常用于臨時數據存儲或Pod內容器數據共享

    • 跨節點存儲storage provider

  • Persistent Volume:可單獨創建,獨立資源對象

    • 靜態創建:手工創建PV池供PVC綁定

    • 動態創建:基于Storage Class,存儲系統根據PVC要求自動創建

    • 存儲驅動:可以使用主流的CephRBD或GlusterFS分布式存儲方案,亦可使用方便簡單的NFS(可以直接使用阿里云的NAS存儲服務,支持NFS協議)方案

    • Retain:保留現場,K8S什么也不做

    • Delete:K8S刪除PV及里面的數據

    • Recycle:K8S刪除PV里的數據,PV再次Available

    • 通過Persistent Volume Claim來綁定卷和Pod,PV由Available狀態轉為Bound狀態

    • PV釋放后轉為Released狀態,并進行相應回收策略

    • 創建形式

Minikube - 輕量級K8S架設方案

docker準備
  • Docker Daemon

  • Docker Machine

安裝
curl -Lo minikube https://storage.googleapis.com/minikube/releases/latest/minikube-linux-amd64 && chmod +x minikube && sudo mv minikube /usr/local/bin/

curl -Lo kubectl https://storage.googleapis.com/kubernetes-release/release/$(curl -s https://storage.googleapis.com/kubernetes-release/release/stable.txt)/bin/linux/amd64/kubectl && chmod +x kubectl && sudo mv kubectl /usr/local/bin/

以下內容寫入/init_minikube.sh并賦予可執行權限

#!/bin/bash
export MINIKUBE_WANTUPDATENOTIFICATION=false
export MINIKUBE_WANTREPORTERRORPROMPT=false
export MINIKUBE_HOME=$HOME
export CHANGE_MINIKUBE_NONE_USER=true
export KUBECONFIG=$HOME/.kube/config
mkdir -p $HOME/.kube && touch $HOME/.kube/config

minikube start --vm-driver=none #將k8s集群通過none驅動模式直接裝入宿主機
使用
sudo su - #none驅動模式安裝minkube要求使用root賬號去管理操作
/init_minikube.sh

minikube dashboard --url #默認在30000端口開放k8s管理界面
minikube service frontend --url #指定服務的地址

#插件管理
minikube addons list
minikube addons enable 插件名
安裝排錯
  • minikube logs檢查錯誤日志

  • 留意gcr.io/google_containers/pause-amd64等鏡像是否成功下載

K8S集群管理

#管理命令(資源類型:nodes、pods、deployments、events、service、ing、all)
kubectl version
kubectl cluster-info #顯示集群信息
kubectl get 資源類型 [-l label鍵=label值] [-n 名字空間 / --all-namespaces] #羅列工作節點
kubectl config view #查看配置
kubectl describe 資源類型 #資源詳情
kubectl logs 資源名 #容器打印日志
kubectl label 資源類型 資源名 label鍵=label值 #打標簽
#常用命令
kubectl get pod -o wide/yaml #檢查pod所在節點
kubectl get services 服務名 -o yaml #檢查服務詳情
kubectl delete pod --grace-period=0 --force pod名 #立即強制刪除pod

#容器執行命令
kubectl exec -ti Pod名 [-c 容器名] -- 命令
kubectl exec Pod名 [-c 容器名] -- 命令

#configmap管理
kubectl create configmap 配置名 --from-file=配置文件路徑
kubectl get configmap 配置名 -o yaml

#創建deployment部署一個應用到Pod
kubectl create secret docker-registry regcred --docker-server=<your-registry-server> --docker-username=<your-name> --docker-password=<your-pword> --docker-email=<your-email> #安裝registry憑據
方法1:kubectl run 部署名 --image=鏡像地址 --port=8080 --replicas=副本數 --labels="key=value"
方法2:kubectl create|apply -f deployment.yaml
kubectl get deployments
kubectl get pods

#更新應用
kubectl set image deployments/部署名 部署名=鏡像地址
kubectl rollout status deployments/部署名 #查看更新狀態

#回滾應用
kubectl rollout undo deployments/部署名

#應用伸縮
kubectl scale deployments/部署名 --replicas=副本數

#開放pod服務為service
kubectl expose deployment/部署名 --name=服務名 --type=NodePort|LoadBalancer--port 端口號
kubectl get services #可查看服務開放地址

#下線服務
kubectl delete service -l label鍵=label值
kubectl delete deployment -l label鍵=label值

#禁止非worker節點調度運行POD
kubectl taint node 節點名 node-role.kubernetes.io/節點名="":NoSchedule

健康檢查

  • 進程級別檢查:檢查Docker Daemon服務時候活躍

  • 應用級別檢查

    • HTTP:狀態碼200 and 399為健康

    • Container Exec:執行容器命令,退出碼為0則健康

    • TCP Socket:嘗試套接字連接到容器內


Rancher

  • V1版本支持K8S、Mesos、Swarm,V2轉而全力支持唯一K8S

  • Catalog:rancher構建的應用市場

  • Cattle:rancher自身使用的編排調度框架

安裝

防火墻開放端口

  • SSH:22/tcp

  • RancherServer:8443/tcp、8080/tcp

  • K8S :6443(tcp ApiServer)、10250(tcp KubeletApi)、10251(tcp Schedule)、10252(tcp Control)、10255(tcp Control)、10256(tcp Kubeproxy)、30000/32767(tcp NodePort)

  • VXLAN:4789/udp

  • IPSec:500/udp、4500/udp

  • Etcd:2379/tcp、2380/tcp

  • Canal:80/tcp、443/tcp

  • Flannel:8285/udp、8472/udp、2375/udp

開啟IPV4路由轉發(CentOS 7.4+不必此操作)

#/etc/sysctl.conf追加一行
net.ipv4.ip_forward = 1

Docker準備

  • RancherServer及集群節點上支持最高Docker版本v17.03-ce

  • sudo yum install -y --setopt=obsoletes=0 docker-ce-17.03.2.ce-1.el7.centos docker-ce-selinux-17.03.2.ce-1.el7.centos

HTTPS證書準備

docker run -it --rm -p 443:443 -p 80:80 --name certbot \
            -v "/etc/letsencrypt:/etc/letsencrypt" \
            -v "/var/lib/letsencrypt:/var/lib/letsencrypt" \
            certbot/certbot certonly -n -v --standalone --agree-tos --email=admin@rancher.example.com -d rancher.example.com

cd /etc/letsencrypt
sudo ln -s live/rancher.example.com/fullchain.pem cert.pem
sudo ln -s live/rancher.example.com/privkey.pem key.pem

節點機調整

  • 自定義方式創建RKE集群對節點hostname有要求

# hostname要求符合如下正則 `'[a-z0-9]([-a-z0-9]*[a-z0-9])?(\.[a-z0-9]([-a-z0-9]*[a-z0-9])?)*'`
sudo hostnamectl set-hostname k8s-worker-1.cluster-a
sudo hostnamectl status
  • 為了加速節點及拉取私有鏡像庫的速率, 需要在節點機上增加一條host解析鏡像庫的局域網ip

Compose編排服務

version: '2' 

services:

  Rancher:
    image: rancher/server:preview
    container_name: rancher
    hostname: rancher
    restart: always
    ports:
      - '8443:8443'
      - '8080:8080'
    volumes:
        - /srv/rancher:/var/lib/rancher
        - /etc/letsencrypt:/etc/rancher/ssl
    entrypoint: rancher --http-listen-port=8080 --https-listen-port=8443
    command: --acme-domain rancher.example.com

啟動服務

docker pull rancher/server:preview
docker-compose up -d Rancher
docker logs -f rancher #跟進rancher初始化狀態
配置
  • 默認賬號密碼admin:admin

  • 登錄系統并修改密碼

創建集群
  • custom模式、canal網絡創建集群

  • control、etcd節點要求至少1核2G內存(集群節點掉線可排查機器負載情況)

  • 配置Registries私有鏡像倉庫

調試
####
#RancherServer調試
docker logs -f rancher

#K8sNode調試
journalctl -xf -u docker
docker logs kubelet

感謝各位的閱讀,以上就是“Kubernetes知識點有哪些”的內容了,經過本文的學習后,相信大家對Kubernetes知識點有哪些這一問題有了更深刻的體會,具體使用情況還需要大家實踐驗證。這里是億速云,小編將為大家推送更多相關知識點的文章,歡迎關注!

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

乌拉特中旗| 始兴县| 南汇区| 县级市| 息烽县| 新源县| 民勤县| 阿巴嘎旗| 乐都县| 蒲城县| 崇仁县| 木里| 九台市| 西昌市| 时尚| 青川县| 科技| 新宁县| 沙河市| 怀柔区| 桃源县| 阳朔县| 黄梅县| 平山县| 澜沧| 琼结县| 商洛市| 神农架林区| 澄城县| 营山县| 泗水县| 定兴县| 阳江市| 大洼县| 康马县| 鄱阳县| 兴义市| 济阳县| 宁南县| 台湾省| 介休市|