博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
使用kubeadm创建单个主节点集群
阅读量:6802 次
发布时间:2019-06-26

本文共 5292 字,大约阅读时间需要 17 分钟。

hot3.png

kubeadm帮助您启动符合最佳实践的最小可行的Kubernetes集群。 使用kubeadm,您的集群应该通过。 Kubeadm还支持其他集群生命周期功能,比如升级、降级和管理。

因为您可以在各种类型的机器(如笔记本电脑、服务器、树莓派等)上安装kubeadm,所以它非常适合与Terraform或Ansible等供应系统集成。

kubeadm的简单性意味着它可以服务于广泛的用例:

  • 新用户可以从kubeadm开始第一次尝试Kubernetes。
  • 熟悉Kubernetes的用户可以使用kubeadm启动集群并测试他们的应用程序。
  • 较大的项目可以将kubeadm作为构建块包含在更复杂的系统中,该系统还可以包含其他安装工具。

Kubeadm被设计成新用户开始尝试Kubernetes的一种简单方法,这可能是第一次,一种让现有用户可以轻松地在集群上测试他们的应用程序并将其缝合在一起的方法,同时也是其他生态系统和/或更大范围的安装工具中的一个构建块。

kubeadm成熟度

Area Maturity Level
Command line UX GA
Implementation GA
Config file API beta
CoreDNS GA
kubeadm alpha subcommands alpha
High availability alpha
DynamicKubeletConfig alpha
Self-hosting alpha

kubeadm的总体特征状态为GA。 一些子特性,如配置文件API,仍在积极开发中。 随着工具的发展,创建集群的实现可能略有变化,但总体实现应该相当稳定。 根据定义,kubeadm alpha下的任何命令都在alpha级别上受支持。

安装预备工作

  • 一台或多台运行 deb/rpm-compatible 操作系统的机器,例如Ubuntu或CentOS
  • 每台机器2 GB或更多内存
  • master主机2个CPU以上
  • 集群中所有机器之间的全网络连接(公共网络或私有网络都是好的)

安装kubeadm

kubeadmin安装查看

初始化master

 master是控制面板组件运行的机器,包括etcd(集群数据库)和API服务器(kubectl CLI与之通信)。

  1. 选择pod网络附加组件,并验证是否需要将任何参数传递给kubeadm初始化。 根据您选择的第三方供应商,您可能需要将 --pod-network-cidr 设置为特定于供应商的值。 查看。
  2. (可选)除非另外有指定,kubeadm使用与默认网关关联的网络接口来广告master的IP。
  3.  要使用不同的网络接口, 执行 kubeadm init 时要指定 --apiserver-advertise-address=<ip-address> 参数。 要使用IPv6寻址部署IPv6 Kubernetes集群,必须指定IPv6地址,例如 --apiserver-advertise-address=fd00::101
  4. (可选)在 kubeadm init 之前运行 kubeadm config images pull ,以验证与 gcr.io registries 的连接。

初始化命令:

kubeadm init 

更多信息

有关kubeadm init参数的更多信息,请查看。

获取配置选项的完整列表, 请参

要自定义控制面板组件,包括可选的IPv6分配到控制面板组件和etcd服务器的活动探针,为每个组件提供额外的参数,如中所述。

要再次运行kubeadm init,必须首先。

如果您将具有不同体系结构的节点加入到集群中,请为节点上的kube-proxykube-dns创建单独的Deployment或DaemonSet。 这是因为这些组件的Docker镜像目前不支持多架构。

kubeadm init 首先运行一系列预检查,以确保机器已经准备好运行Kubernetes。 这些预检查抛出警告并在错误时退出。 kubeadm init 然后下载并安装集群控制平面组件。 这可能需要几分钟。输出应该是这样的:

