逆戰(zhàn)d高級(jí)部分_第1頁
逆戰(zhàn)d高級(jí)部分_第2頁
逆戰(zhàn)d高級(jí)部分_第3頁
逆戰(zhàn)d高級(jí)部分_第4頁
逆戰(zhàn)d高級(jí)部分_第5頁
已閱讀5頁,還剩37頁未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

1、k8s介紹Kubernetes是谷歌十幾的Borg的一個(gè)開源版本,是Docker分布式系統(tǒng)解決方案。 Borg是谷歌內(nèi)部使用的大規(guī)模集群管系統(tǒng),基于容技術(shù),目的是實(shí)現(xiàn)管的自動(dòng)化, 以及跨多個(gè)數(shù)據(jù)中心的用率的最大化容編排引擎三足鼎立:早在 2015 5 月,Kubernetes 在上的的搜索熱度就已經(jīng)超過 Mesos 和 DockerSwarm,從那兒之后是一飆升,將對(duì)手甩開十幾條街,容編排引擎領(lǐng)域的三足鼎立結(jié)束。目前,AWS、Azure、阿云、騰訊云等主流公有云提供的是基于 Kubernetes 的容服務(wù);Rancher、CoreOS、IBM、Mirantis、Oracle、Red Hat、V

2、MWare 等無數(shù)廠商也在大研發(fā)和推廣基于 Kubernetes 的容 CaaS 或 PaaS的明星??梢哉f,Kubernetes 是當(dāng)前容業(yè)最手可熱的數(shù)據(jù)中心運(yùn)著超過 20 億個(gè)容,而且十前就開始使用容技術(shù)。 最初,開發(fā)一個(gè)叫 Borg 的系統(tǒng)(現(xiàn)在命令為 Omega)來調(diào)度如此龐大數(shù)的容和工作負(fù)載。在積累這么多的經(jīng)驗(yàn)后,決定重寫這個(gè)容管系統(tǒng),并將其貢獻(xiàn)到開源社區(qū),讓界都能受益。這個(gè)項(xiàng)目就是 Kubernetes。簡(jiǎn)單的講,Kubernetes 是k8s核心概念Omega 的開源版本。1.PodPod直譯是豆莢,可以把容想像成豆莢的豆子,把一個(gè)或多個(gè)關(guān)系緊密的豆子包在一起就是豆莢(一個(gè)Pod

3、)。在k8s中我們 直接操作容,而是把容包裝成Pod再進(jìn)管運(yùn)于Node節(jié)點(diǎn)上,若干相關(guān)容的組合。Pod內(nèi)包含的容運(yùn)在同一宿主機(jī)上,使用相同的網(wǎng)絡(luò) 命名空間、IP地址和端口,能夠通過localhost進(jìn)通信。Pod是Kurbernetes進(jìn)創(chuàng)建、調(diào)度和管 的最小 ,它提供比容高層次的抽象,使得部署和管加靈活。一個(gè)Pod可以包含一個(gè)容或者多個(gè)相關(guān)容。 每個(gè)Pod都有一個(gè)特殊的被稱為“"容”"Pause容,還包含一個(gè)或多個(gè)緊密相關(guān)的用戶業(yè)務(wù)容 ; 一個(gè)Pod的容與另外主機(jī)上的Pod容能夠直接通信; 如果Pod所在的Node宕機(jī),會(huì)將這個(gè)Node上的所有Pod重新調(diào)度到其他節(jié)點(diǎn)上;

4、 普通Pod及靜態(tài)Pod,前者存放在etcd中,后者存放在具體Node上的一個(gè)具體文件中,并且只能在 此Node上啟動(dòng)運(yùn); Docker Volume對(duì)應(yīng)Kubernetes中的Pod Volume; 每個(gè)Pod可以設(shè)置限額的計(jì)算機(jī) 有CPU和Memory; Requests, 的最小申請(qǐng); Limits, 最大 使用的;EventMesosDocker Swarm Kubernetes是一個(gè),最早產(chǎn)生的時(shí)間、最后重復(fù)時(shí)間、重復(fù)次數(shù)、發(fā)起者、類型,以及導(dǎo)致此的等信息。Event通常關(guān)聯(lián)到具體對(duì)象上,式排查故障的重要參考信息;Pod IPPod的IP地址,是Docker Engine根據(jù)dock

