Articles of kubernetes

rsync文件添加到kubernetes窗格

我需要rsync文件树到kubernetes集群中的特定窗格。 似乎应该有可能的,如果只有一个人可以说服rsync的kubectl行为有点像rsh。 就像是: rsync –rsh='kubectl exec -i podname — ' -r foo x:/tmp …除了这会遇到x的问题,因为rsync假定需要一个主机名: exec: "x": executable file not found in $PATH 我似乎无法find一种方法来帮助rsync构buildrsh命令。 有没有办法做到这一点? 或者其他一些通过pipe道可以实现相对高效的文件传输的方法? (我知道gcloud compute copy-files ,但它只能用于节点?)

GKE吊舱通过VPN连接?

我有一个带有less数节点的GKE集群,我希望此集群中的pod能够连接到专用networking上的远程主机,这些主机可以通过GCE提供的站点到站点VPN访问。 据我所知,没有简单的方法来分配一个地址到出站连接的pod? (每次添加或replace节点时,将每个pid-cidr添加到VPNconfiguration似乎不可行)。我必须在群集外部设置NAT bradge,还是有一些Kubernetes方式来控制出站地址一个荚?

在Kubernetes中公开服务

我是Kubernetes的新人,我有一些疑虑。 我已经build立了由一个主节点和一个节点组成的Kubernetes集群。 我已经部署了一个非常简单的基于NodeJS的应用程序,使用Deployment种类2副本。 然后,我通过kubectl expose deployment my-app –port=80其作为服务kubectl expose deployment my-app –port=80 。 现在,我的服务如下所示: root@sw-kubernetes01:~# kubectl get services NAME CLUSTER-IP EXTERNAL-IP PORT(S) AGE my-app 192.168.100.167 <none> 80/TCP 10m kubernetes 192.168.100.1 <none> 443/TCP 1h 是否应该访问我的应用程序导航到http://192.168.100.167: 我收到一个超时错误。 否则,我怎样才能让外部IP访问外部服务? 我知道,如果我声明服务type: NodePort ,我可以访问我的应用程序使用节点IP,不存在一种方法来自动平衡负载之间的豆荚?

kubectl“未能谈判api版本”

您好,从昨天早上我遇到了试图访问我的Kubernetes集群托pipe在谷歌容器引擎的问题。 我从来没有问题,直到它开始失败,但现在每个kubectl命令我尝试执行失败告诉“错误:未能协商api版本”。 即: $ kubectl version Client Version: version.Info{Major:"1", Minor:"3", GitVersion:"v1.3.4", GitCommit:"dd6b458ef8dbf24aff55795baa68f83383c9b3a9", GitTreeState:"clean", BuildDate:"2016-08-01T16:45:16Z", GoVersion:"go1.6.2", Compiler:"gc", Platform:"darwin/amd64"} error: failed to negotiate an api version; server supports: map[], client supports: map[v1:{} apps/v1alpha1:{} autoscaling/v1:{} componentconfig/v1alpha1:{} batch/v1:{} batch/v2alpha1:{} authentication.k8s.io/v1beta1:{} federation/v1beta1:{} rbac.authorization.k8s.io/v1alpha1:{} authorization.k8s.io/v1beta1:{} extensions/v1beta1:{} policy/v1alpha1:{}] 我尝试删除然后重新创build群集没有成功,我确保kubernetes版本在服务器和客户端(1.3.4)上是相同的。 我可以看到在云端控制台运行的实例池以及集群,当我去容器引擎选项卡,但我有一点线索如何从这里开始,任何人都可以告诉我什么可能会发生什么? 非常感谢! 法布里斯。

Kubernetes – 通过单个IP的外部连接

我需要find一种方法,让每个需要连接到“外部世界”的所有荚使用1个IP。 完整版: 我正在尝试将我的应用程序与Payments Gateway服务集成。 但是,此服务需要将我的服务器IP列入白名单,并拒绝所有其他连接以确保安全。 现在,我运行一个GKE(实际上是3)Kubernetes 1.5.2。 在这个集群中,我有大约30个豆荚,我需要1个特定path来通过一个静态的,可预测的IP地址来访问互联网。 现在,我必须列出我的群集实例外部IP列入白名单,但这是一个问题。 群集设置为自动调整最多5个实例,所有这些实例都有一个短暂的IP和1 – 我不想被迫将所有这些变成静态IP。 2 – 我也不希望被迫通过外部端点公开该特定窗格,使其可用于Internet到集群的定向连接。 有什么办法可以说/configuration: – This pod forwards all it's Internet directed connections through X endpoint? Obviously, this should be something easy to configure to work with 1 pod or with all of them I so desired. 这里有什么正确的行动? 我怎样才能做到这一点? 我已经在Kubernetes上引用了这个SO问题和源IP文档 ,以及如何设置NAT网关的说明(考虑到灵活的集群configuration,我认为这不会起作用)

nodeAffinity如何在DaemonSets中工作?

