首页 Kubernetes部署指南

Kubernetes部署指南

举报
开通vip

Kubernetes部署指南1Kubernetes部署指南2目录部署配置部署指南kubectl安装单机部署特性开关最佳配置版本支持集群部署2.5.32.5.42.5.52.5.62.5.72.5.82.5.92.5.102.5.112.5.123kubeadmkopsKubesprayAzureWindowsLinuxKitkubeasz附加组件Addon-managerDNSDashboard监控日志MetricsGPUClusterAutoscalerip-masq-agentKubernetes-The-Hard-Way准备部署环境安装...

Kubernetes部署指南
1Kubernetes部署指南2目录部署配置部署指南kubectl安装单机部署特性开关最佳配置版本支持集群部署2.5.32.5.42.5.52.5.62.5.72.5.82.5.92.5.102.5.112.5.123kubeadmkopsKubesprayAzureWindowsLinuxKitkubeasz附加组件Addon-managerDNSDashboard监控日志MetricsGPUClusterAutoscalerip-masq-agentKubernetes-The-Hard-Way准备部署环境安装必要工具创建计算资源配置创建证书配置生成配置配置生成密钥部署Etcd群集部署控制节点部署计算节点配置Kubectl配置网络路由部署DNS扩展烟雾测试删除集群3.7.23.7.33.7.43.7.53.7.63.7.73.83.8.13.8.23.8.33.8.43.8.53.8.63.8.73.8.83.8.93.93.9.13.9.23.9.33.9.43.9.53.9.63.9.73.9.83.9.93.9.103.9.113.9.123.9.133.9.14部署指南366Kubernetes部署指南本章介绍创建的Kubernetes集群部署方法、kubectl客户端的安装方法以及推荐的配置。其中Kubernetes-The-Hard-Way介绍了在GCE的Ubuntu虚拟机中一步步部署一套Kubernetes高可用集群的详细步骤,这些步骤也同样适用于CentOS等其他系统以及AWS、Azure等其他公有云平台。在国内部署集群时,通常还会碰到镜像无法拉取或者拉取过慢的问题。对这类问题的解决方法就是使用国内的镜像,具体可以参考国内镜像列 关于同志近三年现实表现材料材料类招标技术评分表图表与交易pdf视力表打印pdf用图表说话 pdf 。一般部署完成后,还需要运行一系列的测试来验证部署是成功的。sonobuoy可以简化这个验证的过程,它通过一系列的测试来验证集群的功能是否正常。其使用方法为通过SonobuoyScannertool在线使用(需要集群公网可访问)或者使用命令行工具版本依赖#Install$goget-u-vgithub.com/heptio/sonobuoy#Run$sonobuoyrun$sonobuoystatus$sonobuoylogs$sonobuoyretrieve.#Cleanup$sonobuoydelete部署指南367依赖组件v1.13v1.12Etcdv3.2.24+或v3.3.0+v3.2.24+或v3.3.0+etcd2弃用Docker1.11.1,1.12.1,1.13.1,17.03,17.06,17.09,18.061.11.1,1.12.1,1.13.1,17.03,17.06,17.09,18.06Go1.11.21.10.4CNIv0.6.0v0.6.0CSI1.0.00.3.0Dashboardv1.10.0v1.8.3HeapsterRemainsv1.6.0-betabutretiredv1.6.0-betaClusterAutoscalerv1.13.0v1.12.0kube-dnsv1.14.13v1.14.13Influxdbv1.3.3v1.3.3Grafanav4.4.3v4.4.3Kibanav6.3.2v6.3.2cAdvisorv0.32.0v0.30.1Fluentdv1.2.4v1.2.4Elasticsearchv6.3.2v6.3.2go-oidcv2.0.0v2.0.0calicov3.3.1v2.6.7crictlv1.12.0v1.12.0CoreDNSv1.2.6v1.2.2event-exporterv0.2.3v0.2.3metrics-serverv0.3.1v0.3.1ingress-gcev1.2.3v1.2.3ingress-nginxv0.21.0v0.21.0ip-masq-agentv2.1.1v2.1.1hcsshimv0.6.11v0.6.11部署指南368部署方法1.单机部署2.集群部署kubeadmkopsKubesprayAzureWindowsLinuxKitFraktikubeasz3.Kubernetes-The-Hard-Way准备部署环境安装必要工具创建计算资源配置创建证书配置生成配置配置生成密钥部署Etcd群集部署控制节点部署计算节点配置Kubectl配置网络路由部署DNS扩展烟雾测试删除集群4.kubectl客户端5.附加组件DashboardHeapsterEFKMetricsClusterAutoScaler6.推荐配置7.版本支持kubectl安装370kubectl安装本章介绍kubectl的安装方法。安装方法OSX可以使用Homebrew或者curl下载kubectl:或者LinuxWindows或者使用Chocolatey来安装:brewinstallkubectlcurl-LOhttps://storage.googleapis.com/kubernetes-release/release/$(curl-shttps://storage.googleapis.com/kubernetes-release/release/stable.txt)/bin/darwin/amd64/kubectlcurl-LOhttps://storage.googleapis.com/kubernetes-release/release/$(curl-shttps://storage.googleapis.com/kubernetes-release/release/stable.txt)/bin/linux/amd64/kubectlcurl-LOhttps://storage.googleapis.com/kubernetes-release/release/$(curl-shttps://storage.googleapis.com/kubernetes-release/release/stable.txt)/bin/windows/amd64/kubectl.exechocoinstallkubernetes-clikubectl安装371使用方法kubectl的详细使用方法请参考kubectl指南。kubectl插件你可以使用krew来管理kubectl插件。krew是一个用来管理kubectl插件的工具,类似于apt或yum,支持搜索、安装和管理kubectl插件。安装安装完成后,把krew的二进制文件加入环境变量PATH中:最后,再执行kubectl命令确认安装成功:使用方法首次使用前,请执行下面的命令更新插件索引:(set-x;cd"$(mktemp-d)"&&curl-fsSLO"https://storage.googleapis.com/krew/v0.2.1/krew.{tar.gz,yaml}"&&tarzxvfkrew.tar.gz&&./krew-"$(uname|tr'[:upper:]''[:lower:]')_amd64"install\--manifest=krew.yaml--archive=krew.tar.gz)exportPATH="${KREW_ROOT:-$HOME/.krew}/bin:$PATH"$kubectlpluginlistThefollowingkubectl-compatiblepluginsareavailable:/home/<user>/.krew/bin/kubectl-krewkubectl安装372使用示例:在安装插件后,会输出插件所依赖的外部工具,这些工具需要你自己手动安装。最后,就可以通过kubectl<plugin-name>来使用插件了:升级方法参考文档https://github.com/GoogleContainerTools/krewkubectlkrewupdatekubectlkrewsearch#showallpluginskubectlkrewinstallssh-jump#installapluginnamed"ssh-jump"kubectlssh-jump#usethepluginkubectlkrewupgrade#upgradeinstalledpluginskubectlkrewremovessh-jump#uninstallapluginkubectlssh-jump<node-name>-u<username>-i~/.ssh/id_rsa-p~/.ssh/id_rsa.pubkubectlkrewupgrade单机部署374单机部署minikube创建Kubernetescluster(单机版)最简单的方法是minikube。国内网络环境下也可以考虑使用kubeasz的AllInOne部署。首先下载kubectl安装minikube(以MacOS为例)在Windows上面最后启动minikube使用calicocurl-LOhttps://storage.googleapis.com/kubernetes-release/release/$(curl-shttps://storage.googleapis.com/kubernetes-release/release/stable.txt)/bin/linux/amd64/kubectlchmod+xkubectl#installminikube$brewcaskinstallminikube$curl-LOhttps://storage.googleapis.com/minikube/releases/latest/docker-machine-driver-hyperkit$sudoinstall-oroot-gwheel-m4755docker-machine-driver-hyperkit/usr/local/bin/chocoinstallminikubechocoinstallkubernetes-cli#startminikube.#httpproxyisrequiredinChina$minikubestart--docker-envHTTP_PROXY=http://proxy-ip:port--docker-envHTTPS_PROXY=http://proxy-ip:port--vm-driver=hyperkit单机部署375minikube支持配置使用CNI插件,这样可以方便的使用社区提供的各种网络插件,比如使用calico还可以支持NetworkPolicy。首先使用下面的命令启动minikube:安装calico网络插件:开发版minikube/localkube只提供了正式release版本,而如果想要部署master或者开发版的话,则可以用hack/local-up-cluster.sh来启动一个本地集群:打开另外一个终端,配置kubectl:minikubestart--docker-envHTTP_PROXY=http://proxy-ip:port\--docker-envHTTPS_PROXY=http://proxy-ip:port\--network-plugin=cni\--host-only-cidr172.17.17.1/24\--extra-config=kubelet.ClusterCIDR=192.168.0.0/16\--extra-config=proxy.ClusterCIDR=192.168.0.0/16\--extra-config=controller-manager.ClusterCIDR=192.168.0.0/16kubectlapply-fhttps://docs.projectcalico.org/v3.1/getting-started/kubernetes/installation/hosted/rbac-kdd.yamlcurl-O-Lhttps://docs.projectcalico.org/v3.1/getting-started/kubernetes/installation/hosted/kubernetes-datastore/calico-networking/1.7/calico.yamlsed-i-e'/nodeSelector/d'calico.yamlsed-i-e'/node-role.kubernetes.io\/master:""/d'calico.yamlsed-i-e's/10\.96\.232/10.0.0/'calico.yamlkubectlapply-fcalico.yamlcd$GOPATH/src/k8s.io/kubernetesexportKUBERNETES_PROVIDER=localhack/install-etcd.shexportPATH=$GOPATH/src/k8s.io/kubernetes/third_party/etcd:$PATHhack/local-up-cluster.sh单机部署376或者,使用kind,以Docker容器的方式运行Kubernetes集群:参考文档RunningKubernetesLocallyviaMinikubehttps://github.com/kubernetes-sigs/kindcd$GOPATH/src/k8s.io/kubernetesexportKUBECONFIG=/var/run/kubernetes/admin.kubeconfigcluster/kubectl.sh$gogetsigs.k8s.io/kind#ensurethatKubernetesisclonedin$(goenvGOPATH)/src/k8s.io/kubernetes#buildanodeimage$kindbuildnode-image#createaclusterwithkindbuildnode-image$kindcreatecluster--imagekindest/node:latest特性开关377特性开关特性开关(FeatureGates)是Kubernetes中用来开启实验性功能的配置,可以通过选项--feature-gates来给不同的组件(如kube-apiserver、kube-controller-manager、kube-scheduler、kubelet、kube-proxy等)开启功能特性。FeatureDefaultStageSincAcceleratorsfalseAlpha1.6AdvancedAuditingfalseAlpha1.7AdvancedAuditingtrueBeta1.8AdvancedAuditingtrueGA1.12AffinityInAnnotationsfalseAlpha1.6AllowExtTrafficLocalEndpointsfalseBeta1.4AllowExtTrafficLocalEndpointstrueGA1.7APIListChunkingfalseAlpha1.8APIListChunkingtrueBeta1.9APIResponseCompressionfalseAlpha1.7AppArmortrueBeta1.4AttachVolumeLimitfalseAlpha1.11BlockVolumefalseAlpha1.9CPUManagerfalseAlpha1.8CPUManagertrueBeta1.10CRIContainerLogRotationfalseAlpha1.10CRIContainerLogRotationtrueBeta1.11CSIBlockVolumefalseAlpha1.11CSIPersistentVolumefalseAlpha1.9CSIPersistentVolumetrueBeta1.10CustomPodDNSfalseAlpha1.9CustomPodDNStrueBeta1.10CustomResourceSubresourcesfalseAlpha1.10CustomResourceValidationfalseAlpha1.8特性开关378CustomResourceValidationtrueBeta1.9DebugContainersfalseAlpha1.10DevicePluginsfalseAlpha1.8DevicePluginstrueBeta1.10DynamicKubeletConfigfalseAlpha1.4DynamicKubeletConfigtrueBeta1.11DynamicProvisioningSchedulingfalseAlpha1.11DynamicVolumeProvisioningtrueAlpha1.3DynamicVolumeProvisioningtrueGA1.8EnableEquivalenceClassCachefalseAlpha1.8ExpandInUsePersistentVolumesfalseAlpha1.11ExpandPersistentVolumesfalseAlpha1.8ExpandPersistentVolumestrueBeta1.11ExperimentalCriticalPodAnnotationfalseAlpha1.5ExperimentalHostUserNamespaceDefaultingfalseBeta1.5GCERegionalPersistentDisktrueBeta1.10HugePagesfalseAlpha1.8HugePagestrueBeta1.10HyperVContainerfalseAlpha1.10InitializersfalseAlpha1.7KubeletConfigFilefalseAlpha1.8KubeletPluginsWatcherfalseAlpha1.11KubeletPluginsWatchertrueBeta1.12LocalStorageCapacityIsolationfalseAlpha1.7LocalStorageCapacityIsolationtrueBeta1.10MountContainersfalseAlpha1.9MountPropagationfalseAlpha1.8MountPropagationtrueBeta1.10MountPropagationtrueGA1.12PersistentLocalVolumesfalseAlpha1.7特性开关379PersistentLocalVolumestrueBeta1.10PodPriorityfalseAlpha1.8PodReadinessGatesfalseAlpha1.11PodReadinessGatestrueBeta1.12PodShareProcessNamespacefalseAlpha1.10PodShareProcessNamespacetrueBeta1.12PVCProtectionfalseAlpha1.9ReadOnlyAPIDataVolumestrueDeprecated1.10ResourceLimitsPriorityFunctionfalseAlpha1.9RotateKubeletClientCertificatetrueBeta1.7RotateKubeletServerCertificatefalseAlpha1.7RunAsGroupfalseAlpha1.10RuntimeClassfalseAlpha1.12SCTPSupportfalseAlpha1.12ServiceNodeExclusionfalseAlpha1.8StorageObjectInUseProtectiontrueBeta1.10StorageObjectInUseProtectiontrueGA1.11StreamingProxyRedirectstrueBeta1.5SupportIPVSProxyModefalseAlpha1.8SupportIPVSProxyModefalseBeta1.9SupportIPVSProxyModetrueBeta1.10SupportIPVSProxyModetrueGA1.11SupportPodPidsLimitfalseAlpha1.10SysctlstrueBeta1.11TaintBasedEvictionsfalseAlpha1.6TaintNodesByConditionfalseAlpha1.8TaintNodesByConditiontrueBeta1.12TokenRequestfalseAlpha1.10TokenRequestTrueBeta1.12TokenRequestProjectionfalseAlpha1.11TokenRequestProjectionTrueBeta1.12特性开关380TTLAfterFinishedfalseAlpha1.12VolumeSchedulingfalseAlpha1.9VolumeSchedulingtrueBeta1.10VolumeSubpathEnvExpansionfalseAlpha1.11ScheduleDaemonSetPodstrueBeta1.12参考文档KubernetesFeatureGates最佳配置381Kubernetes配置最佳实践本文档旨在汇总和强调用户指南、快速开始文档和示例中的最佳实践。该文档会很很活跃并持续更新中。如果你觉得很有用的最佳实践但是本文档中没有包含,欢迎给我们提PullRequest。通用配置建议定义配置文件的时候,指定最新的稳定API版本。在部署配置文件到集群之前应该保存在版本控制系统中。这样当需要的时候能够快速回滚,必要的时候也可以快速的创建集群。使用YAML格式而不是JSON格式的配置文件。在大多数场景下它们都可以互换,但是YAML格式比JSON更友好。尽量将相关的对象放在同一个配置文件里,这样比分成多个文件更容易管理。参考guestbook-all-in-one.yaml文件中的配置。使用kubectl命令时指定配置文件目录。不要指定不必要的默认配置,这样更容易保持配置文件简单并减少配置错误。将资源对象的描述放在一个annotation中可以更好的内省。裸奔的PodsvsReplicationControllers和Jobs如果有其他方式替代“裸奔的pod”(如没有绑定到replicationcontroller上的pod),那么就使用其他选择。在node节点出现故障时,裸奔的pod不会被重新调度。ReplicationController总是会重新创建pod,除了明确指定了restartPolicy:Never的场景。Job对象也适用。Services通常最好在创建相关的replicationcontrollers之前先创建service。这样可以保证容器在启动时就配置了该服务的环境变量。对于新的应用,推荐通过服务的DNS名字来访问(而不是通过环境变量)。除非有必要(如运行一个nodedaemon),不要使用配置hostPort的Pod(用来指定暴露在主机上的端口号)。当你给Pod绑定了一个hostPort,该Pod会因为端口冲突很难调度。如果是为了调试目的来通过端口访问的话,你可以使用最佳配置382kubectlproxyandapiserverproxy或者kubectlport-forward。你可使用Service来对外暴露服务。如果你确实需要将pod的端口暴露到主机上,考虑使用NodePortservice。跟hostPort一样的原因,避免使用hostNetwork。如果你不需要kube-proxy的负载均衡的话,可以考虑使用使用headlessservices(ClusterIP为None)。使用Label使用labels来指定应用或Deployment的语义属性。这样可以让你能够选择合适于场景的对象组,比如app:myapp,tire:frontend,phase:test,deployment:v3。一个service可以被配置成跨越多个deployment,只需要在它的labelselector中简单的省略发布相关的label。注意Deployment对象不需要再管理replicationcontroller的版本名。Deployment中描述了对象的期望状态,如果对spec的更改被应用了话,Deploymentcontroller会以控制的速率来更改实际状态到期望状态。利用label做调试。因为Kubernetesreplicationcontroller和service使用label来匹配pods,这允许你通过移除pod的相关label的方式将其从一个controller或者service中移除,而controller会创建一个新的pod来取代移除的pod。这是一个很有用的方式,帮你在一个隔离的环境中调试之前的“活着的”pod。容器镜像默认容器镜像拉取策略是IfNotPresent,当本地已存在该镜像的时候Kubelet不会再从镜像仓库拉取。如果你希望总是从镜像仓库中拉取镜像的话,在yaml文件中指定镜像拉取策略为Always(imagePullPolicy:Always)或者指定镜像的tag为:latest。如果你没有将镜像标签指定为:latest,例如指定为myimage:v1,当该标签的镜像进行了更新,kubelet也不会拉取该镜像。你可以在每次镜像更新后都生成一个新的tag(例如myimage:v2),在配置文件中明确指定该版本。可以使用镜像的摘要(Digest)来保证容器总是使用同一版本的镜像。注意:在生产环境下部署容器应该尽量避免使用:latest标签,因为这样很难追溯到底运行的是哪个版本以及发生故障时该如何回滚。使用kubectl最佳配置383尽量使用kubectlcreate-f<directory>或kubectlapply-f<directory。kubeclt会自动查找该目录下的所有后缀名为.yaml、.yml和.json文件并将它们传递给create或apply命令。kubectlget或kubectldelete时使用标签选择器可以批量操作一组对象。使用kubectlrun和expose命令快速创建只有单个容器的Deployment和Service,如参考文档ConfigurationBestPracticeskubectlrunhello-world--replicas=2--labels="run=load-balancer-example"--image=gcr.io/google-samples/node-hello:1.0--port=8080kubectlexposedeploymenthello-world--type=NodePort--name=example-servicekubectlgetpods--selector="run=load-balancer-example"--output=wide版本支持384Kubernetes版本支持策略版本支持Kubernetes版本的格式为x.y.z,其中x是主版本号,y是次版本号,而z则是修订版本。版本的格式遵循SemanticVersioning,即主版本号:当你做了不兼容的API修改,次版本号:当你做了向下兼容的功能性新增,修订号:当你做了向下兼容的问题修正。Kubernetes项目只维护最新的三个次版本,每个版本都会放到不同的发布分支中维护。上游版本发现的严重缺陷以及安全修复等都会移植到这些发布分支中,这些分支由patchreleasemanager来维护。次版本一般是每三个月发布一次,所以每个发布分支一般会维护9个月。不同组件的版本支持情况在Kubernetes中,不同组件的版本并不 要求 对教师党员的评价套管和固井爆破片与爆破装置仓库管理基本要求三甲医院都需要复审吗 完全一致,但不同版本的组件混合部署时也有一些最基本的限制。kube-apiserver在highly-availabile(HA)clusters集群中,kube-apiserver的版本差不能超过一个次版本号。比如最新的kube-apiserver版本号为1.13时,其他kube-apiserver的版本只能是1.13或者1.12。kubeletKubelet的版本不能高于kube-apiserver的版本,并且跟kube-apiserver相比,最多可以相差两个次版本号。比如:kube-apiserver的版本是1.13相应的kubelet的版本为1.13,1.12,and1.11再比如,一个高可用的集群中:kube-apiserver版本号为1.13and1.12相应的kubelet版本为1.12,and1.11(1.13不支持,因为它比kube-apiserver的1.12高)版本支持385kube-controller-manager,kube-scheduler,andcloud-controller-manager,,和cloud-controller-manager不能高于kube-apiserver的版本。通常它们的版本应该跟kube-apiserver一致,不过也支持相差一个次版本号同时运行。比如:kube-apiserver版本为1.13相应的kube-controller-manager,,和cloud-controller-manager版本为1.13and1.12再比如,一个高可用的集群中:kube-apiserver版本为1.13and1.12相应的kube-controller-manager,,和cloud-controller-manager版本为1.12(1.13不支持,因为它比apiserver的1.12高)kubectlkubectl可以跟kube-apiserver相差一个次版本号,比如:kube-apiserver版本为1.13相应的kubectl版本为1.14,1.13和1.12版本升级顺序当从1.n版本升级到1.(n+1)版本时,必须要遵循以下的升级顺序。kube-apiserver前提条件:单节点集群中,kube-apiserver的版本为1.n;HA集群中,kube-apiserver版本为1.n或者1.(n+1)。kube-controller-manager,manager的版本都是1.n。kubelet的版本是1.n或者1.(n-1)以及cloud-controller-已注册的注入控制webhook可以处理新版本的请求,比如ValidatingWebhookConfiguration和MutatingWebhookConfiguration已经更新为支持1.(n+1)版本中新引入的特性。接下来就可以把kube-apiserver升级到1.(n+1)了,不过要注意版本升级时不可跳过次版本支持386版本号。版本支持387kube-controller-manager,kube-scheduler,andcloud-controller-manager前提条件:kube-apiserver已经升级到1.(n+1)版本。接下来就可以把,和cloud-controller-manager都升级到1.(n+1)版本了。kubelet前提条件:kube-apiserver已经升级到1.(n+1)版本。升级过程中需要保证kubelet跟kube-apiserver最多只相差一个次版本号。接下来就可以把kubelet升级到1.(n+1)了。参考文档KubernetesVersionandVersionSkewSupportPolicy-Kubernetes集群部署387集群部署Kubernetes集群架构etcd集群从https://discovery.etcd.io/new?size=3获取token后,把etcd.yaml放到每台机器的/etc/kubernetes/manifests/etcd.yaml,并替换掉,一个etcd集群。和${NODE_IP},即可以由kubelet来启动对于运行在kubelet外部的etcd,可以参考etcdclusteringguide来手动配置集群模式。kube-apiserver集群部署388把kube-apiserver.yaml放到每台Master节点的/etc/kubernetes/manifests/,并把相关的配置放到/srv/kubernetes/,即可由kubelet自动创建并启动apiserver:basic_auth.csv-basicauthuserandpasswordca.crt-CertificateAuthoritycertknown_tokens.csv-tokensthatentities(e.g.thekubelet)canusetotalktotheapiserverkubecfg.crt-Clientcertificate,publickeykubecfg.key-Clientcertificate,privatekeyserver.cert-Servercertificate,publickeyserver.key-Servercertificate,privatekeyapiserver启动后,还需要为它们做负载均衡,可以使用云平台的弹性负载均衡服务或者使用haproxy/lvs/nginx等为master节点配置负载均衡。另外,还可以借助Keepalived、OSPF、Pacemaker等来保证负载均衡节点的高可用。注意:大规模集群注意增加--max-requests-inflight(默认400)使用nginx时注意增加proxy_timeout:10mcontrollermanager和schedulercontrollermanager和scheduler需要保证任何时刻都只有一个实例运行,需要一个选主的过程,所以在启动时要设置--leader-elect=true,比如把kube-scheduler.yaml和kube-controller-manager放到每台Master节点的/etc/kubernetes/manifests/,并把相关的配置放到/srv/kubernetes/,即可由kubelet自动创建并启动kube-scheduler和kube-controller-manager。kube-dnskube-scheduler--master=127.0.0.1:8080--v=2--leader-elect=truekube-controller-manager--master=127.0.0.1:8080--cluster-cidr=10.245.0.0/16--allocate-node-cidrs=true--service-account-private-key-file=/srv/kubernetes/server.key--v=2--leader-elect=true集群部署389kube-dns可以通过Deployment的方式来部署,默认kubeadm会自动创建。但在大规模集群的时候,需要放宽资源限制,比如另外,也需要给dnsmasq增加资源,比如增加缓存大小到10000,增加并发处理数量--dns-forward-max=1000等。数据持久化除了上面提到的这些配置,持久化存储也是高可用Kubernetes集群所必须的。对于公有云上部署的集群,可以考虑使用云平台提供的持久化存储,比如awsebs或者gcepersistentdisk对于物理机部署的集群,可以考虑使用iSCSI、NFS、Gluster或者Ceph等网络存储,也可以使用RAIDAzure在Azure上可以使用AKS或者acs-engine来部署Kubernetes集群,具体部署方法参考这里。GCE在GCE上可以利用cluster脚本方便的部署集群:dns_replicas:6dns_cpu_limit:100mdns_memory_limit:512Midns_cpu_requests70mdns_memory_requests:70Mi#gce,aws,gke,azure-legacy,vsphere,openstack-heat,rackspace,libvirt-coreosexportKUBERNETES_PROVIDER=gcecurl-sShttps://get.k8s.io|bashcdkubernetescluster/kube-up.sh集群部署390AWS在aws上建议使用kops来部署。物理机或虚拟机在Linux物理机或虚拟机中,建议使用kubeadm或kubespray来部署Kubernetes集群。kubeadm391kubeadmKubernetes一键部署脚本(使用docker运行时)以下是详细的kubeadm部署集群步骤。初始化系统所有机器都需要初始化docker和kubelet。ubuntu#onmasterexportUSE_MIRROR=true#国内用户必须使用MIRRORgitclonehttps://github.com/feiskyer/opscdopskubernetes/install-kubernetes.sh#记住控制台输出的TOEKN和MASTER地址,在其他Node安装时会用到#onallnodesgitclonehttps://github.com/feiskyer/opscdops#SetuptokenandCIDRfirst.#replacethiswithyours.exportTOKEN="xxxx"exportMASTER_IP="x.x.x.x"exportCONTAINER_CIDR="10.244.2.0/24"#Setupandjointhenewnode../kubernetes/add-node.shkubeadm392#forubuntu16.04apt-getupdateapt-getinstall-yapt-transport-httpsca-certificatescurlsoftware-properties-commoncurl-fsSLhttps://download.docker.com/linux/ubuntu/gpg|apt-keyadd-add-apt-repository"debhttps://download.docker.com/linux/$(./etc/os-release;echo"$ID")$(lsb_release-cs)stable"apt-getupdate&&apt-getinstall-ydocker-ce=$(apt-cachemadisondocker-ce|grep17.03|head-1|awk'{print$3}')apt-getupdate&&apt-getinstall-yapt-transport-httpscurlcurlhttps://mirrors.aliyun.com/kubernetes/apt/doc/apt-key.gpg|apt-keyadd-cat<<EOF>/etc/apt/sources.list.d/kubernetes.listdebhttps://mirrors.aliyun.com/kubernetes/apt/kubernetes-xenialmainEOFapt-getupdateapt-getinstall-ykubeletkubeadmkubectlCentOSkubeadm393安装master如果需要修改kubernetes服务的配置选项,则需要创建一个kubeadm配置文件,其格式为yuminstall-ydockersystemctlenabledocker&&systemctlstartdockercat<<EOF>/etc/yum.repos.d/kubernetes.repo[kubernetes]name=Kubernetesbaseurl=https://mirrors.aliyun.com/kubernetes/yum/repos/kubernetes-el7-x86_64/enabled=1gpgcheck=1repo_gpgcheck=1gpgkey=https://mirrors.aliyun.com/kubernetes/yum/doc/yum-key.gpghttps://mirrors.aliyun.com/kubernetes/yum/doc/rpm-package-key.gpgEOFsetenforce0sed-i's/SELINUX=enforcing/SELINUX=disabled/g'/etc/selinux/configyuminstall-ykubeletkubeadmkubectlsystemctlenablekubelet&&systemctlstartkubelet#--api-advertise-addresses<ip-address>#forflannel,setup--pod-network-cidr10.244.0.0/16kubeadminit--pod-network-cidr10.244.0.0/16--kubernetes-versionlatest#enableschedulepodsonthemasterexportKUBECONFIG=/etc/kubernetes/admin.confkubectltaintnodes--allnode-role.kubernetes.io/master:NoSchedule-apiVersion:kubeadm.k8s.io/v1alpha3kind:InitConfigurationbootstrapTokens:-token:"9a08jv.c0izixklcxtmnze7"description:"kubeadmbootstraptoken"kubeadm394ttl:"24h"-token:"783bde.3f89s0fje9f38fhf"description:"anotherbootstraptoken"usages:-signinggroups:-system:anonymousnodeRegistration:name:"ec2-10-100-0-1"criSocket:"/var/run/dockershim.sock"taints:-key:"kubeadmNode"value:"master"effect:"NoSchedule"kubeletExtraArgs:cgroupDriver:"cgroupfs"apiEndpoint:advertiseAddress:"10.100.0.1"bindPort:6443---apiVersion:kubeadm.k8s.io/v1alpha3kind:ClusterConfigurationetcd:#oneoflocalorexternallocal:image:"k8s.gcr.io/etcd-amd64:3.2.18"dataDir:"/var/lib/etcd"extraArgs:listen-client-urls:"http://10.100.0.1:2379"serverCertSANs:-"ec2-10-100-0-1.compute-1.amazonaws.com"peerCertSANs:-"10.100.0.1"external:endpoints:-"10.100.0.1:2379"-"10.100.0.2:2379"caFile:"/etcd/kubernetes/pki/etcd/etcd-ca.crt"certFile:"/etcd/kubernetes/pki/etcd/etcd.crt"certKey:"/etcd/kubernetes/pki/etcd/etcd.key"networking:serviceSubnet:"10.96.0.0/12"kubeadm395podSubnet:"10.100.0.1/24"dnsDomain:"cluster.local"kubernetesVersion:"v1.12.0"controlPlaneEndpoint:"10.100.0.1:6443"apiServerExtraArgs:authorization-mode:"Node,RBAC"controlManagerExtraArgs:node-cidr-mask-size:20schedulerExtraArgs:address:"10.100.0.1"apiServerExtraVolumes:-name:"some-volume"hostPath:"/etc/some-path"mountPath:"/etc/some-pod-path"writable:truepathType:FilecontrollerManagerExtraVolumes:-name:"some-volume"hostPath:"/etc/some-path"mountPath:"/etc/some-pod-path"writable:truepathType:FileschedulerExtraVolumes:-name:"some-volume"hostPath:"/etc/some-path"mountPath:"/etc/some-pod-path"writable:truepathType:FileapiServerCertSANs:-"10.100.1.1"-"ec2-10-100-0-1.compute-1.amazonaws.com"certificatesDir:"/etc/kubernetes/pki"imageRe
本文档为【Kubernetes部署指南】,请使用软件OFFICE或WPS软件打开。作品中的文字与图均可以修改和编辑, 图片更改请在作品中右键图片并更换,文字修改请直接点击文字进行修改,也可以新增和删除文档中的内容。
该文档来自用户分享,如有侵权行为请发邮件ishare@vip.sina.com联系网站客服,我们会及时删除。
[版权声明] 本站所有资料为用户分享产生,若发现您的权利被侵害,请联系客服邮件isharekefu@iask.cn,我们尽快处理。
本作品所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用。
网站提供的党政主题相关内容(国旗、国徽、党徽..)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。
下载需要: 免费 已有0 人下载
最新资料
资料动态
专题动态
个人认证用户
IT人
暂无简介~
格式:pdf
大小:3MB
软件:PDF阅读器
页数:198
分类:互联网
上传时间:2020-02-01
浏览量:19