5、er0網(wǎng)橋的IP地址段進(jìn)分配的,通常是一個(gè)虛擬的二層網(wǎng)絡(luò),位于同Node上的Pod能夠彼此通信,需要通過Pod IP所在的虛擬二層網(wǎng)絡(luò)進(jìn)通信,而真實(shí)的TCP流則是通過Node IP所在的物網(wǎng)卡流出的;Cluster IPService的IP地址。特性如下: 僅僅作用于Kubernetes Servcie這個(gè)對(duì)象,并由Kubernetes管和分配IP地址; 無法被Ping,因?yàn)闆]有一個(gè)"實(shí)體網(wǎng)絡(luò)對(duì)象"來響應(yīng); 只能結(jié)合Service Port組成一個(gè)具體的通信端口; Node IP網(wǎng)、Pod IP網(wǎng)域Cluster IP網(wǎng)之間的通信,采用的是Kubernetes自己設(shè)計(jì)的一種

6、編程方式的特殊的由規(guī)則,與IP由有很大的同;Node IPNode節(jié)點(diǎn)的IP地址,是Kubernetes集群中每個(gè)節(jié)點(diǎn)的物網(wǎng)卡的IP地址,是真是存在的物網(wǎng)絡(luò), 所有屬于這個(gè)網(wǎng)絡(luò)的服務(wù)之間都能通過這個(gè)網(wǎng)絡(luò)直接通信;2. Replication ControllerReplication Controller用來管Pod的副本,保證集群中存在指定數(shù)的Pod副本。集群中副本的數(shù)大于指定數(shù),則會(huì)停止指定數(shù)之外的多余容數(shù),反之,則會(huì)啟動(dòng)少于指定數(shù)個(gè)數(shù)的容,保證數(shù)變。Replication Controller是實(shí)現(xiàn)彈性伸縮、動(dòng)態(tài)擴(kuò)容和滾動(dòng)升級(jí)的核心。部署和升級(jí)Pod,某種Pod的副本數(shù)在任意時(shí)刻都符合某

7、個(gè)預(yù)期值; Pod期待的副本數(shù); 用于篩選目標(biāo)Pod的Label Selector; 當(dāng)Pod副本數(shù)小于預(yù)期數(shù)的時(shí)候,用于創(chuàng)建新Pod的Pod模板(template);Replica Set下一代的Replication Controlle,Replication Controlle只支持基于等式的selector(env=dev或environment!=qa)但Replica Set還支持新的、基于集合的selector(version in (v1.0, v2.0)或env notin (dev, qa)),這對(duì)復(fù)雜的運(yùn)維管帶來很大方。3.ServiceService定義Pod的邏輯集合

8、和該集合的策,是真實(shí)服務(wù)的抽象。Service提供一個(gè)統(tǒng)一的服務(wù)入口以及服務(wù)和發(fā)現(xiàn)機(jī)制,用戶需要解Pod是如何運(yùn)。一個(gè)service定義pod的方式,就像單個(gè)固定的IP地址和與其相對(duì)應(yīng)的DNS名之間的關(guān)系。Service其實(shí)就是我們經(jīng)常提起的微服務(wù)架構(gòu)中的一個(gè)"微服務(wù)",通過分析、識(shí)別并建模系統(tǒng)中的所有服務(wù)為微服務(wù)Kubernetes Service,最終我們的系統(tǒng)由多個(gè)提供同業(yè)務(wù)能而又彼此獨(dú)立的微服務(wù)單元所組成,服務(wù)之間通過TCP/IP進(jìn)通信,從而形成我們強(qiáng)大而又靈活的彈性網(wǎng)絡(luò),擁 有強(qiáng)大的分布式能、彈性擴(kuò)展能、容錯(cuò)能;k8s核心組件Kubernetes Master:集

