小编Anu*_*ope的帖子

Kubernetes 上的多代理 Kafka 如何设置 KAFKA_ADVERTISED_HOST_NAME

我当前带有 3 个 Kafka 代理的 Kafka 部署文件如下所示:

apiVersion: apps/v1beta1
kind: StatefulSet
metadata:
  name: kafka
spec:
  selector:
    matchLabels:
      app: kafka
  serviceName: kafka-headless
  replicas: 3
  updateStrategy:
    type: RollingUpdate
  podManagementPolicy: Parallel
  template:
    metadata:
      labels:
        app: kafka
    spec:
      containers:
      - name: kafka-instance
        image: wurstmeister/kafka
        ports:
        - containerPort: 9092
        env:
        - name: KAFKA_ADVERTISED_PORT
          value: "9092"
        - name: KAFKA_ADVERTISED_HOST_NAME
          valueFrom:
              fieldRef:
                fieldPath: metadata.name
        - name: KAFKA_ZOOKEEPER_CONNECT
          value: "zookeeper-0.zookeeper-headless.default.svc.cluster.local:2181,\
                  zookeeper-1.zookeeper-headless.default.svc.cluster.local:2181,\
                  zookeeper-2.zookeeper-headless.default.svc.cluster.local:2181"
        - name: BROKER_ID_COMMAND
          value: "hostname | awk -F '-' '{print $2}'"
        - name: KAFKA_CREATE_TOPICS
          value: hello:2:1 …
Run Code Online (Sandbox Code Playgroud)

dns yaml kubernetes kube-dns kubectl

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

无法从Google Kubernetes Engine群集访问Google Cloud Datastore

我有一个简单的应用程序,从数据存储区获取和提取信息.

它可以在任何地方使用,但是当我从Kubernetes Engine集群中运行它时,我得到了这个输出:

Error from Get()
rpc error: code = PermissionDenied desc = Request had insufficient authentication scopes.
Error from Put()
rpc error: code = PermissionDenied desc = Request had insufficient authentication scopes.
Run Code Online (Sandbox Code Playgroud)

我正在使用cloud.google.com/go/datastore包和Go语言.

我不知道为什么我收到此错误,因为应用程序在其他地方工作正常.

更新:

正在寻找答案,我在Google网上论坛中发现了这条评论:

为了从GCE使用Cloud Datastore,需要为实例配置一些额外的范围.这些不能添加到现有GCE实例,但您可以使用以下Cloud SDK命令创建新实例:

gcloud compute instances创建hello-datastore --project --zone --scopes datastore userinfo-email

这是否意味着默认情况下我无法使用GKE中的数据存储区?

更新2:

我可以看到,在创建我的集群时,我没有启用任何权限(默认情况下对大多数服务禁用).我想这就是造成这个问题的原因:

奇怪的是,即使它被禁用(使用cloudsql_proxy容器),我也可以使用CloudSQL .

go google-cloud-datastore google-cloud-platform kubernetes

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

标签 - 中断vs继续vs goto

我明白那个:

break - 停止进一步执行循环结构.

continue - 跳过循环体的其余部分并开始下一次迭代.

但是,当与标签结合使用时,这些陈述有何不同?

换句话说,这三个循环之间有什么区别:

Loop:
    for i := 0; i < 10; i++ {
        if i == 5 {
             break Loop
        }
        fmt.Println(i)
    }
Run Code Online (Sandbox Code Playgroud)

输出:

0 1 2 3 4


Loop:
    for i := 0; i < 10; i++ {
        if i == 5 {
             continue Loop
        }
        fmt.Println(i)
    }
Run Code Online (Sandbox Code Playgroud)

输出:

0 1 2 3 4 6 7 8 9


Loop:
    for i := 0; i < 10; i++ {
        if i == 5 { …
Run Code Online (Sandbox Code Playgroud)

loops goto go

5
推荐指数
1
解决办法
3311
查看次数

有效地从文件中读取前两个字节 - Golang

我正在尝试使用Go找到从文件中读取前两个字节的好方法.

.zip在当前目录中有一些文件,与其他文件混合在一起.

我想循环遍历目录中的所有文件,并检查前两个字节是否包含正确的.zip标识符,即50 4B.

使用标准库而不必读取整个文件的好方法是什么?

通过io我设法找到的包中的可用功能:

func LimitReader(r Reader, n int64) Reader
Run Code Online (Sandbox Code Playgroud)

这似乎符合我的描述,它从Reader(如何得到Reader?)读取,但在n字节后停止.因为我对Go很新,所以我不确定如何去做.

file go

4
推荐指数
1
解决办法
1814
查看次数

引用函数内部的开放数据库连接 - Golang

我的main函数打开一个数据库连接:

func main() {
    db, err := sql.Open("sqlite3", "./house.db")
    checkErr(err)

    ...
}
Run Code Online (Sandbox Code Playgroud)

然后,我想创建一个函数,允许我根据传递的结构向数据库添加一行:

func addRow(row Room) error {
    stmt, err := db.Prepare("INSERT INTO Rooms (Name, Size, WindowCount, WallDecorationType, Floor) VALUES(?, ?, ?, ?, ?)")
    _, err = stmt.Exec(row.Name , row.Size , row.WindowCount , row.WallDecorationType , row.Floor)
    return err
}
Run Code Online (Sandbox Code Playgroud)

但显然我不能这样做,因为addRow()函数不知道是什么db.

我该如何使这个功能起作用?我是否应该在主要功能之外打开数据库?

sql database go

4
推荐指数
1
解决办法
3932
查看次数