[init] Using Kubernetes version: vX.Y.Z[preflight] Running pre-flight checks[kubeadm] WARNING: starting in 1.8, tokens expire after 24 hours by default (if you require a non-expiring token use --token-ttl 0)[certificates] Generated ca certificate and key.[certificates] Generated apiserver certificate and key.[certificates] apiserver serving cert is signed for DNS names [kubeadm-master kubernetes kubernetes.default kubernetes.default.svc kubernetes.default.svc.cluster.local] and IPs [10.96.0.1 10.138.0.4][certificates] Generated apiserver-kubelet-client certificate and key.[certificates] Generated sa key and public key.[certificates] Generated front-proxy-ca certificate and key.[certificates] Generated front-proxy-client certificate and key.[certificates] Valid certificates and keys now exist in "/etc/kubernetes/pki"[kubeconfig] Wrote KubeConfig file to disk: "admin.conf"[kubeconfig] Wrote KubeConfig file to disk: "kubelet.conf"[kubeconfig] Wrote KubeConfig file to disk: "controller-manager.conf"[kubeconfig] Wrote KubeConfig file to disk: "scheduler.conf"[controlplane] Wrote Static Pod manifest for component kube-apiserver to "/etc/kubernetes/manifests/kube-apiserver.yaml"[controlplane] Wrote Static Pod manifest for component kube-controller-manager to "/etc/kubernetes/manifests/kube-controller-manager.yaml"[controlplane] Wrote Static Pod manifest for component kube-scheduler to "/etc/kubernetes/manifests/kube-scheduler.yaml"[etcd] Wrote Static Pod manifest for a local etcd instance to "/etc/kubernetes/manifests/etcd.yaml"[init] Waiting for the kubelet to boot up the control plane as Static Pods from directory "/etc/kubernetes/manifests"[init] This often takes around a minute; or longer if the control plane images have to be pulled.[apiclient] All control plane components are healthy after 39.511972 seconds[uploadconfig] Storing the configuration used in ConfigMap "kubeadm-config" in the "kube-system" Namespace[markmaster] Will mark node master as master by adding a label and a taint[markmaster] Master master tainted and labelled with key/value: node-role.kubernetes.io/master=""[bootstraptoken] Using token: 
[bootstraptoken] Configured RBAC rules to allow Node Bootstrap tokens to post CSRs in order for nodes to get long term certificate credentials[bootstraptoken] Configured RBAC rules to allow the csrapprover controller automatically approve CSRs from a Node Bootstrap Token[bootstraptoken] Creating the "cluster-info" ConfigMap in the "kube-public" namespace[addons] Applied essential addon: CoreDNS[addons] Applied essential addon: kube-proxyYour Kubernetes master has initialized successfully!To start using your cluster, you need to run (as a regular user): mkdir -p $HOME/.kube sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config sudo chown $(id -u):$(id -g) $HOME/.kube/configYou should now deploy a pod network to the cluster.Run "kubectl apply -f [podnetwork].yaml" with one of the addon options listed at: http://kubernetes.io/docs/admin/addons/You can now join any number of machines by running the following on each nodeas root: kubeadm join --token
:
--discovery-token-ca-cert-hash sha256:

要使kubectl为非root用户环境下工作,请运行这些命令:

mkdir -p $HOME/.kubesudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/configsudo chown $(id -u):$(id -g) $HOME/.kube/config

如果是root用户,则可以运行:

export KUBECONFIG=/etc/kubernetes/admin.conf

token用于主节点和连接节点之间的相互身份验证。 这里包含的token是机密的。确保它的安全性,因为任何具有此token的人都可以将经过身份验证的节点添加到集群中。

转载于:https://my.oschina.net/jennerlo/blog/3007572

你可能感兴趣的文章
什么!建设数据中心还得看风水?
查看>>
如何通过SSH隧道实现 Windows Pass the Ticket攻击?
查看>>
破解“动物农场”高级间谍平台Dino
查看>>
隐私安全新动向:Facebook采用OpenPGP加密技术
查看>>
食品巨头康尼格拉:数据分析如何影响企业成本?
查看>>
迅雷发布“星域CDN” 做条颠覆市场的鲶鱼
查看>>
多租户特性一定是SaaS软件的必要特征吗?
查看>>
如何在Ubuntu中安装语音聊天工具Discord
查看>>
数据可视化,我应从何开启?
查看>>
黑客入侵凯特王妃妹妹账号盗数千照片 欲卖给媒体
查看>>
【人生苦短,我用Python】Python免费精品课连载(1)——Python入门
查看>>
IBM向认知转型 选择混合云路径
查看>>
英国《数字经济法案》
查看>>
必须了解的五个光伏发电财务和税收政策
查看>>
思默特获评“用户满意服务奖”荣誉
查看>>
CYQ.DBImport 数据库反向工程及批量导数据库工具 V1.0 发布
查看>>
AT&T开发出400 GbE试验的SDN控制器
查看>>
聊天机器人并不适合每一项业务和每个人
查看>>
拼写错误影响黑客盗窃数亿美元
查看>>
真正的持续集成:分布式代码仓库和依赖
查看>>