9、群 節(jié)點(diǎn),負(fù)責(zé)整個(gè)集群的管和 ,基本上Kubernetes所有的 命令責(zé)具體的執(zhí)過程,我們后面所有執(zhí) 令基本都是在Master節(jié)點(diǎn)上運(yùn)的;給它,它來負(fù)包含如下組件:1. Kubernetes API Server作為Kubernetes系統(tǒng)的入口,其封裝核心對(duì)象的增刪改查操作,以RESTful API接口方式提供給外部客戶和內(nèi)部組件調(diào)用。維護(hù)的REST對(duì)象持久化到Etcd中 。2. Kubernetes Scheduler為新建立的Pod進(jìn)節(jié)點(diǎn)(node)選擇(即分配 ),負(fù)責(zé)集群的 調(diào)度。組件 ,可以方替換成其他調(diào)度。3.Kubernetes Controller每個(gè)Pod都提供一個(gè)獨(dú)立的E

10、ndpoint(Pod IP+ContainerPort)以被客戶端 ,多個(gè)Pod副本組成一個(gè)集群來提供服務(wù),一般的做法是部署一個(gè)負(fù)載均衡來 它們,為這組Pod開啟一個(gè)對(duì)外的服務(wù)端口如8000,并且將這些Pod的Endpoint表加入8000端口的轉(zhuǎn)發(fā)表中,客戶端可以通過負(fù)載 均衡的對(duì)外IP地址+服務(wù)端口來 此服務(wù)。運(yùn)在Node上的kube-proxy其實(shí)就是一個(gè)智能的軟件負(fù)載均衡,它負(fù)責(zé)把對(duì)Service的請(qǐng)求轉(zhuǎn)發(fā)到后端的某個(gè)Pod實(shí)上,并且在內(nèi)部實(shí)現(xiàn)服務(wù)的負(fù)載均 衡與會(huì)話保持機(jī)制。Service是共用一個(gè)負(fù)載均衡的IP地址,而是每個(gè)Servcie分配一個(gè)全局唯一 的虛擬IP地址,這個(gè)虛擬I

11、P被稱為Cluster IP。4.LabelKubernetes中的任意API對(duì)象都是通過Label進(jìn)標(biāo)識(shí),Label的實(shí)質(zhì)是一系的K/V鍵值對(duì)。Label是Replication Controller和Service運(yùn)的基礎(chǔ),二者通過Label來進(jìn)關(guān)聯(lián)Node上運(yùn)的Pod。一個(gè)label是一個(gè)被附加到 上的鍵/值對(duì),譬如附加到一個(gè)Pod上,為它傳遞一個(gè)用戶自定的并且可識(shí)別的屬性.Label還可以被應(yīng)用來組織和選擇子網(wǎng)中的selector是一個(gè)通過匹配labels來定義 之間關(guān)系得表 ,如為一個(gè)負(fù)載均衡的service 指定所目標(biāo)PodLabel可以附加到各種 對(duì)象上,一個(gè) 對(duì)象可以定義任意數(shù)

12、的Label。給某個(gè) 定義一個(gè)Label,相當(dāng)于給他打一個(gè) ,隨后可以通過Label Selector( 選擇) 和篩選擁有某些Label的 對(duì)象。我們可以通過給指定的 對(duì)象 一個(gè)或多個(gè)Label來實(shí)現(xiàn) 度的 分組管功能,以于靈活、方的進(jìn) 分配、調(diào)度、配置、部署等管工作;5.NodeNode是Kubernetes集群架構(gòu)中運(yùn)Pod的服務(wù)節(jié)點(diǎn)(亦叫agent或minion)。Node是Kubernetes集群操作的單元,用來承載被分配Pod的運(yùn),是Pod運(yùn)的宿主機(jī)。6.Endpoint(IP+Port) 標(biāo)識(shí)服務(wù)進(jìn)程的 點(diǎn);負(fù)責(zé)執(zhí)各種,目前已經(jīng)提供很多- Replication Controll

