
กรณีที่เคยติดตั้ง Kubernetes cluster โดยใช้ Ansible (role lablabs.rke2) แล้วต้องการเพิ่มโนดในภายหลัง หรือแทนที่โนดที่เคยลบไปแล้ว สามารถทำได้โดยมีขั้นตอนดังนี้
- (เฉพาะกรณีการแทนที่โนดที่เคยลบไปแล้ว) ลบระเบียนโนดนั้นออกจากไฟล์ 
known_hostsของสถานีงาน - คัดลอก public key ไปไว้ในไฟล์ 
authorized_keysของโนดใหม่ - (เฉพาะกรณีเพิ่มโนดใหม่) เพิ่มข้อมูลของโนดใหม่ในไฟล์ 
hosts - เรียกใช้คำสั่ง 
ansible-playbookอีกครั้ง 
ลบระเบียนโนดเก่าออกจากไฟล์ known_hosts 
กรณีการแทนที่โนดที่เคยลบไปแล้ว ให้ลบระเบียนโนดนั้นออกจากไฟล์ known_hosts ของสถานีงานก่อน โดยใช้คำสั่ง ssh-keygen -R <ชื่อโฮสต์ของโนดเก่า>
ssh-keygen -R master01.k8s.example.com
คัดลอก public key ไปไว้ในไฟล์ authorized_keys ของโนดใหม่
สามารถคัดลอก public key ไปไว้ในไฟล์ authorized_keys ของโนดใหม่ได้โดยใช้คำสั่ง ssh-copy-id <ชื่อผู้ใช้>@<เครื่องแม่ข่าย> ตัวอย่างเช่น
ssh-copy-id somsak@master01.k8s.example.com
เพิ่มข้อมูลของโนดใหม่ในไฟล์ hosts
หากมีโนดใหม่ที่ต้องการเพิ่ม ให้เพิ่มข้อมูลของโนดใหม่ ตามตัวอย่างดังต่อไปนี้
k8s_cluster:
  children:
    masters:
      hosts:
        master01.k8s.example.com:
          ansible_user: root
          rke2_type: server
        master02.k8s.example.com:
          ansible_user: root
          rke2_type: server
        master03.k8s.example.com:
          ansible_user: root
          rke2_type: server
    workers:
      hosts:
        worker01.k8s.example.com:
          ansible_user: root
          rke2_type: agent
จากตัวอย่างจะเป็นการเพิ่มโนด worker01.k8s.example.com ที่ทำหน้าที่เป็น worker (ใน RKE 2 จะใช้คำว่า agent)
เรียกใช้คำสั่ง ansible-playbook อีกครั้ง
หากเป็น Kubernetes cluster ที่ติดตั้งโดยใช้ Ansible (role lablabs.rke2) สามารถเรียกใช้ Ansible playbook เดิมเพื่อเพิ่มโนดได้
จัดเตรียมเครื่องใหม่ (ติดตั้งโปรแกรม tar, ปิด swap, และปิด firewalld) โดยใช้คำสั่ง:
ansible-playbook -i hosts prepare.yaml
ติดตั้ง RKE 2 บนโนดใหม่ และเพิ่มโนดใหม่ในคลัสเตอร์ โดยใช้คำสั่ง:
ansible-playbook -i hosts deploy.yaml
และรอให้ชุดคำสั่งหยุดทำงาน
เมื่อชุดคำสั่งหยุดทำงานแล้ว ตรวจสอบรายการโนดทั้งหมดโดยใช้คำสั่ง kubectl get node ตัวอย่างเช่น
$ kubectl get node
NAME                        STATUS   ROLES                       AGE     VERSION
master01.k8s.example.com    Ready    control-plane,etcd,master   19d     v1.25.3+rke2r1
master02.k8s.example.com    Ready    control-plane,etcd,master   19d     v1.25.3+rke2r1
master03.k8s.example.com    Ready    control-plane,etcd,master   19d     v1.25.3+rke2r1
worker01.k8s.example.com    Ready    <none>                      7m21s   v1.25.3+rke2r1
จากตัวอย่าง จะเห็นได้ว่ามีโนดเพิ่มขึ้นมาใหม่ คือ worker01.k8s.example.com

Pingback: การติดตั้ง Rook Ceph บน Kubernetes Cluster - ศูนย์เทคโนโลยีสารสนเทศและการสื่อสาร