तो ConvertFrom-Json का उपयोग करना कोई ब्रेनर नहीं है:

C:\> (kubectl.exe get nodes -o json | ConvertFrom-Json).items.metadata.name
aks-nodepool1-30294001-vmss000000
aks-nodepool1-30294001-vmss000001
aks-nodepool1-30294001-vmss000003
aks-nodepool2-30294001-vmss000000
aks-nodepool2-30294001-vmss000001
aks-nodepool2-30294001-vmss000002
C:\>

name आउटपुट स्वरूप भी है, लेकिन यह नोड नामों को node/ के साथ जोड़ता है:

C:\> kubectl.exe get nodes -o name
node/aks-nodepool1-30294001-vmss000000
node/aks-nodepool1-30294001-vmss000001
node/aks-nodepool1-30294001-vmss000003
node/aks-nodepool2-30294001-vmss000000
node/aks-nodepool2-30294001-vmss000001
node/aks-nodepool2-30294001-vmss000002
C:\>

वह करीब है, लेकिन फिर भी ऐसा नहीं है। हो सकता है कि कुबेक्टल को संसाधन प्रकार के साथ नामों को उपसर्ग न करने का निर्देश देने का कोई तरीका हो? फिर भी कोई भी उपसर्ग को आसानी से हटा सकता है:

C:\> (kubectl.exe get nodes -o name) -replace '^node/',''
aks-nodepool1-30294001-vmss000000
aks-nodepool1-30294001-vmss000001
aks-nodepool1-30294001-vmss000003
aks-nodepool2-30294001-vmss000000
aks-nodepool2-30294001-vmss000001
aks-nodepool2-30294001-vmss000002
C:\>

हालांकि, यह प्रश्न jsonpath के बारे में है। अभी मुझे यही मिलता है:

C:\> kubectl.exe get nodes -l agentpool=nodepool2 -o jsonpath='{.items[*].metadata.name}'
aks-nodepool2-30294001-vmss000000 aks-nodepool2-30294001-vmss000001 aks-nodepool2-30294001-vmss000002
C:\>

मुझे उनकी प्रत्येक पंक्ति पर एक की आवश्यकता है। निश्चित रूप से, मैं अंतरिक्ष से विभाजित कर सकता हूं:

C:\> (kubectl.exe get nodes -l agentpool=nodepool2 -o jsonpath='{.items[*].metadata.name}') -split '\s+'
aks-nodepool2-30294001-vmss000000
aks-nodepool2-30294001-vmss000001
aks-nodepool2-30294001-vmss000002
C:\>

लेकिन मुझे आश्चर्य है कि क्या यह किसी बाहरी उपकरण के बिना कुबेक्टल के कुछ झंडे या जसनपथ की विशेषताओं का उपयोग करके प्राप्त किया जा सकता है।

0
mark 18 सितंबर 2020, 22:39

1 उत्तर

सबसे बढ़िया उत्तर

यह आपके लिए jsonpath के बिना भी काम करेगा

kubectl.exe get nodes -l agentpool=nodepool2 -o custom-columns=NAME:.metadata.name --no-headers

लेबल के बिना मेरे उदाहरण

$ kubectl get nodes -o custom-columns=NAME:.metadata.name --no-headers
gke-cluster-1-default-pool-82008fd9-8x81
gke-cluster-1-default-pool-82008fd9-qkp7
gke-cluster-1-default-pool-82008fd9-tlc7


$ kubectl get nodes -o jsonpath='{.items[*].metadata.name}'
gke-cluster-1-default-pool-82008fd9-8x81 gke-cluster-1-default-pool-82008fd9-qkp7 gke-cluster-1-default-pool-82008fd9-tlc7

संपादित करें1: जैसा कि टिप्पणियों में चर्चा की गई थी, एक और उत्तर पोस्ट करते हुए, इस बार jsonpath का उपयोग करके

kubectl get nodes -l agentpool=nodepool2 -o "jsonpath={range $.items[*].metadata.name}{}{'\n'}{end}"
1
Vitalii 21 सितंबर 2020, 16:06