13、er來保證Kubernetes的正常運(yùn)。管維護(hù)Replication Controller,關(guān)聯(lián)Replication Controller和Pod,保證Replication Controller定義的副本數(shù)與實(shí)際運(yùn)Pod數(shù)一致。- Node Controller管維護(hù)Node,定期檢查Node的健康狀態(tài),標(biāo)識(shí)出(失效|未失效)的Node節(jié)點(diǎn)。- Namespace Controller管維護(hù)Namespace,定期Pod、Service等。- Service Controller無效的Namespace,包括Namesapce下的API對(duì)象,比如管維護(hù)Service,提供負(fù)載以及服務(wù)- E

14、ndPoints Controller。管維護(hù)Endpoints,關(guān)聯(lián)Service和Pod,創(chuàng)建Endpoints為Service的后端,當(dāng)Pod發(fā)生變化時(shí),實(shí)時(shí)新Endpoints。- Service Account Controller管維護(hù)Service Account,為每個(gè)Namespace創(chuàng)建默認(rèn)的Service Account,同時(shí)為Service Account創(chuàng)建Service Account Secret。- Persistent Volume Controller管維護(hù)Persistent Volume和Persistent Volume Claim分配Persiste

15、nt Volume進(jìn)綁定,為- Daemon Set ControllerVolume Claim,為新的Persistent的Persistent Volume執(zhí)回收。管維護(hù)Daemon Set,負(fù)責(zé)創(chuàng)建Daemon Pod,保證指定的Node上正常的運(yùn)Daemon Pod。- Deployment Controller管維護(hù)Deployment,關(guān)聯(lián)Deployment和Replication Controller,保證運(yùn)指定數(shù)的Pod。當(dāng)Deployment新時(shí),- Job Controller實(shí)現(xiàn)Replication Controller和 Pod的新。管維護(hù)Job,為Jod創(chuàng)建一次

16、性任務(wù)Pod,保證完成Job指定完成的任務(wù)數(shù)目- Pod Autoscaler Controller實(shí)現(xiàn)Pod的自動(dòng)伸縮,定時(shí)獲取數(shù)據(jù),進(jìn)策匹配,當(dāng)滿足條件Pod的伸縮動(dòng)作。Kubernetes Node:除Master,Kubernetes集群中的其他被稱為Node節(jié)點(diǎn),Node節(jié)點(diǎn)才是Kubernetes集群中的工作負(fù)載節(jié)點(diǎn),每個(gè)Node都會(huì)被Master分配一些工作負(fù)載(Docker容),當(dāng)某個(gè)Node宕機(jī),其上的工作負(fù)載會(huì)被Master自動(dòng)轉(zhuǎn)移到其他節(jié)點(diǎn)上去;包含如下組件:1.Kubelet負(fù)責(zé)管控容,Kubelet會(huì)從Kubernetes API Server接收Pod的創(chuàng)建請(qǐng)求,啟

17、動(dòng)和停止容,容運(yùn)狀態(tài)并匯報(bào)給Kubernetes API Server。2.Kubernetes Proxy負(fù)責(zé)為Pod創(chuàng)建服務(wù),Kubernetes Proxy會(huì)從Kubernetes API Server獲取所有的Service信息,并根據(jù)Service的信息創(chuàng)建現(xiàn)Kubernetes層級(jí)的虛擬轉(zhuǎn)發(fā)網(wǎng)絡(luò)。服務(wù),實(shí)現(xiàn)Service到Pod的請(qǐng)求由和轉(zhuǎn)發(fā),從而實(shí)3.Docker Engine(docker),Docker引擎,負(fù)責(zé)本機(jī)的容創(chuàng)建和管工作;k8s集群部署集群環(huán)境: 系統(tǒng):centos7u4本次實(shí)驗(yàn)使用三臺(tái) 用于部署k8s的運(yùn)環(huán)境,1臺(tái)master,2臺(tái)node:細(xì)節(jié)如下設(shè)置三臺(tái) 的

18、主機(jī)名:Master上執(zhí):# hostnamectl -static set-hostname k8s-masterNode1上執(zhí):# hostnamectl -static set-hostname k8s-node-1Node2上執(zhí):# hostnamectl -static set-hostname k8s-node-2修改每臺(tái) 的hosts文件互解:50 k8s-master50 etcd50 registry51 k8s-node-152 k8s-node

