#kubernetes #deployment #kubectl #podspec
#kubernetes #развертывание #kubectl #podspec
Вопрос:
У меня есть файл развертывания yaml, который выглядит следующим образом:
apiVersion: apps/v1
kind: Deployment
metadata:
name: hello-kubernetes
spec:
replicas: 1
selector:
matchLabels:
app: hello-kubernetes
template:
metadata:
labels:
app: hello-kubernetes
spec:
setHostnameAsFQDN: true
hostname: hello
subdomain: world
containers:
- name: hello-kubernetes
image: redis
Однако я получаю эту ошибку:
$ kubectl apply -f dep.yaml
error: error validating "dep.yaml": error validating data: ValidationError(Deployment.spec.template.spec): unknown field "setHostnameAsFQDN" in io.k8s.api.core.v1.PodSpec; if you choose to ignore these errors, turn validation off with --validate=false
Моя версия kubectl:
$ kubectl version --client
Client Version: version.Info{Major:"1", Minor:"20", GitVersion:"v1.20.0", GitCommit:"af46c47ce925f4c4ad5cc8d1fca46c7b77d13b38", GitTreeState:"clean", BuildDate:"2020-12-08T17:59:43Z", GoVersion:"go1.15.5", Compiler:"gc", Platform:"darwin/amd64"}
После указания --validate=falsee
hostname
и hostname -f
по-прежнему возвращает разные значения.
Я считаю, что я что-то не понял. В документе говорится, что setHostnameAsFQDN
это будет доступно с версии kubernetes v1.20
Комментарии:
1. напишите, какая версия у вашего сервера k8s.
Ответ №1:
Вы показали kubectl
версию. Ваша версия kubernetes также должна быть версии v1.20. Убедитесь, что вы используете kubernetes версии v1.20.
Используется kubectl version
для просмотра как клиентской, так и серверной версии. Где версия клиента относится к kubectl
версии, а версия сервера относится к kubernetes
версии.
Что касается документа k8s v1.20 release note doc:, ранее представленного в 1.19 за воротами функций, SetHostnameAsFQDN
теперь включено по умолчанию. Более подробная информация об этом поведении доступна в документации для DNS для служб и модулей
Комментарии:
1. О, бедный я. Спасибо за разъяснение! Сервер K8S оказался на версии v1.18.9