0%

问题描述

我有几个Docker镜像,我想用minikube。我不想使用先上传然后下载镜像的方式,而是想直接使用本地镜像。我该怎么做呢?

我试过的方法:

  1. 我尝试运行这些命令(分别删除minikube的实例并重新开始)

    1
    2
    kubectl run hdfs --image=fluxcapacitor/hdfs:latest --port=8989
    kubectl run hdfs --image=fluxcapacitor/hdfs:latest --port=8989 imagePullPolicy=Never

    输出:

    1
    2
    NAME                    READY     STATUS              RESTARTS   AGE
    hdfs-2425930030-q0sdl 0/1 ContainerCreating 0 10m

    它只是陷入某种状态但从未达到就绪状态。

  2. 我尝试创建一个registry,然后将镜像放入其中,但这也无效。我可能做错了但我找不到正确的指令来完成这项任务。

请提供在本地kubernetes实例中使用本地docker镜像的说明。

操作系统:ubuntu 16.04

Docker:Docker版本1.13.1,build 092cba3

Kubernetes:

1
2
Client Version: version.Info{Major:"1", Minor:"5", GitVersion:"v1.5.3", GitCommit:"029c3a408176b55c30846f0faedf56aae5992e9b", GitTreeState:"clean", BuildDate:"2017-02-15T06:40:50Z", GoVersion:"go1.7.4", Compiler:"gc", Platform:"linux/amd64"}
Server Version: version.Info{Major:"1", Minor:"5", GitVersion:"v1.5.2", GitCommit:"08e099554f3c31f6e6f07b448ab3ed78d0520507", GitTreeState:"clean", BuildDate:"1970-01-01T00:00:00Z", GoVersion:"go1.7.1", Compiler:"gc", Platform:"linux/amd64"}

如果有人可以帮助我找到一个使用docker-compose来做这个的解决方案,那就太棒了。谢谢。

阅读全文 »

Kubernetes集群证书的使用寿命为一年。如果Kubernetes集群证书在Kubernetes master节点上过期,则kubelet服务将失败。使用kubectl命令,例如kubectel get pod或kubectl exec -it container_name bash,将导致类似的消息:

1
Unable to connect to the server: x509: certificate has expired or is not yet valid

处理方法:重新生成新证书并更新worker节点。

注意:

  1. 执行以下操作前,请先备份相关文件
  2. 请勿替换CA证书,原因可参考issue(个人验证发现,是因为kubelet证书未删除导致,删除后重启kubelet问题解决)
  1. 在/root目录下创建一个配置文件kubeadm.yaml,其中advertiseAddress设置为Kubernetes主节点的IP地址(或集群虚IP)。例如:

    1
    2
    3
    4
    5
    apiVersion: kubeadm.k8s.io/v1alpha1
    kind: MasterConfiguration
    api:
    advertiseAddress: 10.165.80.110
    kubernetesVersion: v1.10.11
  2. 删除现有证书和密钥文件:

    1
    2
    3
    4
    5
    6
    rm -rf /etc/kubernetes/pki/apiserver.key
    rm -rf /etc/kubernetes/pki/apiserver.crt
    rm -rf /etc/kubernetes/pki/apiserver-kubelet-client.crt
    rm -rf /etc/kubernetes/pki/apiserver-kubelet-client.key
    rm -rf /etc/kubernetes/pki/front-proxy-client.crt
    rm -rf /etc/kubernetes/pki/front-proxy-client.key
  3. 创建新证书:

    1
    2
    3
    kubeadm --config /root/kubeadm.yaml alpha phase certs apiserver
    kubeadm --config /root/kubeadm.yaml alpha phase certs apiserver-kubelet-client
    kubeadm --config /root/kubeadm.yaml alpha phase certs front-proxy-client
  4. 删除旧的配置文件:

    1
    2
    3
    4
    5
    rm -rf /etc/kubernetes/admin.conf
    rm -rf /etc/kubernetes/kubelet.conf
    rm -rf /etc/kubernetes/controller-manager.conf
    rm -rf /etc/kubernetes/scheduler.conf
    rm -rf /var/lib/kubelet/pki/kubelet*
  5. 生成新配置文件:

    1
    kubeadm --config /root/kubeadm.yaml alpha phase kubeconfig all
  6. 确保你的 kubectl 服务正在使用正确的配置文件(根据实际环境配置该环境变量):

    1
    2
    cp -i /etc/kubernetes/admin.conf $HOME/.kube/config
    export KUBECONFIG=.kube/config
  7. 重启Kubernetes主节点。

  8. 服务器重新启动后,检查以确保kubelet服务正在运行:

    1
    systemctl status kubelet
  9. 要重新加入工作节点,您需要一个集群令牌。

    对于Kubernetes 1.7,预设了集群令牌。对于Kubernetes1.7之后的版本,您必须创建新令牌,因为在安装时生成的令牌具有有限的生命周期:

    1
    kubeadm token create
  10. SSH进入每个worker节点并将它们重新连接到Kubernetes主节点。

  11. 将工作节点加入Kubernetes集群:

    1
    kubeadm join --token=cluster_token master_ip:6443

    其中:

    • cluster_token:在步骤9中创建的令牌
    • master_ip:Kubernetes主节点的IP地址(或集群虚IP地址)

    注意
    某些版本的kubeadm使用–print-join-command命令行参数。在这些情况下, kubeadm输出重新连接Kubernetes master所需的kubeadm join命令。如果发生这种情况,请在每个工作节点上输入此命令(复制和粘贴)。

  12. 确认kubelet服务正在运行,并且worker节点和Kubernetes master之间正常通信。

  13. 等几分钟。然后从Kubernetes主节点运行以下命令以确认worker节点是否可用:

    1
    kubectl get nodes
阅读全文 »

FEATURE STATE: Kubernetes v1.15 stable

kubeadm生成的客户端证书将在1年后过期。本页介绍如何使用kubeadm管理证书续订。

开始之前

熟悉Kubernetes中的PKI证书和要求以及证书最佳实践

检查证书过期时间

check-expiration命令可用于检查证书过期时间。

1
kubeadm alpha certs check-expiration

输出类似于:

1
2
3
4
5
6
7
8
9
10
11
CERTIFICATE                EXPIRES                  RESIDUAL TIME   EXTERNALLY MANAGED
admin.conf May 15, 2020 13:03 UTC 364d false
apiserver May 15, 2020 13:00 UTC 364d false
apiserver-etcd-client May 15, 2020 13:00 UTC 364d false
apiserver-kubelet-client May 15, 2020 13:00 UTC 364d false
controller-manager.conf May 15, 2020 13:03 UTC 364d false
etcd-healthcheck-client May 15, 2020 13:00 UTC 364d false
etcd-peer May 15, 2020 13:00 UTC 364d false
etcd-server May 15, 2020 13:00 UTC 364d false
front-proxy-client May 15, 2020 13:00 UTC 364d false
scheduler.conf May 15, 2020 13:03 UTC 364d false

该命令显示/etc/kubernetes/pki文件夹中的客户端证书的到期/剩余时间,以及kubeadm(admin.conf,controller-manager.conf和scheduler.conf)使用的KUBECONFIG文件中嵌入的客户端证书。

阅读全文 »