19、-2所有 關(guān)閉防火墻和selinux:# systemctl stop firewalld && systemctl disable firewalld && setenforce 0所有 安裝epel-release源# yum -y install epel-release部署master:1.使用yum安裝etcdetcd服務(wù)作為Kubernetes集群的主數(shù)據(jù)庫,在安裝Kubernetes各服務(wù)之前需要首先安裝和啟動(dòng)。# yum -y install etcd2.編輯/etc/etcd/etcd.conf文件(修改加粗部分3) #Member#ETCD_

20、CORS=""ETCD_DATA_DIR="/var/lib/etcd/default.etcd" #ETCD_WAL_DIR=""#ETCD_LISTEN_PEER_URLS=" ETCD_LISTEN_CLIENT_URLS=" #ETCD_MAX_SNAPSHOTS="5"""節(jié)點(diǎn)及功能主機(jī)名IPMaster、etcd、registryK8s-master50Node1K8s-node-151Node2K8s-node

21、-252#ETCD_MAX_WALS="5"ETCD_NAME="master" #ETCD_SNAPSHOT_COUNT="100000" #ETCD_HEARTBEAT_INTERVAL="100" #ETCD_ELECTION_TIMEOUT="1000" #ETCD_QUOTA_BACKEND_BYTES="0" #ETCD_MAX_REQUEST_BYTES="1572864" #ETCD_GRPC_KEEPALIVE_

22、MIN_TIME="5s" #ETCD_GRPC_KEEPALIVE_INTERVAL="2h0m0s" #ETCD_GRPC_KEEPALIVE_TIMEOUT="20s"#Clustering#ETCD_INITIAL_ADVERTISE_PEER_URLS=""ETCD_ADVERTISE_CLIENT_URLS=""啟動(dòng)并驗(yàn)證狀態(tài):# systemctl start etcd# etcdctl set testdir/testkey0 0 0# etcdctl get testdir/t

23、estkey0 0# etcdctl -Ccluster-healthmember 8e9e05c52164694d is healthy: got healthy result from cluster is healthy# etcdctl -Ccluster-healthmember 8e9e05c52164694d is healthy: got healthy result from cluster is healthy安裝Dockerrootk8s-master # yum install docker -y配置Docker配置文件,使其 從registry中拉取鏡像rootk8s

24、-master # vim /etc/sysconfig/docker # /etc/sysconfig/docker# Modify these options if you want to change the way the docker daemon runs OPTIONS='-selinux-enabled -log-driver=journald -signature-verification=false' if -z "$DOCKER_CERT_PATH" ; thenDOCKER_CERT_PATH=/etc/dockerfiOPTIONS

25、='-insecure-registry registry:5000'設(shè)置開機(jī)自啟動(dòng)并開啟服務(wù)rootk8s-master # chkconfig docker on rootk8s-master # service docker start安裝kubernetsrootk8s-master # yum install kubernetes -y配置并啟動(dòng)kubernetes在kubernetes master上需要運(yùn)以下組件: Kubernets API Server Kubernets Controller ManagerKubernets Scheduler相應(yīng)的要改以下

26、幾個(gè)配置中帶顏色部分信息:rootk8s-master # vim /etc/kubernetes/apiserver # kubernetes system config # The following values are used to configure the kube-apiserver # The address on the local server to listen to. KUBE_API_ADDRESS="-insecure-bind-address="# The port on the local server to listen o

27、n. KUBE_API_PORT="-port=8080"# Port minions listen on# KUBELET_PORT="-kubelet-port=10250"# Comma separated list of nodes in the etcd cluster KUBE_ETCD_SERVERS="-etcd-servers="# Address range to use for servicesKUBE_SERVICE_ADDRESSES="-service-cluster-ip-range=10.25

28、4.0.0/16"# default admission control policies #KUBE_ADMISSION_CONTROL="-admission-control=NamespaceLifecycle,NamespaceExists,LimitRanger,SecurityContextDeny,Service Account,ResourceQuota"KUBE_ADMISSION_CONTROL="-admission- control=NamespaceLifecycle,NamespaceExists,LimitRanger,Se

