我几天前创建了一个Kubernetes集群,其中包含1个Master和1个worker Node。现在我想向集群添加另一个节点,但是主服务器上原始“kubeadm init”打印的令牌已过期(默认情况下,24小时后)。
“kubeadm join”命令有一个“--discovery-file”。它需要一个配置文件,我尝试了我在这里找到的格式:
https://github.com/kubernetes/kubeadm/blob/master/docs/design/design_v1.8.md
function wc_add_custom_order_column( $columns ) {
$new_columns = array();
foreach ( $columns as $column_name => $column_info ) {
$new_columns[ $column_name ] = $column_info;
if ( 'order_actions' === $column_name ) {
$new_columns['custom_column'] = __( 'Custom Column', 'my-textdomain' );
}
}
return $new_columns;
}
add_filter( 'manage_edit-shop_order_columns', 'wc_add_custom_order_column', 20 );
function wc_add_custom_order_column_content( $column ) {
global $post;
if ( 'custom_column' === $column ) {
$data = get_post_meta( $post->ID );
if( isset( $data['custom_column'] ) )
echo $data['custom_column'];
}
}
add_action( 'manage_shop_order_posts_custom_column', 'wc_add_custom_order_column_content' );
我从工作的kubectl配置文件中复制了相应的数据,并创建了一个本地文件“a.config”。
但是,当我尝试命令“sudo kubeadm join --discovery-file a.conf”时,它失败并显示以下错误消息:
apiVersion: v1
clusters:
- cluster:
certificate-authority-data: <really long certificate data>
server: https://10.138.0.2:6443
name: ""
contexts: []
current-context: ""
kind: Config
preferences: {}
users: []
我在这里缺少什么?
在我的情况下工作的程序是什么?我不想拆掉群集再重新加入群集。
答案 0 :(得分:13)
使用kubeadm token create
创建新的引导令牌,请参阅kubeadm: Managing Tokens。
# login to master node
# create a new bootstrap token
$ kubeadm token create
abcdef.1234567890abcdef
# get root ca cert fingerprint
$ openssl x509 -pubkey -in /etc/kubernetes/pki/ca.crt | openssl rsa -pubin -outform der 2>/dev/null | openssl dgst -sha256 -hex | sed 's/^.* //'
e18105ef24bacebb23d694dad491e8ef1c2ea9ade944e784b1f03a15a0d5ecea
# login to the new worker node
# join to cluster
$ kubeadm join --token abcdef.1234567890abcdef --discovery-token-ca-cert-hash sha256:e18105ef24bacebb23d694dad491e8ef1c2ea9ade944e784b1f03a15a0d5ecea 1.2.3.4:6443
注意:Kubernetes 1.8及以上版本中首选--discovery-token-ca-cert-hash
。
--discovery-file
提供了一种建立根目录的带外方式 主节点和自举节点之间的信任。如果要构建自动配置,请考虑使用此模式 使用kubeadm。
发现文件未提供有效令牌,因此我们仍需要kubeadm token create
来创建新令牌。
kubeadm join --token abcdef.1234567890abcdef --discovery-file a.conf
答案 1 :(得分:5)
我知道将新节点加入现有集群的最简单方法是
kubeadm token create --print-join-command
这将给出这样的输出。
kubeadm join 192.168.10.15:6443 --token l946pz.6fv0XXXXX8zry --discovery-token-ca-cert-hash sha256:e1e6XXXXXXXXXXXX9ff2aa46bf003419e8b508686af8597XXXXXXXXXXXXXXXXXXX
答案 2 :(得分:0)
感谢@silverfox的回答,但是手动键入这些命令仍然有些痛苦,因此我构建了以下命令来帮助我快速完成此操作。
此命令将创建一个令牌并生成加入命令:
echo sudo kubeadm join $(kubeadm config view | grep ^controlPlaneEndpoint | awk '{print $2}') --token $(kubeadm token create) --discovery-token-ca-cert-hash sha256:$(openssl x509 -pubkey -in /etc/kubernetes/pki/ca.crt | openssl rsa -pubin -outform der 2>/dev/null | openssl dgst -sha256 -hex | sed 's/^.* //')
答案 3 :(得分:0)
正如上面 Mansur's answer 中所建议的,能够运行以下命令来设置集群。
# command ran from master node:
kubeadm token create --print-join-command
# sample output
kubeadm join <IP_OF_MASTER_NODE>:6443 --token iic9jq.<redacted> --discovery-token-ca-cert-hash <redacted>
使用 sudo- 在另一个节点中运行上面的输出
sudo kubeadm join <IP_OF_MASTER_NODE>:6443 --token iic9jq.<redacted> --discovery-token-ca-cert-hash <redacted>
当我在没有 sudo
的情况下运行上述命令时,出现错误-
[preflight] Running pre-flight checks
error execution phase preflight: [preflight] Some fatal errors occurred:
[ERROR IsPrivilegedUser]: user is not running as root
[preflight] If you know what you are doing, you can make a check non-fatal with `--ignore-preflight-errors=...`
当我使用 sudo 运行时,收到此成功消息:
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.
从主节点运行 kubectl get nodes
并看到新节点已加入集群。
在运行上述命令之前,集群状态如下-
# ran on master node
$ kubectl get nodes
NAME STATUS ROLES AGE VERSION
ip-[REDACTED] NotReady master 20m v1.14.5
运行上述命令后,集群状态如下:
# ran on master node
kubectl get nodes
NAME STATUS ROLES AGE VERSION
ip-[REDACTED] NotReady master 20m v1.14.5
ip-[REDACTED] NotReady <none> 14s v1.14.5