Articles of kubernetes

滚动更新后,旧的pod未被删除

我遇到了一个问题,在我们的网站上进行滚动更新,该网站运行在我们集群的一个容器中,名为website-cluster。 该群集包含两个豆荚。 一个吊舱有一个容器,它运行我们的生产网站,另一个容器运行同一站点的分段版本。 以下是生产窗格的复制控制器的yaml: apiVersion: v1 kind: ReplicationController metadata: # These labels describe the replication controller labels: project: "website-prod" tier: "front-end" name: "website" name: "website" spec: # specification of the RC's contents replicas: 1 selector: # These labels indicate which pods the replication controller manages project: "website-prod" tier: "front-end" name: "website" template: metadata: labels: # […]

在同一端口上创build具有多个协议的LoadBalancer

我正在尝试在GCP上的Kubernetes中设置一个DNS服务器。 我的服务如下所示: kind: Service apiVersion: v1 metadata: name: coredns-one spec: ports: – name: cdns-one port: 53 protocol: UDP – name: cdns-one-tcp port: 53 protocol: TCP selector: name: coredns-one type: LoadBalancer 当我尝试在GCP上创build服务时,出现以下错误: The Service "coredns-one" is invalid. spec.ports: Invalid value: [{"name":"cdns-one","protocol":"UDP","port":53,"targetPort":53,"nodePort":0},{"name":"cdns-one-tcp","protocol":"TCP","port":53,"targetPort":53,"nodePort":0}]: cannot create an external load balancer with mix protocols 我已经将我们的Kubernetes版本升级到了1.3版本,我相信这个版本已经合并在了这个版本中,但是我无法validationGoogle的负载均衡器是否支持这个版本,或者是否有configuration错误。 任何帮助表示感谢,谢谢!

在主GKE中更改KUBE_MAX_PD_VOLS env var

我有一个与许多豆荚和永久磁盘(PD)的GKE集群,不能部署了。 pod failed to fit in any node fit failure on node (XX): MaxVolumeCount 这个问题不应该影响我,因为我有一个2代码的机器,谷歌最近提出的永久磁盘限制为64: https://cloudplatform.googleblog.com/2016/04/enhanced-persistent-disks-for-Google-Compute-Engine-better-Kubernetes-and-Docker-support.html 这个问题似乎是在说KUBE_MAX_PD_VOLS = 16的主人env var。 这个问题似乎是固定的,但由于我有一个托pipe主,我无法find方式来更改env var。 https://github.com/kubernetes/kubernetes/issues/24317#issuecomment-214556057 所以问题是: 我怎样才能改变一个GKE大师的env var?

kubelet无法更新节点状态

kubernetes节点状态报告如下。 root@csp-nso-server78:~# kubectl get nodes 10.213.5.78 NAME STATUS AGE 10.213.5.78 NotReady 1h kubelet日志显示下面的错误 E0812 11:00:31.626169 10488 kubelet.go:2745] Error updating node status, will retry: client: response is invalid json. The endpoint is probably not valid etcd cluster endpoint. E0812 11:00:31.696155 10488 kubelet.go:2745] Error updating node status, will retry: client: response is invalid json. The endpoint is […]

与etcd2-tls的kubelet服务无法连接到127.0.0.1:8080 – getsockopt:连接被拒绝

我安装了CoreOS稳定版本v1122.2.0。 我有etcd2与tlsconfiguration,并正常工作。 我使用我为服务器创build的子域创build了基于https://github.com/coreos/etcd/tree/master/hack/tls-setup的证书,而不是用于calico tls的特定IP地址。 etcd2和calcio-nodeconfiguration正常。 现在我想configurationKubernetes。 我使用https://coreos.com/kubernetes/docs/latest/deploy-master.html上的说明,现在我只configuration一个coreos服务器。 当我启动kubelet并执行journalctl -f -u kubelet我得到以下消息: Sep 23 23:30:11 coreos-2.tux-in.com kubelet-wrapper[1473]: E0923 23:30:11.495381 1473 reflector.go:205] pkg/kubelet/kubelet.go:286: Failed to list *api.Node: Get http://127.0.0.1:8080/api/v1/nodes?fieldSelector=metadata.name%3Dcoreos-2.tux-in.com&resourceVersion=0: dial tcp 127.0.0.1:8080: getsockopt: connection refused Sep 23 23:30:11 coreos-2.tux-in.com kubelet-wrapper[1473]: E0923 23:30:11.889187 1473 reflector.go:205] pkg/kubelet/kubelet.go:267: Failed to list *api.Service: Get http://127.0.0.1:8080/api/v1/services?resourceVersion=0: dial tcp 127.0.0.1:8080: getsockopt: connection refused […]