29、curityContextDeny,Resourc eQuota"# Add your own! KUBE_API_ARGS=""rootk8s-master # vim /etc/kubernetes/config # kubernetes system config # The following values are used to configure various aspects of all # kubernetes services, including# kube-apiserver.service# kube-controller-manager

30、.service# kube-scheduler.service # kubelet.service# kube-proxy.service# logging to stderr means we get it in the systemd journal KUBE_LOGTOSTDERR="-logtostderr=true"# journal message level, 0 is debug KUBE_LOG_LEVEL="-v=0"# Should this cluster be allowed to run privileged docker

31、containers KUBE_ALLOW_PRIV="-allow-privileged=false"# How the controller-manager, scheduler, and proxy find the apiserver KUBE_MASTER="-master="啟動(dòng)服務(wù)并設(shè)置開機(jī)自啟動(dòng)rootk8s-master # systemctl enable kube-apiserver.service rootk8s-master # systemctl start kube-apiserver.service rootk8s-mas

32、ter # systemctl enable kube-controller-manager.service rootk8s-master # systemctl start kube-controller-manager.service rootk8s-master # systemctl enable kube-scheduler.service rootk8s-master # systemctl start kube-scheduler.service部署node:安裝配置啟動(dòng)docker(兩臺(tái)node一樣) # yum install docker -y配置Docker配置文件,使其

33、 從registry中拉取鏡像# vim /etc/sysconfig/docker # /etc/sysconfig/docker# Modify these options if you want to change the way the docker daemon runs OPTIONS='-selinux-enabled -log-driver=journald -signature-verification=false' if -z "$DOCKER_CERT_PATH" ; thenDOCKER_CERT_PATH=/etc/dockerfi

34、OPTIONS='-insecure-registry registry:5000'設(shè)置開機(jī)自啟動(dòng)并開啟服務(wù)rootk8s-master # chkconfig docker on rootk8s-master # service docker start安裝配置啟動(dòng)kubernets(兩臺(tái)node一樣) # yum install kubernetes -y配置并啟動(dòng)kubernetes在kubernetes node上需要運(yùn)以下組件: KubeletKubernets Proxy相應(yīng)的要改以下幾個(gè)配置文中帶顏色部分信息: rootK8s-node-1 # vim /etc/

35、kubernetes/config # kubernetes system config # The following values are used to configure various aspects of all # kubernetes services, including# kube-apiserver.service# kube-controller-manager.service # kube-scheduler.service# kubelet.service# kube-proxy.service# logging to stderr means we get it

36、in the systemd journal KUBE_LOGTOSTDERR="-logtostderr=true"# journal message level, 0 is debug KUBE_LOG_LEVEL="-v=0"# Should this cluster be allowed to run privileged docker containers KUBE_ALLOW_PRIV="-allow-privileged=false"# How the controller-manager, scheduler, and

37、 proxy find the apiserver KUBE_MASTER="-master="rootK8s-node-1 # vim /etc/kubernetes/kubelet # kubernetes kubelet (minion) config# The address for the info server to serve on (set to or "" for all interfaces)KUBELET_ADDRESS="-address="# The port for the i

38、nfo server to serve on # KUBELET_PORT="-port=10250"# You may leave this blank to use the actual hostname KUBELET_HOSTNAME="-hostname-override=k8s-node-1"# location of the api-serverKUBELET_API_SERVER="-api-servers="# pod infrastructure container KUBELET_POD_INFRA_CONTAI

39、NER="-pod-infra-container-image=registry/rhel7/pod-infrastructure:latest"# Add your own! KUBELET_ARGS=""啟動(dòng)服務(wù)并設(shè)置開機(jī)自啟動(dòng)rootk8s-master # systemctl enable kubelet.service rootk8s-master # systemctl start kubelet.service rootk8s-master # systemctl enable kube-proxy.service rootk8s-mast

