从零开始创建k8s集群(四)

node加入集群

环境:

1.已经有个control plane节点(前三节步骤)

2.新的ubuntu16.04虚拟机

3.已经安装完容器运行环境和kubeadm, kubelet and kubectl(参照一二步骤)

1.加入集群

运行命令

kubeadm join --token <token> <master-ip>:<master-port> --discovery-token-ca-cert-hash sha256:<hash>

如果不知道token,可以在control plane节点运行

kubeadm token list

获取。

master-ip是control plane节点的ip

master-port默认是6443

默认情况下,token在24小时后过期。如果在当前token过期后将想节点加入群集,则可以通过在control plane节点上运行以下命令来创建新token:

kubeadm token create

如果没有--discovery-token-ca-cert-hash的值,则可以通过在control plane节点上运行以下命令链来获取它:

openssl x509 -pubkey -in /etc/kubernetes/pki/ca.crt | openssl rsa -pubin -outform der 2>/dev/null | \
   openssl dgst -sha256 -hex | sed 's/^.* //'

可能出现问题:

error execution phase preflight: [preflight] Some fatal errors occurred:
	[ERROR Swap]: running with swap on is not supported. Please disable swap

需要关闭虚拟内存

swapoff -a

运行kubeadm join命令成功后会出现

[preflight] Running pre-flight checks
[preflight] Reading configuration from the cluster...
[preflight] FYI: You can look at this config file with 'kubectl -n kube-system get cm kubeadm-config -oyaml'
[kubelet-start] Downloading configuration for the kubelet from the "kubelet-config-1.15" ConfigMap in the kube-system namespace
[kubelet-start] Writing kubelet configuration to file "/var/lib/kubelet/config.yaml"
[kubelet-start] Writing kubelet environment file with flags to file "/var/lib/kubelet/kubeadm-flags.env"
[kubelet-start] Activating the kubelet service
[kubelet-start] Waiting for the kubelet to perform the TLS Bootstrap...

This node has joined the cluster:
* Certificate signing request was sent to apiserver and a response was received.
* The Kubelet was informed of the new secure connection details.

Run 'kubectl get nodes' on the control-plane to see this node join the cluster.

root@ubuntu-node1:~# kubectl get nodes

几秒钟后,在control plane节点上运行kubectl get nodes命令会输出此节点。证明加入成功

2.(可选)让control plane节点以外的机器控制集群

为了在其他机器(例如笔记本电脑)上获取kubectl与群集通信,需要将管理员kubeconfig文件从control plane节点复制到工作机器上,如下所示:

scp root@<master ip>:/etc/kubernetes/admin.conf .
kubectl --kubeconfig ./admin.conf get nodes

注意:

上面的示例假定为root启用了SSH访问。如果不是这种情况,您可以复制admin.conf文件到其他用户有访问权限的目录,使用scp通过其他用户访问。

admin.conf文件为用户提供了群集的root用户权限。应谨慎使用此文件。对于普通用户,建议生成将白名单特权列入其中的唯一凭据。您可以使用kubeadm alpha kubeconfig用户--client-name <CN>命令执行此操作。该命令将打印出一个KubeConfig文件到STDOUT,您应将其保存到文件并分发给您的用户。之后,使用kubectl创建(群集)角色绑定的白名单权限。

3.(可选)将API服务器代理到localhost

如果要从群集外部连接到API服务器,可以使用kubectl proxy

scp root@<master ip>:/etc/kubernetes/admin.conf .
kubectl --kubeconfig ./admin.conf proxy

您现在可以在http:// localhost:8001:api /v1本地访问API服务器

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值