Как создать Pod из REST API
Как я могу создать Pod, используя REST API?
Я проверил документацию Kubernetes API:
https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.10/
Они пишут, что нужно использовать запрос POST:POST /api/v1/namespaces/{namespace}/pods
У меня есть этот YAML простого модуля nginx:
cat > nginx-pod.yaml <<EOF
apiVersion: v1
kind: Pod
metadata:
name: nginx1
spec:
containers:
- name: nginx
image: nginx:1.7.9
ports:
- containerPort: 80
EOF
1 ответ
Нужно перевести файл YAML в файл JSON:
cat > nginx-pod.json <<EOF
{
"apiVersion": "v1",
"kind": "Pod",
"metadata": {
"name": "nginx1"
},
"spec": {
"containers": [
{
"name": "nginx",
"image": "nginx:1.7.9",
"ports": [
{
"containerPort": 80
}
]
}
]
}
}
EOF
Используйте команду curl следующим образом:
curl -k -v -X POST -H "Authorization: Bearer <JWT_TOKEN>" -H "Content-Type: application/json" https://127.0.0.1:6443/api/v1/namespaces/default/pods -d@nginx-pod.json
Конечно, используемый вами токен должен иметь права на создание модуля.
Если у кого-то есть способ сделать это без преобразования в JSON, пожалуйста, поделитесь.
Добавляем ответ по запросу автора.
Мы можем использовать файл Yaml напрямую следующим образом.
curl -k -X POST -H 'Content-Type: application/yaml' \
-H "Authorization: Bearer <JWT_TOKEN>" --data '
apiVersion: v1
kind: Pod
metadata:
name: nginx1
spec:
containers:
- name: nginx
image: nginx:1.7.9
ports:
- containerPort: 80
' "https://127.0.0.1:6443/api/v1/namespaces/default/pods"
Одна странная вещь заключается в том, что если я попытаюсь передать файл YAML в данных curl (@file.yaml), он выдаст ошибку. Кажется, тип содержимого YAML не принимает двоичные файлы, поэтому я использовалcat
передать содержимое. Так что следующее также будет работать.
curl -k -X POST -H 'Content-Type: application/yaml' -H "Authorization: Bearer <JWT_TOKEN>"\
--data "$(cat nginx-pod.yaml)" "https://127.0.0.1:6443/api/v1/namespaces/default/pods"
Ссылка:
- Справочник по Kubernetes API
- Пример развертывания Kubernetes curl - Пример 1 создан на основе этого.