40、er # systemctl start kube-proxy.service查看狀態(tài):在master上查看集群中節(jié)點(diǎn)及節(jié)點(diǎn)狀態(tài)rootk8s-master # kubectl -sget node NAMESTATUS AGEk8s-node-1 Ready 3m k8s-node-2 Ready 16srootk8s-master # kubectl get nodes NAMESTATUS AGEk8s-node-1 Ready 3m k8s-node-2 Ready 43s創(chuàng)建覆蓋網(wǎng)絡(luò)Flannel 安裝Flannel在master、node上均執(zhí)如下命令,進(jìn)安裝rootk8s-mas

41、ter # yum install flannel -y配置Flannelmaster、node上均編輯/etc/sysconfig/flanneld,修改紅色部分rootk8s-master # vi /etc/sysconfig/flanneld # Flanneld configuration options# etcd url location. Point this to the server where etcd runs FLANNEL_ETCD_ENDPOINTS=""# etcd config key. This is the configuration

42、key that flannel queries # For address range assignment FLANNEL_ETCD_PREFIX="/atomic.io/network"# Any additional options that you want to pass #FLANNEL_OPTIONS=""配置etcd中關(guān)于flannel的keyFlannel使用Etcd進(jìn)配置,來保證多個(gè)Flannel實(shí)之間的配置一致性,所以需要在etcd上進(jìn)如下配置:(/atomic.io/network/config這個(gè)key與上文/etc/sysc

43、onfig/flannel中的配置項(xiàng)FLANNEL_ETCD_PREFIX是相對(duì)應(yīng)的,錯(cuò)誤的話啟動(dòng)就會(huì)出錯(cuò))rootk8s-master # etcdctl mk /atomic.io/network/config ' "Network": "/16" ' "Network": "/16" 啟動(dòng)啟動(dòng)Flannel之后,需要依次重啟docker、kubernete。在master執(zhí):systemctl enable flanneld.service systemctl

44、start flanneld.service部署dashboard部署dashboard需要兩個(gè)費(fèi)勁的鏡像注:正常來講只需要配置好yaml文件,需要事先 好鏡像到節(jié)點(diǎn)當(dāng)中,也就是如果yaml配置文件內(nèi)所使用的鏡像在node中存在就會(huì)自動(dòng)從docker源 ,但是我們現(xiàn)在使用的鏡像是沒有國內(nèi)源 的,所以先 下來導(dǎo)入到每個(gè)node內(nèi)準(zhǔn)備鏡像:國外 ,國內(nèi)導(dǎo)入核心操作:從外的服務(wù)上pull下來對(duì)應(yīng)的鏡像,之后通過docker save保存成tar包,將tar包傳回國內(nèi),在每個(gè)node上執(zhí)docker load將鏡像導(dǎo)入(我在master上也倒入)。鏡像1:在dashboard.yaml中定義dashb

45、oard所用的鏡像:daocloud.io/daocloud/ _containers_kubernetes-dashboard-amd64:v1.6.1也可以選擇其他的版本注:這個(gè)鏡像我是從國內(nèi)源 的,每個(gè)節(jié)點(diǎn)都# docker pull daocloud.io/daocloud/ _containers_kubernetes-dashboard- amd64:v1.6.1鏡像2:?jiǎn)?dòng)k8s的pod還需要一個(gè)額外的鏡像:registry/rhel7/pod-infrastructure:latest(node中,/etc/kubernetes/kubelet的配置),由于一些眾所周知的 ,這

46、個(gè)鏡像在國內(nèi)是 下來的我先申請(qǐng)香港服務(wù)安裝doker,pull鏡像下來打tar包,但是香港服務(wù)scp到我本地的時(shí)候速度每次降到0,換服務(wù),我又申請(qǐng)美國的服務(wù)50K的速度下1個(gè)多小時(shí),具體方法如下:美國服務(wù):# yum install docker -y # systemctl start docker# docker search pod-infrastructure /從找到的結(jié)果中 一個(gè)其他版本的鏡像,原裝的能# docker pull docker.io/tianyebj/pod-infrastructure# docker save -o podinfrastructure.tar d

