用于设置 apiserver 地址的 kubelet 选项

kubelet option to set apiserver address

我使用 hyperkube 设置了一个不安全的 k8s 主节点,不安全 API:

docker run -d --name=k8s-apiserver --net=container:etcd gcr.io/google_containers/hyperkube:v1.8.5 /apiserver --etcd-servers=http://127.0.0.1:2378 --service-cluster-ip-range=10.0.0.1/24 --insecure-bind-address=0.0.0.0 --insecure-port=8080 --admission-control=AlwaysAdmit

继续配置节点,docker run -d --name=kubelet gcr.io/google_containers/hyperkube:v1.8.5 /kubelet 命令的哪个选项将 kubelet 指向主节点 apiserver?我似乎无法使用 --help.

找到此选项

从 kubernetes 版本 1.8 开始,您应该使用 --kubeconfig 键指定 kubeconfig 文件的路径,其中描述了如何连接到 API 服务器:

--kubeconfig string      Path to a kubeconfig file, specifying how to connect to the API server. (default "/var/lib/kubelet/kubeconfig")

其中 /var/lib/kubelet/kubeconfig 类似于:

apiVersion: v1
clusters:
- cluster:
    certificate-authority: ~/.kube/ca.crt
    server: https://<API_IP>:<API_PORT>
  name: dev
contexts:
- context:
    cluster: dev
    user: dev
  name: dev
current-context: dev
kind: Config
preferences: {}
users:
- name: dev
  user:
    as-user-extra: {}
    client-certificate: ~/.kube/client.crt
    client-key: ~/.kube/client.key

所以,最后你应该将配置文件挂载到 kubelet docker 容器中:

docker run -d -v /var/lib/kubelet/kubeconfig:/var/lib/kubelet/kubeconfig --name=kubelet gcr.io/google_containers/hyperkube:v1.8.5 /kubelet