您好,登錄后才能下訂單哦!
這篇文章主要講解了“Kubernetes知識點有哪些”,文中的講解內容簡單清晰,易于學習與理解,下面請大家跟著小編的思路慢慢深入,一起來研究和學習“Kubernetes知識點有哪些”吧!
負責應用運行(生產環境至少需要三個工作節點)
單Node上可工作數個Pod
運行三項關鍵服務
Kubelet:節點上的集群客戶端,負責節點管理及對master通信的代理
Kube Proxy:維護網絡以支持Service服務層
Container Runtime:容器運行時交互
負責集群調度
運行關鍵服務
Kube API Server:提供Kube Api服務
Etcd:集群內部一致性、可用性數據存儲
Kube Scheduler:調度Pod到合適Pod上運行
Kube Controller Manager
Kube DNS
工作在master節點上,下一代的Replication Controller
主要被Deployments用作pod的管理調度
在Node上創建,非持久化
包含一組相互間可localhost通信、關系緊密的容器(共享存儲卷、分配的cluster-ip、運行信息)
容器應用的基本管理單元,可接受EndPoint請求
部署pod容器組,并監控管理
master node上Controller Manager的一部分
一組后端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
用于管理部署有狀態應用
確保選定節點上始終有指定pod運行
作為公網訪問集群后端服務的入口,是Service Nodeport等之外更高級的服務暴露模型
功能包括:集群外部的L7負載均衡+服務發現、反向代理,SSL截斷,虛擬主機頭訪問
僅能在標準80/443口上暴露服務,可配置http訪問規則,包括:host、path
駐留在control plane節點上,不占用work node的主機端口資源
持續請求kubernetes API,實時感知后端 service、pod變化(traifik無需這步,其直接和K8S交互)
結合Ingress規則刷新負載均衡器的配置,實現服務發現
基于插件形式實現,擴展性強
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狀態,并進行相應回收策略
創建形式
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
等鏡像是否成功下載
#管理命令(資源類型: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:嘗試套接字連接到容器內
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知識點有哪些這一問題有了更深刻的體會,具體使用情況還需要大家實踐驗證。這里是億速云,小編將為大家推送更多相關知識點的文章,歡迎關注!
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。