我正在尝试创build一个具有特定关系的守护进程集,我只希望它在types为prod的节点上创buildPod。 我使用以下testing代码: apiVersion:extensions / v1beta1 kind:DaemonSet 元数据: 名称:test0 命名空间:kube-system 规格: 模板: 元数据: 标签: app:test0 规格: 亲和力: nodeAffinity: requiredDuringSchedulingIgnoredDuringExecution: nodeSelectorTerms: – matchExpressions: – 键:键入 运营商:在 值: – prod 容器: – 名称:test0 图片:gcr.io/google_containers/pause:2.0 但是,kubectl退出的错误如下: error: error validating "test.yaml": error validating data: found invalid field affinity for v1.PodSpec; if you choose to ignore these errors, turn validation off […]

如何在默认的Google负载均衡器上使用Google Container Engine启用HSTS?

我很想用我的GKE集群来设置HSTS,因为现在HTTP请求会在ingress.yml annotations设置后返回一个Google破碎的机器人404页面: kubernetes.io/ingress.allow-http: "false" 显然,在ingress.yml (即hsts-max-age和hsts-include-subdomains )中有这个选项,但据我所知,GKE不支持: https : //github.com/kubernetes/ingress/blob /7c749ede0a2d88f289279d61d04005e22f002104/docs/annotations.md#tls-related 我真的很想避免使用和维护一个自定义的Nginx负载平衡器,并失去Google的扩展,坚持默认的是一个强大的要求。 我也想避免让HTTP请求通过并处理redirect和我的应用程序中的HSTS头。 如果HSTS是不可能的,我可以生活在一个很好的redirect设置。 非常感谢!

如何在Google计算引擎中创build内部/私有负载平衡器

我有两个集群。 集群A(在谷歌容器引擎上)是一个面向公众的集群,它需要连接到专用集群B(在GCE上的点击部署集群)来访问服务。 我希望集群A通过负载平衡器连接到集群B,即使所有GCE负载均衡器都需要公有IP地址,也可以工作https://groups.google.com/d/topic/gce讨论/ Dv6289i4_rg /讨论 (我宁愿如果它都是私人的)。 如果您只需设置一个简单的防火墙规则并使用标准的Google负载平衡器,公共IP地址本身就不是那么糟糕。 不幸的是,源标签似乎没有跨越广域网的门槛(或只是没有通过负载平衡器)。 这是我想要使用的规则: gcloud compute firewall-rules create servicename-lb-from-gke-cluster –allow tcp:1234 –source-tags k8s-gke-cluster-node –target-tags servicename #DOES NOT WORK 进入上述命令后,集群A不能通过TCP端口1234与集群B(通过负载均衡器)进行通信。 这是行得通的,但是这很痛苦,因为它需要监督来自动设置源集群的公共IP地址: gcloud compute firewall-rules create servicename-lb-from-gke-cluster –allow tcp:1234 –source-ranges 100.2.3.4/32 100.3.5.9/32 100.9.1.2/32 –target-tags servicename #Does work, but is painful 正如谷歌组线程中所build议的,HA代理是另一个build议。 另一个想法是打开防火墙到整个广域网,并添加安全authentication之间的集群A和B.也许这是一个好主意,为安全起见呢? 根据A和B的运行情况,难度可能从容易变到困难 – 有一个更一般的解决scheme可能是很好的。 有没有人有更好的主意? 其他人是否也有同样的问题?

在构build和/或在GKE上运行Docker映像之前预先填充GCE持久性磁盘

我想构build一个Docker容器,然后从GCE永久磁盘(PD)挂载一些目录后,在GKE中运行它。 例如,我希望/etc/<application>/的应用程序的(读写)configuration文件的存活时间长于它的pod(可能随时会重新启动)。 常规的构build将默认configuration文件放入/etc/<application>/ ,并且必须以某种方式将这些文件从镜像的临时磁盘“复制”到PD中,以便应用程序可以在预期的环境中启动。 有没有最好的做法,使这种情况发生? 例如,我是否也必须在我的Dockerfile安装PD,或者我可以以某种方式请求在部署期间首次由虚拟机实例挂载时,与另一个目录/卷/磁盘中的文件“同步”PD?

kubernetes kube-proxy iptables错误

我正在尝试在几台ESXi主机上安装一个kubernetes集群。 etcd / kube-apiserver / kube-scheduler / kube-controller-manager似乎没有问题,但是在docker主机上(在这种情况下,coreos稳定的主机)kubelet似乎可以工作,但kube-proxy不能。 我正在运行以下命令并获取列出的错误。 coreos1 core # /opt/bin/kube-proxy –master=10.42.0.51:8080 –v=0 E0817 13:51:29.558463 6506 proxier.go:164] Error removing pure-iptables proxy rule: error checking rule: exit status 2: iptables v1.4.21: Couldn't load target `KUBE-SERVICES':No such file or directory Try `iptables -h' or 'iptables –help' for more information. E0817 13:51:29.560023 6506 proxier.go:167] Error removing […]