从k3s主机在k3s代理上运行docker容器

从k3s主机在k3s代理上运行docker容器,docker,ubuntu,kubernetes-pod,k3s,Docker,Ubuntu,Kubernetes Pod,K3s,我在Ubuntu20上制作了一个k3s主机,在另一个Ubuntu20上制作了一个k3s代理。我将两个系统连接到同一个网络。我在k3s代理上有docker映像,我可以在k3s代理上运行容器。我创建了一个集群,k3s代理和k3s主机都连接到集群。我在主机上使用kubectl get nodes命令进行了检查,我可以看到代理和主机被列出 我需要以下几点的帮助。 我想在k3s主机的k3s代理上运行docker映像。有没有办法在master的代理上运行docker映像 我开始知道我可以做吊舱,用吊舱我可以

我在Ubuntu20上制作了一个
k3s主机
,在另一个Ubuntu20上制作了一个
k3s代理
。我将两个系统连接到同一个网络。我在k3s代理上有docker映像,我可以在k3s代理上运行容器。我创建了一个集群,k3s代理和k3s主机都连接到集群。我在主机上使用
kubectl get nodes
命令进行了检查,我可以看到代理和主机被列出

我需要以下几点的帮助。 我想在k3s主机的k3s代理上运行docker映像。有没有办法在master的代理上运行docker映像


我开始知道我可以做吊舱,用吊舱我可以做到。但是pod不起作用。

如果我没有误解的话,你可以简单地用kubectl命令传递你的docker图像,比如;
kubectl运行我的pod--image=your image…


如果您希望在代理端运行pod,那么您可以使用
taint
容忍
功能来匹配pod和节点。

我们可以做两件事

  • 节点名
  • 只需提及yaml文件中的
    nodeName:mynode1

  • 污染和容忍
  • 我们可以在pod的yaml文件中设置污染和容忍。下面的例子

    将污点设置为如下节点

    kubectl taint nodes mynode1 app=Device:NoSchedule
    
    我们可以在yaml文件中进行如下操作

    apiVersion: v1
    kind: Pod
    metadata:
      name: scriptpod
    spec:
      containers:
        - name: scriptdo
          image: scriptdo
          imagePullPolicy: Always
    nodeName: mynode1
    restartPolicy: Always
    tolerations:
    - key: "app"
      operator: "Equal"
      value: "Device"
      effect: "NoSchedule"
    


    注意:-我设置了
    nodeName
    污染和容忍
    这两个选项,因为
    nodeName
    在极少数情况下不起作用。

    我会让你知道,一旦我尝试你的答案,现在我在代理和主机上运行k3s服务时会遇到更多错误,所以我正在努力。你好@emre odabaş,我尝试了您的解决方案,我比目标又领先了一步,但在获取pod状态时,我面临“ErrImagePull”错误,pod正在从docker网站提取图像。我已经在代理机器上有该图像。在'pod.yaml'文件中是否有可以使用节点本地映像的键可以设置值?