kubernetes - kubeadm init --apiserver-advertise-address 标志在配置文件中等效

标签 kubernetes kubeadm

由于我需要传递一些额外的参数,我需要使用 kubeadm 配置文件初始化我的 kubernetes 集群,这些参数不能直接用于 kubeadm init .

我确实创建了一个配置文件,它工作正常。我通过了 documentation kubeadm 配置文件,但仍然无法获得哪个选项等效于命令行标志 --apiserver-advertise-address
我的 kubeadm 版本是 1.15.7
这是我当前的配置:
注释掉的行是我已经尝试过但似乎不起作用的选项。

#apiVersion: kubeadm.k8s.io/v1beta2
#kind: InitConfiguration
#APIEndpoint:
#  advertiseAddress: "192.168.224.22"
#  bindPort: 6443
#controlPlaneEndpoint: "192.168.224.22:6443"
apiServer:
  advertiseAddress: "192.168.224.22"
  extraArgs:
    authorization-mode: Node,RBAC
#    advertise-address: 192.168.224.22
    authentication-token-webhook-config-file: /webhook/webhook-config.yaml
  extraVolumes:
  - name: "webhook-conf"
    hostPath: "/webhook/"
    mountPath: "/webhook/"
    readOnly: true
    pathType: DirectoryOrCreate
  timeoutForControlPlane: 4m0s
apiVersion: kubeadm.k8s.io/v1beta2
certificatesDir: /etc/kubernetes/pki
clusterName: kubernetes
controllerManager: {}
dns:
  type: CoreDNS
etcd:
  local:
    dataDir: /var/lib/etcd
#APIEndpoint:
#  advertiseAddress: "192.168.224.22"
#  bindPort: 6443
imageRepository: k8s.gcr.io
kind: ClusterConfiguration
kubernetesVersion: v1.15.10
networking:
#  advertiseAddress: "192.168.224.22"
  dnsDomain: cluster.local
  podSubnet: 10.244.0.0/16
  serviceSubnet: 10.96.0.0/12
scheduler: {}

This是我想要配置的。

最佳答案

要在 kubeadm 配置文件中指定 --apiserver-advertise-address 标志,请在 init 配置中使用它:

localAPIEndpoint:
  advertiseAddress: 192.168.224.22
  bindPort: 6443

最初,当我使用它时,地址发生了变化,但随后由于 CRI 套接字配置错误,工作节点无法加入集群。

原来使用 kubeadm config view 不会打印出集群创建期间使用的整个配置。 The kind: InitConfiguration 被跳过,因此发生了错误配置。

使用 kubeadm config print init-defaults 获取配置文件的 init 块。那么它应该工作。

最终工作配置文件:
apiVersion: kubeadm.k8s.io/v1beta2
bootstrapTokens:
- groups:
  - system:bootstrappers:kubeadm:default-node-token
  token: abcdef.0123456789abcdef
  ttl: 24h0m0s
  usages:
  - signing
  - authentication
kind: InitConfiguration
localAPIEndpoint:
  advertiseAddress: 192.168.224.22
  bindPort: 6443
nodeRegistration:
  criSocket: /var/run/dockershim.sock
  name: hostname1
  taints:
  - effect: NoSchedule
    key: node-role.kubernetes.io/master
---
apiServer:
  extraArgs:
    authorization-mode: Node,RBAC
    authentication-token-webhook-config-file: /webhook/webhook-config.yaml
  extraVolumes:
  - name: "webhook-conf"
    hostPath: "/webhook/"
    mountPath: "/webhook/"
    readOnly: true
    pathType: DirectoryOrCreate
  timeoutForControlPlane: 4m0s
apiVersion: kubeadm.k8s.io/v1beta2
certificatesDir: /etc/kubernetes/pki
clusterName: kubernetes
controllerManager: {}
dns:
  type: CoreDNS
etcd:
  local:
    dataDir: /var/lib/etcd
imageRepository: k8s.gcr.io
kind: ClusterConfiguration
kubernetesVersion: v1.15.10
networking:
  dnsDomain: cluster.local
  podSubnet: 10.244.0.0/16
  serviceSubnet: 10.96.0.0/12
scheduler: {}

关于kubernetes - kubeadm init --apiserver-advertise-address 标志在配置文件中等效,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60391127/

相关文章:

azure - 如何使用 Istio Ingress 在 AKS 中公开服务?

Kubernetes1.9.0 kubeadm init - 在系统路径中找不到 crictl

kubernetes - 为 Kubernetes 中的 Master 配置 AWS publicIP

ubuntu - 无法验证 kubelet 标志 : the container runtime endpoint address was not specified or empty, 使用 --container-runtime-endpoint 来设置

kubernetes - 可以将Pod安全策略应用于 namespace 吗?

kubernetes - 如何在不对 minion IP 进行硬编码的情况下将 kubernetes 服务公开?

kubernetes - 删除分别在 “jx preview”和 “jx promote”环境中通过 “preview”和 “jx-staging”部署的服务的k8s资源

kubernetes - 如何完全卸载kubernetes

docker - kubeadm docker法兰绒集成

Kubernetes Pod 在不同节点上无法找到彼此