第十二至十四讲-centos7安装k8s集群实操_第1页
第十二至十四讲-centos7安装k8s集群实操_第2页
第十二至十四讲-centos7安装k8s集群实操_第3页
已阅读5页,还剩5页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

在CentOS7.x下yum与压缩包混合方式安装Kubernetes是开源的容器集群管理系统,基于Docker构建一个容器的调度服务,提供资源调度、均衡容灾容等功能套件,目前centosyum源上版本为1.4。本文介绍如何基于Centos7.3构建Kubernetes平台,在正式介绍之Kubernetes几个概念及其承担的功能。以下为Kubernetes的架构设计图:在Kubernetes系统中,调度的最小颗粒不是单纯的容器,而是抽象成一个Pod,Pod是一个可以被创建、销毁、ReplicationReplicationController是Kubernetes系统中最有用的功能,实现多个Pod副本,往往一个应用需要多个Pod来支制的副本数,即使副本所调度分配的主宿机出现异常,通过ReplicationController可以保证在其它主宿机启用同等数量的Controller可以通过repcon模板来创建多个Pod副本,同样也可以直接已存在Pod,需要通过Labelselector来关联。Services是Kubernetes最的单元,通过虚拟一个IP及服务端口,可 我们定义好的Pod资源,目前的转发来实现,转发的目标端口为Kube_proxy生成的随机端口,目前只提供 请关注下篇《kubernetes与HECD架构的整合Labels区分Pod、Service、ReplicationControllerkey/value仅使用在Pod、Service、Replicati系识别,但对这些单元本身进行操作时得使用name。Proxy不但解决了同一主宿机相同服务端口的问题,还提供了Service转发服务端口对外提供服务的能力Proxy载均衡算法uenetesDepyment提供了的用于更新od和Relcaet(下一代的Repcatnntoer)的方法ub供了的用于更新d和Repcaet(下一代的Repctinntoer)的方法,您可以在Delyment对象中只描述(预期的运行状态),Deyment控制器为您将现在的实际状态转换成您期望的状态,例如,您想将所有的weap1weap:110,您只需创建一个Depyment,uenetes会按照Depyment自动进行升级。现在,您可以通过De(o,s,c),替换已经存在的资源等。eploymet集成了上线部署、滚动升级、创建副本、暂停上线任务,恢复上线任务,回滚到以前某一版本(成功/稳功能,在某种程度上,eployment可以帮我们实现无人值守的上线,大大降低我们的上线过程的复杂沟通、操作风险节IP地4111系统初始化安装(所有主机)-选择【最小化安装】,然后umupdat,升级到版本umupdateyuminstall-ykubernetes更改Hostname为master、etcd、node1、node2,配置IP地址,配置4台测试机的/etc/hosts文[root@master[root@master~]#cat127.0.0.1localhost172.16.233.61master[root@master4::1localhost6时间校hwclock-w关闭CentOS7自带的服systemctldisablefirewalld;systemctlstop配置etcd服务[root@etcd[root@etcd~]#grep-v'^#'[root@etcd""systemctlstartetcdsystemctlenableetcdetcd[root@etcd~]#etcdctlcluster-member8e9e05c dishealthy:gothealthyresultfromclusterishealthy[root@etcd[root@etcd~]#etcdctlmemberlist d:name=defaultpeerURLs= [root@etcdfirewall-cmd--zone=public--add-port=2379/tcp--firewall-cmd--zone=public--add-port=2380/tcp--permanentfirewall-cmd--reloadfirewall-cmd--list-配置master服务kube-[root@master~]#grep-v'^#' [root@master[root@master~]#grep-v'^#'[root@master~]#grep-v'^#'"[root@masterkube-controller-[root@master~]#grep-v'^#'/etc/kubernetes/controller-manager[root@masterkube-[root@master~]#grep-v/etc/kubernetes/schedulerKUBE_SCHEDULER_ARGS="--address=0.0.0.0"[root@master~]#for$SERVICESinkube-apiserverkube-controller-managerkube-schedulerdosystemctlrestartSERVICES配置node1节点服务[root@etcd~]#etcdctlset/k8s/network/config'{"Network":{"Network":[root@etcd~]#etcdctlget{"Network":[root@etcd[root@node1~]#grep-v'^#'/etc/sysconfig/flanneld [root@node1ens33ipnode1kube-[root@node1~]#grep-v'^#'/etc/kubernetes/config [root@node1[root@node1~]#grep-v'^#'/etc/kubernetes/proxy[root@node1node1[root@node1~]#grep-v'^#'/etc/kubernetes/kubeletKUBELET_HOSTNAME="--hostname-KUBELET_API_SERVER="--api-"KUBELET_POD_INFRA_CONTAINER="--pod-infra-container- /rhel7/pod-[root@node1forSERVICESinflanneldkube-proxykubelet;dosystemctlrestart$SERVICESsystemctlenablesystemctlstatus$SERVICES配置node2节点服务[root@node2~]#grep-v'^#'[root@node2~]#"" ipnode2kube-[root@node2~]#grep-v'^#'/etc/kubernetes/config [root@node2[root@node2~]#grep-v'^#'/etc/kubernetes/proxy[root@node2node2[root@node2~]#grep-v'^#'/etc/kubernetes/kubeletKUBELET_HOSTNAME="--hostname-KUBELET_API_SERVER="--api-"KUBELET_POD_INFRA_CONTAINER="--pod-infra-container- /rhel7/pod-[root@node2forSERVICESinflanneldkube-proxykubeletdocker;dosystemctlrestart$SERVICESsystemctlenable$SERVICESsystemctlstatus至此,整个Kubernetes集群搭建完[root@master[root@master~]#kubectlgetnodes [root@master三、在上面的集群上搭建基于redisdocker1、启动Redis使用deployment保只有一个pod运行(当某个down,deploy在另一个健康的node动redismaster),但可能会有数据[root@master[root@masterguestbook]#kubectlcreate-fredis-master-deployment.yamldeployment"redis-master"created[root@master[root@masterguestbook]#kubectlget UP-TO- [root@masterguestbook]#[root@masterguestbook]#kubectlgetNAMENAMEREADYredis--c3qek1/1[root@master 2、启动master一个kubernetesservice对一个或多个Conttainer行负载均衡,这是通过我们上面redis-master定义的labels数据实现的,值得master,但是我们依然为它创建一个service,这是因为这样我们就能使用一个elasticIP来路由到具体某一个masterkubernetes集群中的service是通过container中的环境变量实现服务发现的,service基于podlabel实现container的负载均衡在第一步中创建的pod了一个labelname=redis-master,service的selector段决定了service流量转发给哪个pod,portproxy运行在什么端口[root@master[root@masterguestbook]#kubectlcreate-fredis-master-service"redis-master"created[root@masterguestbook]#root@masterguestbook]#kubectlgetredis-EXTERNAL- [root@master上面的运行成功后,所有pods都能发现redismaster运行在6379端口,从salve到master流量会有以下两步一个redisslave连接到redismasterservice的port流量会从service节点上的port到targetPort,如果targetPort未指定,默认和port一3、启动replicatedslave虽然redismaster是一个单独的pod,redisslaves是一个replicatedpod,在Kubernetes中,一个ReplicationController负责管理一[root@masterguestbook]#kubectlcreate-fredis-slave-deployment"redis-slave"created[root@masterguestbook]#[root@masterguestbook]#kubectlget[root@masterguestbook]#kubectlcreate-fredis-slave-deployment"redis-slave"created[root@masterguestbook]#[root@masterguestbook]#kubectlget UP-TO- redis- [root@masterguestbook]#[root@masterguestbook]#kubectlgetpods-o[root@mastermaster slaveredis--0redis--0redis--04、启动slave和master一样,我们希望有一个服务连接到redisslave,除了服务发现之外,slaveservice还为webappclient提供了透理。这次serviceselector是name=redis-slave,我们可以方便的使用kubectlgetservices-llabel=value命令来定位这些[root@masterguestbook]#kubectlcreate-fredis-slave-serviceredis-slave[root@masterguestbook]#kubectlgetsvc-owideNAMECLUSTER-IPEXTERNAL-IPPORT(S)AGESELECTORkubernetes10.254.0.1443/TCPredis-master10.254.203.1446379/TCP12mapp=redis,role=master,tier=backendredis-slave10.254.0.2146379/TCP38sapp=redis,role=slave,tier=backend[root@masterguestbook]#5、创建frontend这是一个简单的PHP服务,用来和masterservice(写请求)或slaveservice(读请求)交UP-TO-3332redis-1111redis-2222-0-0-0redis--0redis--0redis--0[root@masterguestbook]#kubectlcreate[root@masterguestbook]#kubectlcreate-ffrontend-deployment"frontend"created[root@masterguestbook]#[root@masterguestbook]#kubectlget[root@master[root@masterguestbook]#kubectlgetpods-o[root@masterredis redisfrontend和其他service一样,你可以创建一个service管理frontend[root@master[root@masterguestbook]#kubectlcreate-ffrontend-service"frontend"created[root@masterguestbook]#[root@masterguestbook]#kubectlgetsvc-oredis-EXTERNAL- [root@master我们可以通过frontendservice(10.254.18.215)pods 可以直 [root@node2~]#[root@node2[root@node26yaml1、redis-master-apiVersion:apiVersion:extensions/v1beta1kind:Deploymentname:redis-#theselabelscanbeapplied#fromthelabelsinthepodtemplateifnotset#labels: app: role:master tier:backend#thisreplicasvalueis#modifyitaccordingtoyourcasereplicas:1#selectorcanbeapplied#fromthelabelsinthepodtemplateifnotset#selector: app: role: tier:backendapp:redisrole:mastertier:backend-name:masterimage:redisrequests:cpu:100mmemory:-containerPort:2、redis-master-apiVersion:apiVersion:kind:Servicename:redis-masterapp:redisrole:mastertier:backend#theportthatthisserviceshouldserve-port:targetPort:6379app:redisrole:mastertier:backend3、redis-slave-apiVersion:apiVersion:extensions/v1beta1kind:Deploymentname:redis-#theselabelscanbeapplied#fromthelabelsinthepodtemplateifnotset#labels: app: role: tier:backend#thisreplicasvalueis#modifyitaccordingtoyourcasereplicas:2#selectorcanbeapplied#fromthelabelsinthepodtemplateifnotset#selector: app: role: tier:backendapp:redisrole:slavetier:backendname:image:kubeguide/guestbook-redis-slaverequests:cpu:100mname:GET_HOSTS_FROMvalue:env#Ifyourclusterconfigdoesnotincludeadnsservice,thento#insteadaccessanenvironmentvariabletofindthemaster#service'shost,commentoutthe'value:dns'lineabove,and mentthelinebelow.#value:envcontainerPort:4、redis-slave-apiVersion:apiVersion:kind:Servicename:redis-slaveapp:redisrole:slavetier:backend#theportthatthisserviceshouldserve-port:6379app:redisrole:slavetier:backend5、frontend-apiVersion:apiVersion:extensions/v1beta1kind:Deploymentname:#theselabelscanbeapplied##fromthelabelsinthepodtemplateifnot# app:guestbook tier:#thisreplicasvalueis#modifyitaccordingtoyourcasereplicas:3#selectorcanbeapplied#fromthelabelsinthepodtemplateifnotset#selector: app: tier:frontendapp:guestbooktier:name:php-image:kubeg

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论