谷歌云容器引擎kubectl错误

我已经在我的Linux机器上安装了Google Cloud工具,如下所述: curl https://sdk.cloud.google.com | sudo bash sudo gcloud init sudo gcloud components install kubectl beta 到现在为止还挺好。 但是,当我运行kubectl我得到错误 $ kubectl cluster-info error: failed to negotiate an api version; server supports: map[], client supports: map[batch/v2alpha1:{} policy/v1alpha1:{} rbac.authorization.k8s.io/v1alpha1:{} authentication.k8s.io/v1beta1:{} authorization.k8s.io/v1beta1:{} componentconfig/v1alpha1:{} autoscaling/v1:{} v1:{} apps/v1alpha1:{} batch/v1:{} extensions/v1beta1:{} federation/v1beta1:{}] 你有什么想法我做错了什么,我必须configuration?

容器引擎/ Kubernetes DNS到外部

我想让Google Container Engine上的容器指向我的容器引擎集群(即我的db)之外的静态IP。 是否有可能阻止使用/etc/hosts文件或自我pipe理的绑定服务器,并使用Google Cloud DNS,以便我可以在我的容器中configuration域名? 我怎么去做这个?

kubernetesparsing自定义内部名称服务器

当GKE k8s上的豆荚被部署时,它们可以通过ip或google元数据DNS服务器名称连接到其他GCE(谷歌计算引擎)实例。 我使用安装在2(主/从)GCE实例上的内部绑定来parsing。 假设example.local是内部区域名称,所有实例都使用它来进行名称parsing。 我使用自定义DNS,因为我需要解决本地DNSlogging,谷歌云内部DNS不能被pipe理。 GKE kubernetes pods使用kube-dns并使用/etc/resolv.confparsing器IP,它们使用实例默认的google设置,而我无法parsing我的内部区域。 我真的不知道如何解决这个问题。 例如使用Docker可以select通过“docker -d -p …… –dns = 8.8.8.8 …”在容器启动时传递dns。 可以将skydnsconfiguration为具有为example.local定义的区域转发器吗? 只是猜测。

在GCP Kubernetes上的Docker化的Jenkins给出了“请求中没有包含有效的碎屑”

我试图通过直接部署Jenkins Docker镜像来运行Google Cloud Platform上最新的Jenkins(2.19.3)。 该过程开始正常,但只要我尝试使用某种forms(例如创build一个用户),我得到“请求中包含没有有效的屑”错误。 用于部署映像的命令是: kubectl run jenkins-node –image=eu.gcr.io/tidalwave-services/jenkins –port=8080 该群集已经通过遵循Google教程创build。 Nexus 3的dockerised版本正常工作。 过去多次出现过多次错误,“没有有效的碎屑…”,但是它们已经被AFAIK确定了。 Docker镜像在本地Docker安装中运行良好。 在jenkins,他们立即closures了我提交的问题,因为他们说问题出在部署设施上。 https://issues.jenkins-ci.org/browse/JENKINS-39885 我想这个问题实际上就是Kubernetes在公共知识产权上暴露了8080端口的方式,但是现在我不知道Kubernetes的内部工作原理。

Google Container Engine上的RAID0本地SSD

我想为我的一个应用程序使用本地SSD,但是数据大于350GB,所以我需要使用其中的2个。 gce自动挂载和格式化SSD到/mnt/disks/ssdx ,但有什么办法让我的虚拟机在RAID0的SSD上挂载之前? 在新的实例模板中编辑启动脚本是否适合此? PS:我对GCE很新,但是对Linux很有用。