您好,登錄后才能下訂單哦!
這篇文章主要講解了“Kubernetes知識(shí)點(diǎn)有哪些”,文中的講解內(nèi)容簡(jiǎn)單清晰,易于學(xué)習(xí)與理解,下面請(qǐng)大家跟著小編的思路慢慢深入,一起來(lái)研究和學(xué)習(xí)“Kubernetes知識(shí)點(diǎn)有哪些”吧!
負(fù)責(zé)應(yīng)用運(yùn)行(生產(chǎn)環(huán)境至少需要三個(gè)工作節(jié)點(diǎn))
單Node上可工作數(shù)個(gè)Pod
運(yùn)行三項(xiàng)關(guān)鍵服務(wù)
Kubelet:節(jié)點(diǎn)上的集群客戶端,負(fù)責(zé)節(jié)點(diǎn)管理及對(duì)master通信的代理
Kube Proxy:維護(hù)網(wǎng)絡(luò)以支持Service服務(wù)層
Container Runtime:容器運(yùn)行時(shí)交互
負(fù)責(zé)集群調(diào)度
運(yùn)行關(guān)鍵服務(wù)
Kube API Server:提供Kube Api服務(wù)
Etcd:集群內(nèi)部一致性、可用性數(shù)據(jù)存儲(chǔ)
Kube Scheduler:調(diào)度Pod到合適Pod上運(yùn)行
Kube Controller Manager
Kube DNS
工作在master節(jié)點(diǎn)上,下一代的Replication Controller
主要被Deployments用作pod的管理調(diào)度
在Node上創(chuàng)建,非持久化
包含一組相互間可localhost通信、關(guān)系緊密的容器(共享存儲(chǔ)卷、分配的cluster-ip、運(yùn)行信息)
容器應(yīng)用的基本管理單元,可接受EndPoint請(qǐng)求
部署pod容器組,并監(jiān)控管理
master node上Controller Manager的一部分
一組后端Pods的抽象并提供穩(wěn)定的服務(wù)入口,實(shí)現(xiàn)集群內(nèi)部服務(wù)發(fā)現(xiàn)+負(fù)載均衡,同時(shí)也可對(duì)外暴露服務(wù)
會(huì)分配到一個(gè)cluster-ip(是個(gè)VirtualIP,ping不通)
Service對(duì)象類型
ClusterIP:默認(rèn)方式,服務(wù)僅開(kāi)放到集群內(nèi)網(wǎng)IP(通過(guò)kube-proxy調(diào)用iptables創(chuàng)建規(guī)則將流量轉(zhuǎn)發(fā)到pod中,直接ping不通,因?yàn)椴淮嬖诮壎ǖ膶?shí)際網(wǎng)絡(luò)設(shè)備)
NodePort:在集群所有woker node靜態(tài)端口NAT映射到ClusterIP服務(wù)(可對(duì)外暴露服務(wù),端口范圍30000~32767)
LoadBalancer:在支持的云廠商上自動(dòng)創(chuàng)建L4 LBS節(jié)點(diǎn)并路由到NodePort服務(wù)(可對(duì)外暴露服務(wù))
ExternalName:基于CNAME機(jī)制使用字符串來(lái)開(kāi)放服務(wù)
端口類別:
TargetPort:Pod開(kāi)放的端口
Port:Service開(kāi)放的虛擬服務(wù)端口,其對(duì)接的EndPoints為下屬Pod的TargetPort
NodePort:service對(duì)外的公網(wǎng)的端口
從簡(jiǎn)單到復(fù)雜可以分成三類
無(wú)狀態(tài)服務(wù):RS維護(hù)Pod,Service開(kāi)放接口
普通有狀態(tài)服務(wù):通過(guò)Volume和Persistent Volume實(shí)現(xiàn)狀態(tài)保存
有狀態(tài)集群服務(wù)
基于PV/PVC獲得穩(wěn)定存儲(chǔ)
基于Headless Service獲得穩(wěn)定網(wǎng)絡(luò)身份
序號(hào)命名規(guī)則
Init Container:做初始化工作的容器(可多個(gè),順序執(zhí)行完后啟動(dòng)主容器)
Stateful Set
用于管理部署有狀態(tài)應(yīng)用
確保選定節(jié)點(diǎn)上始終有指定pod運(yùn)行
作為公網(wǎng)訪問(wèn)集群后端服務(wù)的入口,是Service Nodeport等之外更高級(jí)的服務(wù)暴露模型
功能包括:集群外部的L7負(fù)載均衡+服務(wù)發(fā)現(xiàn)、反向代理,SSL截?cái)?,虛擬主機(jī)頭訪問(wèn)
僅能在標(biāo)準(zhǔn)80/443口上暴露服務(wù),可配置http訪問(wèn)規(guī)則,包括:host、path
駐留在control plane節(jié)點(diǎn)上,不占用work node的主機(jī)端口資源
持續(xù)請(qǐng)求kubernetes API,實(shí)時(shí)感知后端 service、pod變化(traifik無(wú)需這步,其直接和K8S交互)
結(jié)合Ingress規(guī)則刷新負(fù)載均衡器的配置,實(shí)現(xiàn)服務(wù)發(fā)現(xiàn)
基于插件形式實(shí)現(xiàn),擴(kuò)展性強(qiáng)
Volume:不能單獨(dú)創(chuàng)建,非獨(dú)立資源對(duì)象
Block Storage
Distributed File System
EmptyDir:空目錄,限于Pod生命周期但超越容器(可指定磁盤或內(nèi)存,可設(shè)定存儲(chǔ)上限,類似于docker volume內(nèi)部聲明)
HostPath:掛載宿主機(jī)已有的目錄,獨(dú)立于Pod存在(類似于docker volume外部聲明)
單節(jié)點(diǎn)存儲(chǔ),基于Pod所在節(jié)點(diǎn)的本地目錄,常用于臨時(shí)數(shù)據(jù)存儲(chǔ)或Pod內(nèi)容器數(shù)據(jù)共享
跨節(jié)點(diǎn)存儲(chǔ)storage provider
Persistent Volume:可單獨(dú)創(chuàng)建,獨(dú)立資源對(duì)象
靜態(tài)創(chuàng)建:手工創(chuàng)建PV池供PVC綁定
動(dòng)態(tài)創(chuàng)建:基于Storage Class,存儲(chǔ)系統(tǒng)根據(jù)PVC要求自動(dòng)創(chuàng)建
存儲(chǔ)驅(qū)動(dòng):可以使用主流的CephRBD或GlusterFS分布式存儲(chǔ)方案,亦可使用方便簡(jiǎn)單的NFS(可以直接使用阿里云的NAS存儲(chǔ)服務(wù),支持NFS協(xié)議)方案
Retain:保留現(xiàn)場(chǎng),K8S什么也不做
Delete:K8S刪除PV及里面的數(shù)據(jù)
Recycle:K8S刪除PV里的數(shù)據(jù),PV再次Available
通過(guò)Persistent Volume Claim來(lái)綁定卷和Pod,PV由Available狀態(tài)轉(zhuǎn)為Bound狀態(tài)
PV釋放后轉(zhuǎn)為Released狀態(tài),并進(jìn)行相應(yīng)回收策略
創(chuàng)建形式
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/
以下內(nèi)容寫入/init_minikube.sh
并賦予可執(zhí)行權(quán)限
#!/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集群通過(guò)none驅(qū)動(dòng)模式直接裝入宿主機(jī)
sudo su - #none驅(qū)動(dòng)模式安裝minkube要求使用root賬號(hào)去管理操作 /init_minikube.sh minikube dashboard --url #默認(rèn)在30000端口開(kāi)放k8s管理界面 minikube service frontend --url #指定服務(wù)的地址 #插件管理 minikube addons list minikube addons enable 插件名
minikube logs
檢查錯(cuò)誤日志
留意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] #羅列工作節(jié)點(diǎn) kubectl config view #查看配置 kubectl describe 資源類型 #資源詳情 kubectl logs 資源名 #容器打印日志 kubectl label 資源類型 資源名 label鍵=label值 #打標(biāo)簽 #常用命令 kubectl get pod -o wide/yaml #檢查pod所在節(jié)點(diǎn) kubectl get services 服務(wù)名 -o yaml #檢查服務(wù)詳情 kubectl delete pod --grace-period=0 --force pod名 #立即強(qiáng)制刪除pod #容器執(zhí)行命令 kubectl exec -ti Pod名 [-c 容器名] -- 命令 kubectl exec Pod名 [-c 容器名] -- 命令 #configmap管理 kubectl create configmap 配置名 --from-file=配置文件路徑 kubectl get configmap 配置名 -o yaml #創(chuàng)建deployment部署一個(gè)應(yīng)用到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憑據(jù) 方法1:kubectl run 部署名 --image=鏡像地址 --port=8080 --replicas=副本數(shù) --labels="key=value" 方法2:kubectl create|apply -f deployment.yaml kubectl get deployments kubectl get pods #更新應(yīng)用 kubectl set image deployments/部署名 部署名=鏡像地址 kubectl rollout status deployments/部署名 #查看更新?tīng)顟B(tài) #回滾應(yīng)用 kubectl rollout undo deployments/部署名 #應(yīng)用伸縮 kubectl scale deployments/部署名 --replicas=副本數(shù) #開(kāi)放pod服務(wù)為service kubectl expose deployment/部署名 --name=服務(wù)名 --type=NodePort|LoadBalancer--port 端口號(hào) kubectl get services #可查看服務(wù)開(kāi)放地址 #下線服務(wù) kubectl delete service -l label鍵=label值 kubectl delete deployment -l label鍵=label值 #禁止非worker節(jié)點(diǎn)調(diào)度運(yùn)行POD kubectl taint node 節(jié)點(diǎn)名 node-role.kubernetes.io/節(jié)點(diǎn)名="":NoSchedule
進(jìn)程級(jí)別檢查:檢查Docker Daemon服務(wù)時(shí)候活躍
應(yīng)用級(jí)別檢查
HTTP:狀態(tài)碼200 and 399為健康
Container Exec:執(zhí)行容器命令,退出碼為0則健康
TCP Socket:嘗試套接字連接到容器內(nèi)
V1版本支持K8S、Mesos、Swarm,V2轉(zhuǎn)而全力支持唯一K8S
Catalog:rancher構(gòu)建的應(yīng)用市場(chǎng)
Cattle:rancher自身使用的編排調(diào)度框架
防火墻開(kāi)放端口
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
開(kāi)啟IPV4路由轉(zhuǎn)發(fā)(CentOS 7.4+不必此操作)
#/etc/sysctl.conf追加一行 net.ipv4.ip_forward = 1
Docker準(zhǔn)備
RancherServer及集群節(jié)點(diǎn)上支持最高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證書準(zhǔn)備
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
節(jié)點(diǎn)機(jī)調(diào)整
自定義方式創(chuàng)建RKE集群對(duì)節(jié)點(diǎn)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
為了加速節(jié)點(diǎn)及拉取私有鏡像庫(kù)的速率, 需要在節(jié)點(diǎn)機(jī)上增加一條host解析鏡像庫(kù)的局域網(wǎng)ip
Compose編排服務(wù)
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
啟動(dòng)服務(wù)
docker pull rancher/server:preview docker-compose up -d Rancher docker logs -f rancher #跟進(jìn)rancher初始化狀態(tài)
默認(rèn)賬號(hào)密碼admin:admin
登錄系統(tǒng)并修改密碼
custom模式、canal網(wǎng)絡(luò)創(chuàng)建集群
control、etcd節(jié)點(diǎn)要求至少1核2G內(nèi)存(集群節(jié)點(diǎn)掉線可排查機(jī)器負(fù)載情況)
配置Registries私有鏡像倉(cāng)庫(kù)
#### #RancherServer調(diào)試 docker logs -f rancher #K8sNode調(diào)試 journalctl -xf -u docker docker logs kubelet
感謝各位的閱讀,以上就是“Kubernetes知識(shí)點(diǎn)有哪些”的內(nèi)容了,經(jīng)過(guò)本文的學(xué)習(xí)后,相信大家對(duì)Kubernetes知識(shí)點(diǎn)有哪些這一問(wèn)題有了更深刻的體會(huì),具體使用情況還需要大家實(shí)踐驗(yàn)證。這里是億速云,小編將為大家推送更多相關(guān)知識(shí)點(diǎn)的文章,歡迎關(guān)注!
免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。