Estou tentando dar ao kubeadm uma configuração quando executo o kubeadm init
Percebo que tenho a configuração exatamente no formato correto, digamos, altere o token
apiVersion: kubeadm.k8s.io/v1alpha1
kind: MasterConfiguration
kubernetesVersion: v1.4.4
secrets:
givenToken: 123456.3123fe2e098799f3
Ele apenas funciona. E na saída do kubeadm
No entanto, se eu usar outro yaml. Basicamente eu quero especificar meus próprios arquivos crt
apiVersion: kubeadm.k8s.io/v1alpha1
kind: MasterConfiguration
kubernetesVersion: v1.4.4
etcd:
caFile : /root/easy-rsa-master/easyrsa3/pki/ca.crt
certFile : /root/easy-rsa-master/easyrsa3/pki/issued/kubernetes-master.crt
keyFile : /root/easy-rsa-master/easyrsa3/pki/private/kubernetes-master.key
Não dá nem saída
parece que o kubeadm não reconheceu a configuração (?)
Existe uma maneira de depurar isso?
Onde está a documentação da sintaxe da configuração do kubeadm?
Há apenas uma configuração mestre de amostra no final de https://kubernetes.io/docs/admin/kubeadm/
Se eu quiser especificar outros valores de linha de comando para servidores api com suporte em https://kubernetes.io/docs/admin/kube-apiserver/ , qual é o nome correspondente?
Por exemplo, se eu quiser especificar o --tls-private-key-file para o servidor api no kubeadm init config.yaml, qual é o nome correspondente? é tlsPrivateKeyFile?
@Lokicity Pelo que entendi, você não pode alterar dinamicamente as configurações no plano de controle enquanto está em execução. Você teria que reiniciar esse componente.
Quanto ao problema do token, se você não passar nenhum token, ele gerará um para você.
sim. Mas o kubeadm init tem um --config que permite ao usuário passar seus dados padrão. Posso passar determinados dados que desejo para os servidores de API? Por exemplo, quero usar meu próprio --tls-private-key-file para o servidor api diferente do padrão gerado pelo kubeadm.
Eu quero ser capaz de fazer isso no kubeadm init time
Um exemplo de configuração foi adicionado aos documentos aqui:
@jistr siga seu link superior, usei o arquivo yaml abaixo
apiVersion: kubeadm.k8s.io/v1alpha1
kind: MasterConfiguration
etcd:
endpoints:
- http://127.0.0.1:2379
como arquivo de configuração, mas não reflete o endpoint etcd (ainda nil).
kubeadm.MasterConfiguration{TypeMeta:v1.TypeMeta{Kind:"", APIVersion:""}, API:kubeadm.API{AdvertiseAddress:"192.168.180.53", BindPort:6443}, Etcd:kubeadm.Etcd{Endpoints:[]string(nil), CAFil
e:"", CertFile:"", KeyFile:""}, Networking:kubeadm.Networking{ServiceSubnet:"10.96.0.0/12", PodSubnet:"", DNSDomain:"cluster.local"}, KubernetesVersion:"v1.6.0", CloudProvider:"", AuthorizationM
ode:"RBAC", Token:"8f6cc5.9fdf609145758fbd", TokenTTL:0, SelfHosted:false, APIServerExtraArgs:map[string]string(nil), ControllerManagerExtraArgs:map[string]string(nil), SchedulerExtraArgs:map[st
ring]string(nil), APIServerCertSANs:[]string(nil), CertificatesDir:"/etc/kubernetes/pki"}
Gostaria de saber onde talvez eu tenha cometido um erro ou é um bug de código?
Olá,
Estamos tendo o mesmo problema que @WIZARD-CXY.
Existe alguma atualização em relação a isso?
Obrigado!
cc @jamiehannaford
Talvez você possa dar uma olhada e ver se a fatia etcd não é analisada corretamente?
@WIZARD-CXY @akarasik Qual versão de kubeadm
e etcd
você está usando? Acabei de tentar com o seguinte e funcionou para mim:
root<strong i="9">@c1</strong>: kubeadm version
kubeadm version: version.Info{Major:"1", Minor:"6", GitVersion:"v1.6.3", GitCommit:"0480917b552be33e2dba47386e51decb1a211df6", GitTreeState:"clean", BuildDate:"2017-05-10T15:38:08Z", GoVersion:"go1.7.5", Compiler:"gc", Platform:"linux/amd64"}
root<strong i="10">@c1</strong>: curl 127.0.0.1:2379/version
{"etcdserver":"3.1.7","etcdcluster":"3.1.0"}
root<strong i="11">@c1</strong>: cat config.yaml
apiVersion: kubeadm.k8s.io/v1alpha1
kind: MasterConfiguration
etcd:
endpoints:
- http://127.0.0.1:2379
root<strong i="12">@c1</strong>: kubectl get pods --all-namespaces
NAMESPACE NAME READY STATUS RESTARTS AGE
kube-system kube-controller-manager-c1 1/1 Running 0 49s
kube-system kube-dns-3913472980-vxldm 0/3 Pending 0 45s
kube-system kube-proxy-2d3q4 1/1 Running 0 45s
kube-system kube-scheduler-c1 1/1 Running 0 56s
Além disso, onde você acessou a estrutura kubeadm.MasterConfiguration
? Foi despejado automaticamente ou você adicionou lógica de depuração a um arquivo?
@jamiehannaford kubeadm 1.6.1 etcd 3.0.17
Eu tenho kubeadm.MasterConfiguration struct através de uma impressão de depuração simples. Talvez eu atualize o kubeadm e tente novamente hoje e atualize o resultado aqui. Obrigado pela ajuda
@jamiehannaford kubeadm 1.6.3 funciona como um encanto.
@Lokicity Você ainda está encontrando problemas com as versões mais recentes do kubeadm?
Fechando como fixo... :+1:
veja o exemplo para v1.14 em https://godoc.org/k8s.io/kubernetes/cmd/kubeadm/app/apis/kubeadm/v1beta1
apiVersion: kubeadm.k8s.io/v1beta1
kind: InitConfiguration
bootstrapTokens:
- token: "9a08jv.c0izixklcxtmnze7"
description: "kubeadm bootstrap token"
ttl: "24h"
- token: "783bde.3f89s0fje9f38fhf"
description: "another bootstrap token"
usages:
- authentication
- signing
groups:
- system:bootstrappers:kubeadm:default-node-token
nodeRegistration:
name: "ec2-10-100-0-1"
criSocket: "/var/run/dockershim.sock"
taints:
- key: "kubeadmNode"
value: "master"
effect: "NoSchedule"
kubeletExtraArgs:
cgroup-driver: "cgroupfs"
localAPIEndpoint:
advertiseAddress: "10.100.0.1"
bindPort: 6443
---
apiVersion: kubeadm.k8s.io/v1beta1
kind: ClusterConfiguration
etcd:
# one of local or external
local:
imageRepository: "k8s.gcr.io"
imageTag: "3.2.24"
dataDir: "/var/lib/etcd"
extraArgs:
listen-client-urls: "http://10.100.0.1:2379"
serverCertSANs:
- "ec2-10-100-0-1.compute-1.amazonaws.com"
peerCertSANs:
- "10.100.0.1"
# external:
# endpoints:
# - "10.100.0.1:2379"
# - "10.100.0.2:2379"
# caFile: "/etcd/kubernetes/pki/etcd/etcd-ca.crt"
# certFile: "/etcd/kubernetes/pki/etcd/etcd.crt"
# keyFile: "/etcd/kubernetes/pki/etcd/etcd.key"
networking:
serviceSubnet: "10.96.0.0/12"
podSubnet: "10.100.0.1/24"
dnsDomain: "cluster.local"
kubernetesVersion: "v1.12.0"
controlPlaneEndpoint: "10.100.0.1:6443"
apiServer:
extraArgs:
authorization-mode: "Node,RBAC"
extraVolumes:
- name: "some-volume"
hostPath: "/etc/some-path"
mountPath: "/etc/some-pod-path"
readOnly: false
pathType: File
certSANs:
- "10.100.1.1"
- "ec2-10-100-0-1.compute-1.amazonaws.com"
timeoutForControlPlane: 4m0s
controllerManager:
extraArgs:
"node-cidr-mask-size": "20"
extraVolumes:
- name: "some-volume"
hostPath: "/etc/some-path"
mountPath: "/etc/some-pod-path"
readOnly: false
pathType: File
scheduler:
extraArgs:
address: "10.100.0.1"
extraVolumes:
- name: "some-volume"
hostPath: "/etc/some-path"
mountPath: "/etc/some-pod-path"
readOnly: false
pathType: File
certificatesDir: "/etc/kubernetes/pki"
imageRepository: "k8s.gcr.io"
useHyperKubeImage: false
clusterName: "example-cluster"
---
apiVersion: kubelet.config.k8s.io/v1beta1
kind: KubeletConfiguration
# kubelet specific options here
---
apiVersion: kubeproxy.config.k8s.io/v1alpha1
kind: KubeProxyConfiguration
# kube-proxy specific options here
Comentários muito úteis
Um exemplo de configuração foi adicionado aos documentos aqui:
https://kubernetes.io/docs/admin/kubeadm/#config -file