小编Jér*_*Pin的帖子

Docker 1.10容器的局域网IP

从Docker 1.10(以及libnetwork更新)开始,我们可以手动为用户定义网络中的容器提供IP,这很酷!

我想在LAN中为容器提供一个IP地址(就像我们可以在"桥接"模式下使用虚拟机).我的局域网是192.168.1.0/24,我的所有计算机都有IP地址.我希望我的容器具有此范围内的IP,以便从LAN中的任何位置(无NAT/PAT /等等)到达它们.

我显然读过Jessie Frazelle的博客文章,很多其他人在这里和所有地方发帖都喜欢:

还有更多,但没有出来; 我的容器仍然在我的docker主机"内部"有IP地址,并且我的LAN上的其他计算机无法访问.

阅读Jessie Frazelle的博客文章,我认为(因为她使用公共IP)我们可以做我想做的事情?

编辑:的确,如果我这样做:

network create --subnet 192.168.1.0/24 --gateway 192.168.1.1 homenet
docker run --rm -it --net homenet --ip 192.168.1.100 nginx
Run Code Online (Sandbox Code Playgroud)

docker主机上的新接口(br- [a-z0-9] +)采用' - gateway'IP,这是我的路由器IP.在网络上的两台计算机上使用相同的IP ... BOOM

提前致谢.

networking docker

20
推荐指数
2
解决办法
2万
查看次数

将外部IP分配给Kubernetes服务

编辑:我的设置的重点是实现(如果可能)以下内容:

  • 我有多个k8s节点
  • 当我联系IP地址(来自我公司的网络)时,它应该被路由到我的容器/ pod/service /中的任何一个.
  • 我应该能够轻松设置IP(就像我的服务.yml定义)

我正在运行一个小的Kubernetes集群(用kubeadm构建),以评估我是否可以将Docker(旧)Swarm设置移动到k8s.我绝对需要的功能是能够为容器分配IP,就像我使用MacVlan一样.

在我目前的docker设置中,我正在使用MacVlan将我公司网络中的IP地址分配给某些容器,这样我就可以直接到达(没有反向代理),就好像它是任何物理服务器一样.我正在努力实现与k8s类似的东西.

我发现:

  • 我必须使用服务
  • 我不能使用LoadBalancer类型,因为它仅适用于兼容的云提供商(如GCE或AWS).
  • 我应该使用ExternalIPs
  • Ingress Resources是某种反向代理?

我的yaml文件是:

apiVersion: apps/v1beta1
kind: Deployment
metadata:
      name: nginx-deployment
spec:
  template:
    metadata:
      labels:
        app: nginx
    spec:
      containers:
      - name: nginx
        image: nginx:1.7.9
        ports:
        - containerPort: 80
      nodeSelector:
        kubernetes.io/hostname: k8s-slave-3
---
kind: Service
apiVersion: v1
metadata:
  name: nginx-service
spec:
  type: ClusterIP
  selector:
    app: nginx
  ports:
    - name: http
      protocol: TCP
      port: 80
      targetPort: 80
  externalIPs: 
    - A.B.C.D
Run Code Online (Sandbox Code Playgroud)

我跳的是我的服务将获得IP ABCD(这是我公司的网络之一).我的部署工作正常,因为我可以使用它的ClusterIP从k8s集群内部到达我的nginx容器.

我错过了什么?或者至少,我在哪里可以找到有关网络流量的信息,以查看数据包是否即将到来? …

networking kubernetes kubeadm

14
推荐指数
5
解决办法
3万
查看次数

kubelet无法获得docker和kubelet服务的cgroup统计信息

我在裸机Debian上运行kubernetes(3个主人,2个工人,现在是PoC).我跟着k8s-hard-way,我在我的kubelet上遇到了以下问题:

无法获取"/system.slice/docker.service"的系统容器统计信息:无法获取"/system.slice/docker.service"的cgroup统计信息:无法获取"/system.slice/docker.service"的cgroup统计信息":无法获取"/system.slice/docker.service"的容器信息:未知容器"/system.slice/docker.service"

我对kubelet.service也有同样的信息.

我有一些关于这些cgroup的文件:

$ ls /sys/fs/cgroup/systemd/system.slice/docker.service
cgroup.clone_children  cgroup.procs  notify_on_release  tasks

$ ls /sys/fs/cgroup/systemd/system.slice/kubelet.service/
cgroup.clone_children  cgroup.procs  notify_on_release  tasks
Run Code Online (Sandbox Code Playgroud)

管理员告诉我:

$ curl http://127.0.0.1:4194/validate
cAdvisor version: 

OS version: Debian GNU/Linux 8 (jessie)

Kernel version: [Supported and recommended]
    Kernel version is 3.16.0-4-amd64. Versions >= 2.6 are supported. 3.0+ are recommended.


Cgroup setup: [Supported and recommended]
    Available cgroups: map[cpu:1 memory:1 freezer:1 net_prio:1 cpuset:1 cpuacct:1 devices:1 net_cls:1 blkio:1 perf_event:1]
    Following cgroups are required: [cpu cpuacct]
    Following other …
Run Code Online (Sandbox Code Playgroud)

cgroups kubernetes

12
推荐指数
2
解决办法
1万
查看次数

模拟elasticsearch-py调用

我正在编写一个CLI,使用elasticsearch-py库与elasticsearch进行交互.我正在尝试模拟elasticsearch-py函数,以便在不调用我的真实集群的情况下测试我的函数.

我读了这个问题,并且这一个,但我还是不明白.

main.py

Escli继承了悬崖的App 阶级

class Escli(App):
    _es = elasticsearch5.Elasticsearch()
Run Code Online (Sandbox Code Playgroud)

settings.py

from escli.main import Escli

class Settings:
    def get(self, sections):
        raise NotImplementedError()

class ClusterSettings(Settings):

    def get(self, setting, persistency='transient'):
        settings = Escli._es.cluster\
                    .get_settings(include_defaults=True, flat_settings=True)\
                    .get(persistency)\
                    .get(setting)

        return settings
Run Code Online (Sandbox Code Playgroud)

settings_test.py

import escli.settings


class TestClusterSettings(TestCase):
    def setUp(self):
        self.patcher = patch('elasticsearch5.Elasticsearch')
        self.MockClass = self.patcher.start()

    def test_get(self):
        # Note this is an empty dict to show my point
        # it will contain childs dict to allow my .get(persistency).get(setting)
        self.MockClass.return_value.cluster.get_settings.return_value …
Run Code Online (Sandbox Code Playgroud)

python unit-testing mocking elasticsearch

6
推荐指数
1
解决办法
1275
查看次数