目前,您可以使用 Longhorn UI
操作 Longhorn
。同时,您可以使用 Python
访问 Longhorn API
,如下所示。
- 获取
Longhorn API
端点
与Longhorn
通信的一种方式是通过longhorn-frontend
service。
如果您在安装Longhorn
的同一集群中运行自动化/脚本(automation/scripting
)工具,请连接到端点http://longhorn-frontend.longhorn-system/v1
如果您在本地机器上运行自动化/脚本(automation/scripting
)工具,请使用kubectl port-forward
将longhorn-frontend
service
转发到localhost
:
kubectl port-forward services/longhorn-frontend 8080:http -n longhorn-system
- 并连接到端点
http://localhost:8080/v1
- 使用
Python Client
将 longhorn.py 文件(包含Python client
)导入到以下Python
脚本中,并从API
端点创建一个client
:
https://github.com/longhorn/longhorn-tests/blob/master/manager/integration/tests/longhorn.py
import longhorn # If automation/scripting tool is inside the same cluster in which Longhorn is installed longhorn_url = 'http://longhorn-frontend.longhorn-system/v1' # If forwarding `longhorn-frontend` service to localhost longhorn_url = 'http://localhost:8080/v1' client = longhorn.Client(url=longhorn_url) # Volume operations # List all volumes volumes = client.list_volume() # Get volume by NAME/ID testvol1 = client.by_id_volume(id="testvol1") # Attach TESTVOL1 testvol1 = testvol1.attach(hostId="worker-1") # Detach TESTVOL1 testvol1.detach() # Create a snapshot of TESTVOL1 with NAME snapshot1 = testvol1.snapshotCreate(name="snapshot1") # Create a backup from a snapshot NAME testvol1.snapshotBackup(name=snapshot1.name) # Update the number of replicas of TESTVOL1 testvol1.updateReplicaCount(replicaCount=2) # Find more examples in Longhorn integration tests https://github.com/longhorn/longhorn-tests/tree/master/manager/integration/tests # Node operations # List all nodes nodes = client.list_node() # Get node by NAME/ID node1 = client.by_id_node(id="worker-1") # Disable scheduling for NODE1 client.update(node1, allowScheduling=False) # Enable scheduling for NODE1 client.update(node1, allowScheduling=True) # Find more examples in Longhorn integration tests https://github.com/longhorn/longhorn-tests/tree/master/manager/integration/tests # Setting operations # List all settings settings = client.list_setting() # Get setting by NAME/ID backupTargetsetting = client.by_id_setting(id="backup-target") # Update a setting backupTargetsetting = client.update(backupTargetsetting, value="s3://backupbucket@us-east-1/") # Find more examples in Longhorn integration tests https://github.com/lo