47、ocker.io/tianyebj/pod-infrastructure本地 node1:service docker restartsystemctl restart kube-apiserver.service systemctl restart kube-controller-manager.service systemctl restart kube-scheduler.service在node上執(zhí):systemctl enable flanneld.service systemctl start flanneld.service service docker restartsyste

48、mctl restart kubelet.service systemctl restart kube-proxy.service# scp 美國服務(wù)IP:/podinfrastructure.tar /下來之后拷貝給所有node節(jié)點(diǎn),然后導(dǎo)入:# docker load < podinfrastructure.tar查看導(dǎo)入之后的鏡像# docker imagesREPOSITORYTAGIMAGE IDCREATEDSIZEdaocloud.io/daocloud/_containers_kubernetes-dashboard-amd64 v1.6.1 71dfe833ce7410

49、 months ago134 MBdocker.io/tianyebj/pod-infrastructurelatest34d3450d733b14 months ago 205 MB修改配置文件(每個(gè)節(jié)點(diǎn)都修改):# vim /etc/kubernetes/kubelet /修改下內(nèi)的鏡像名稱KUBELET_POD_INFRA_CONTAINER="-pod-infra-container-image=docker.io/tianyebj/pod- infrastructure:latest"重啟服務(wù)(每個(gè)節(jié)點(diǎn)都重啟):# systemctl restart kubele

50、tmaster上編輯dashboard.yaml:任何目錄下都可以,注意或改以下紅色部分rootk8s-master /# vim dashboard.yaml apiVersion: extensions/v1beta1kind: Deployment metadata:# Keep the name in sync with image version and# gce/coreos/kube-manifests/addons/dashboard counterparts name: kubernetes-dashboard-latestnamespace: kube-system spe

51、c:replicas: 1 template:metadata:labels:k8s-app: kubernetes-dashboard version: latest kubernetes.io/cluster-service: "true"spec:containers:- name: kubernetes-dashboardimage: daocloud.io/daocloud/_containers_kubernetes-dashboard- amd64:v1.6.1resources:# keep request = limit to keep this cont

52、ainer in guaranteed class limits:cpu: 100mmemory: 50Mi requests:cpu: 100m memory: 50Miports:- containerPort: 9090 args:- -apiserver-host= livenessProbe:httpGet:path: / port: 9090initialDelaySeconds: 30timeoutSeconds: 30master上編輯dashboardsvc.yaml文件任何目錄下都可以:rootk8s-master /# vim dashboardsvc.yaml apiV

53、ersion: v1kind: Service metadata:name: kubernetes-dashboard namespace: kube-system labels:k8s-app: kubernetes-dashboard kubernetes.io/cluster-service: "true"spec:selector:k8s-app: kubernetes-dashboard ports:- port: 80targetPort: 9090啟動(dòng)在master執(zhí)如下命令:# kubectl create -f dashboard.yaml# kubect

54、l create -f dashboardsvc.yamldashboard搭建完成。驗(yàn)證命令驗(yàn)證,master上執(zhí)如下命令:rootk8s-master /# kubectl get deployment -all-namespacesNAMESPACENAMEDESIREDCURRENTUP-TO-DATE AVAILABLEAGEkube-systemkubernetes-dashboard-latest111119srootk8s-master /# kubectl get svc -all-namespacesNAMESPACEdefault kube-systemNAMEkuber

55、netes kubernetes-dashboardCLUSTER-IP 2EXTERNAL-IP<none><none>PORT(S) 443/TCP80/TCPAGE4d 32srootk8s-master /# kubectl get pod -o wide -all-namespacesNAMESPACENAMERESTARTS AGEREADYSTATUSIPNODEkube-system kubernetes-dashboard-latest-1231782504-t79t7 1/1 1m k8s-node-2Running 0界面驗(yàn)證,瀏覽:部署集群本地倉庫生產(chǎn)環(huán)境下,勢(shì)必能夠每個(gè) 都導(dǎo)入一遍從外 回來的鏡像,這方法都是可以長(zhǎng)期使用的??梢酝ㄟ^搭建本地的私有鏡像倉庫(d

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論