GKEクラスタを作成するときに--no-enable-cloud-loggingオプションが使えなくなったっぽい

前提

自分は格安でGKEを使うために、g1-smallで運用している

GKEでデフォルトのクラスタを作成すると、ログ転送用にfluentdなどのPodが立ち上がってしまう。 このうちfluentdが結構なCPUとMemoryを使用してしまうので、自分は以下にあるような方法で --no-enable-cloud-logging を指定することでfluentdを動かないようにさせていた。

Fluentd を使用した Google Kubernetes Engine 用の Cloud Logging ログのカスタマイズ

    gcloud beta container clusters create gke-with-custom-fluentd \
       --zone us-east1-b \
       --no-enable-cloud-logging \
       --tags=gke-cluster-with-customized-fluentd \
       --scopes=logging-write

これでクラスタを作成すると、以下のようなWarningは出るものの、これまでなんとか使えていた

WARNING: From 1.14, legacy Stackdriver GKE logging is deprecated. Thus, flag `--enable-cloud-logging` is also deprecated. Please use `--enable-stackdriver-kubernetes` instead, to migrate to new Stackdriver Kubernetes Engine monitoring and logging. For more details, please read: https://cloud.google.com/monitoring/kubernetes-engine/migration.

起きたこと

これまではWarningだったけど、ついに完全に使えなくなったっぽい

$gcloud --quiet container clusters create $CLUSTER_NAME \
> --machine-type=$MACHINE_TYPE --disk-size 10 --zone $COMPUTE_ZONE \
> --no-enable-cloud-logging \
> --num-nodes=$NUM_NODES --preemptible
WARNING: From 1.14, legacy Stackdriver GKE logging is deprecated. Thus, flag `--enable-cloud-logging` is also deprecated. Please use `--enable-stackdriver-kubernetes` instead, to migrate to new Stackdriver Kubernetes Engine monitoring and logging. For more details, please read: https://cloud.google.com/monitoring/kubernetes-engine/migration.
WARNING: Currently VPC-native is not the default mode during cluster creation. In the future, this will become the default mode and can be disabled using `--no-enable-ip-alias` flag. Use `--[no-]enable-ip-alias` flag to suppress this warning.
WARNING: Newly created clusters and node-pools will have node auto-upgrade enabled by default. This can be disabled using the `--no-enable-autoupgrade` flag.
WARNING: Starting with version 1.18, clusters will have shielded GKE nodes by default.
WARNING: Your Pod address range (`--cluster-ipv4-cidr`) can accommodate at most 1008 node(s).
This will enable the autorepair feature for nodes. Please see https://cloud.google.com/kubernetes-engine/docs/node-auto-repair for more information on node autorepairs.
ERROR: (gcloud.container.clusters.create) ResponseError: code=400, message=Legacy monitoring is not supported in clusters running Kubernetes 1.15 or above.

やったこと

Logging Using Stackdriver | Kubernetes

を参考に

$ kubectl label node <ノード> beta.kubernetes.io/fluentd-ds-ready=false --overwrite

を実行すると、各ノードのfluentd daemonsetが起動しなくなるので試しにこれをやってみた

  • 起動後に上書きするためにはoverwriteが必要だった

node名は以下で取得できる

kubectl get nodes

最初からKubernetesYamlファイルとして定義してデプロイ時に指定してもよさそう。

WSLで gcloud components updateをして [Errno 13] Permission deniedが出た

WSLのgcloud components updateをして [Errno 13] Permission deniedが出たはなし

完全にはまった問題があったので書く

環境:

  • Windows10 WSL2
  • Ubuntu 18.04.4 LTS

起きたこと

gcloud components updateをして [Errno 13] Permission deniedが出た

[~] $gcloud components update
略
ERROR: (gcloud.components.update) [Errno 13] Permission denied: '/mnt/c/wsl/google-cloud-sdk.staging/.install/.download': [/mnt/c/wsl/google-cloud-sdk/.install/.download]

Ensure you have the permissions to access the file and that the file is not in use.

全ログ

[~] $gcloud components update


Your current Cloud SDK version is: 293.0.0
You will be upgraded to version: 297.0.1

 ---------------------------------------------------------
|            These components will be updated.            |
 --------------------------------- ------------ ----------
|               Name              |  Version   |   Size   |
 --------------------------------- ------------ ----------
| BigQuery Command Line Tool      |     2.0.58 |  < 1 MiB |
| Cloud SDK Core Libraries        | 2020.06.17 | 14.9 MiB |
| Cloud Storage Command Line Tool |       4.51 |  3.5 MiB |
| anthoscli                       |     0.1.10 | 42.8 MiB |
| gcloud cli dependencies         | 2020.06.17 |  3.4 MiB |
| gcloud cli dependencies         | 2020.06.12 |  < 1 MiB |
 --------------------------------- ------------ ----------

The following release notes are new in this upgrade.
Please read carefully for information about new features, breaking changes,
and bugs fixed.  The latest full release notes can be viewed at:
  https://cloud.google.com/sdk/release_notes

297.0.1 (2020-06-17)
      o Fixed bug in gcloud app deploy command. This issue can be tracked at
        <https://issuetracker.google.com/issues/159109983>

297.0.0 (2020-06-16)
  Anthos
      o Added support for preferred authentication methods to anthos auth
        login command.

  BigQuery
      o Added support for splitting/merging capacity commitments.
      o Added support for autoscale based on reservations.
      o Fixed CLI json.loads error for Python 3.5.

  Compute Engine
      o Added --preemptible flag to gcloud compute instances set-scheduling.
      o Promoted --multi-writer flag of gcloud compute disks create to beta.

    Subscribe to these release notes at
    https://groups.google.com/forum/#!forum/google-cloud-sdk-announce
    (https://groups.google.com/forum/#!forum/google-cloud-sdk-announce).

    Note: Cloud SDK introduced support for Python 3 in release 274.0.0 and
    users are strongly encouraged to migrate to Python 3. Support for Python 2
    will be deprecated on July 31, 2020. See also Python 2 Sunset
    (https://cloud.google.com/python/docs/python2-sunset/) and Using Python 3
    (https://cloud.google.com/sdk/gcloud/reference/topic/startup).

296.0.1 (2020-06-10)
  Anthos
      o Fixed blocking bug in anthos auth login command.

296.0.0 (2020-06-09)
  Cloud SDK
      o Updated bundled Python executable to 3.7.5.

  Cloud Composer
      o Fixed a bug that causes backfill subcommand of gcloud composer
        environments run
    to be stuck indefinitely.
      o Updated gcloud composer environments run command to prefer GKE pods
        with 'Ready: true' condition state.

  Cloud Filestore
      o Updated gcloud beta filestore instances create
    and gcloud beta filestore instances update to include:
      o Added HIGH_SCALE_SSD, BASIC_HDD and BASIC_SSD tiers.
      o Added nfs-export-options to --file-share flag.
      o Support for NfsExportOptions. Run gcloud filestore --help or visit
        <https://cloud.google.com/filestore/docs/> to learn more.

  Cloud Firestore Emulator
      o Release Cloud Firestore emulator v1.11.4
        * Fixes bug for evaluating rules in query listening.
        * Fixes support for ?show_missing in listing collection.

  Cloud Resource Manager
      o Promoted gcloud projects create to beta.

  Cloud Run
      o Modified --vpc-connector and --clear-vpc-connector flags to be
        applicable for --platform=managed only.
      o Added --format export option to gcloud run services describe and
        gcloud run revisions describe, to output resources without
        deployment-specific metadata or status information.

  Compute Engine
      o Replaced coreos-cloud with fedora-coreos-cloud in the list of public
        image projects for --standard-images flag of gcloud compute images
        list.
      o Promoted gcloud compute commitments create-license to beta.
      o Added flag --instance-update-minimal-action flag to gcloud beta
        compute instance-groups managed instance-configs
        <create|update|delete>.

  Kubernetes Engine
      o Added --master-logs and '--enable-master-metrics' flags to gcloud
        beta container clusters to enable sending master logs and metrics to
        Cloud Operations (fka Stackdriver).

    Subscribe to these release notes at
    https://groups.google.com/forum/#!forum/google-cloud-sdk-announce
    (https://groups.google.com/forum/#!forum/google-cloud-sdk-announce).

    Note: Cloud SDK introduced support for Python 3 in release 274.0.0 and
    users are strongly encouraged to migrate to Python 3. Support for Python 2
    will be deprecated on July 31, 2020. See also Python 2 Sunset
    (https://cloud.google.com/python/docs/python2-sunset/) and Using Python 3
    (https://cloud.google.com/sdk/gcloud/reference/topic/startup).

295.0.0 (2020-06-02)
  Anthos
      o Added gcloud anthos apply command to beta. This command declaratively
        applies Config Connector resource configurations.
      o Added gcloud anthos export command to beta. This command exports
        Config Connector resource configurations of existing Google Kubernetes
        Engine clusters.

  Cloud Memorystore
      o Enabled support for Redis version 5.0. Added redis_5_0 as a new
        option for --redis_version flag of gcloud redis instances create.
      o Added gcloud redis instances upgrade to upgrade a Memorystore Redis
        instance to a specified Redis version.

  Cloud Pub/Sub
      o Rename --filter flag of gcloud pubsub subscriptions create to
        --message-filter. This is done to avoid confusion with --filter flag of
        <https://cloud.google.com/sdk/gcloud/reference/topic/filters>.
      o Promoted --message-filter flag of gcloud pubsub subscriptions create
        to beta. This feature allows users to specify a filter expression on a
        Cloud Pub/Sub subscription which will automatically drop messages.

  Compute Engine
      o Promoted gcloud compute instance-groups managed describe-instance to
        beta.
      o Added --accelerator flag to gcloud beta compute instances
        create-with-container.
      o Promoted --private-ipv6-google-access-type flag of gcloud compute
        instances <create|create-with-container> to GA.
      o Promoted --private-ipv6-google-access-type flag of gcloud compute
        instance-templates <create|create-with-container> to GA.
      o Promoted --private-ipv6-google-access-type flag of gcloud compute
        networks subnets <create|update> to GA.
      o Added --interface flag to gcloud beta compute disks create.
      o Added --interface flag to gcloud beta compute instances attach-disk.
      o Added interface key to --disk key of gcloud beta compute instances
        create.

  Game Servers
      o Added --description to gcloud <alpha|beta> game servers
        <clusters/realms/deployments> update to allow updating description for
        resources.

    Subscribe to these release notes at
    https://groups.google.com/forum/#!forum/google-cloud-sdk-announce
    (https://groups.google.com/forum/#!forum/google-cloud-sdk-announce).

    Note: Cloud SDK introduced support for Python 3 in release 274.0.0 and
    users are strongly encouraged to migrate to Python 3. Support for Python 2
    will be deprecated on July 31, 2020. See also Python 2 Sunset
    (https://cloud.google.com/python/docs/python2-sunset/) and Using Python 3
    (https://cloud.google.com/sdk/gcloud/reference/topic/startup).

294.0.0 (2020-05-27)
  Breaking Changes
      o **(Secret Manager)** Modified gcloud secrets beta command group to
        use the Secret Manager v1 API. The --uri flag now formats output to
        begin with https://secretmanager.googleapis.com/v1/ instead of
        https://secretmanager.googleapis.com/v1beta1/ when used with the
        following commands:
        * gcloud beta secrets list
        * gcloud beta locations list
        * gcloud beta secrets versions list

  AI Platform
      o Added --kms-key to gcloud <alpha|beta> ai-platform jobs submit
        training to allow specifying a customer-managed encryption key for a
        training job.

  Cloud Pub/Sub
      o Promoted configurable retry-related flags in gcloud pubsub
        subscriptions create and gcloud pubsub subscriptions update to GA.

  Cloud Run
      o Change gcloud run services get-iam-policy, gcloud run services
        set-iam-policy, gcloud run services add-iam-policy-binding, and gcloud
        run services remove-iam-policy-binding to use the v1 api.

  Cloud Storage
      o Updated gsutil component to 4.51.

  Cloud Tasks
      o Promoted gcloud tasks queues create-pull-queue to beta.

  Compute Engine
      o Changed default action from RESTART to REPLACE for --update-instance
        flag of gcloud compute instance-groups managed instance-configs
        create|update.
      o Promoted --maintenance-policy of gcloud compute sole-tenancy
        node-groups create to GA.

    Subscribe to these release notes at
    https://groups.google.com/forum/#!forum/google-cloud-sdk-announce
    (https://groups.google.com/forum/#!forum/google-cloud-sdk-announce).

Do you want to continue (Y/n)?  y

Creating update staging area
10%
20%
30%
35%
40%
45%
50%
55%
60%
65%
70%
75%
80%
85%
90%
95%
100%
100%
100%
100%
100%
100%
100%
100%
100%
100%
100%
100%
100%
100%
100%
100%
100%
100%
100%
100%
100%
100%
100%
100%
100%
100%
100%
100%
100%
100%
100%
100%
100%
100%
100%
100%
100%
100%
100%
100%
100%
100%
100%
100%
100%
100%
100%
100%
100%
100%
100%
100%
100%
100%
100%
100%
100%
100%
100%
100%
100%
100%
100%
100%
100%
100%
100%
100%
100%
100%
100%
100%
100%
100%
100%
100%
100%
100%
100%
100%
100%
100%
100%
100%
100%
100%
100%
100%
100%
100%
100%
100%
100%
100%
100%
100%
100%
100%
100%
100%
100%
100%
100%
100%
100%
100%
100%
100%
100%
100%
100%
100%
100%
100%
100%
100%
100%
100%
100%
100%
100%
100%
100%
100%
100%
100%
100%
100%
100%
100%
100%
100%
100%
100%
100%
100%
100%
100%
100%
100%
100%
100%
100%
100%
100%
100%
100%
100%
100%
100%
100%
100%
100%
100%
100%
100%
100%
100%
100%
100%
100%
100%
100%
100%
100%
100%
100%
100%
100%
100%
100%
100%
100%
100%
100%
100%
100%
100%
100%
100%
100%
100%
100%
100%
100%
100%
100%
100%
100%
100%
100%
100%
100%
100%
100%
100%
100%
100%
100%
ERROR: (gcloud.components.update) [Errno 13] Permission denied: '/mnt/c/wsl/google-cloud-sdk.staging/.install/.download': [/mnt/c/wsl/google-cloud-sdk/.install/.download]

Ensure you have the permissions to access the file and that the file is not in use.
[~] $

前提

Linux 用のクイックスタート  |  Cloud SDK のドキュメント  |  Google Cloud

アーカイブをファイル システム上に展開

の箇所で、「ホームディレクトリをおすすめします」と書いてあったのでそれに従ってインストールした。

自分がWSLを使っていた時は/mnt/c/wslという、Cドライブ直下にwsl というディレクトリをホームディレクトリにしていたので、

最初はこのようなインストールをした

$ tar zxvf google-cloud-sdk-293.0.0-linux-x86_64.tar.gz google-cloud-sdk

がこれでいろいろやっているうちに、 gcloud components update ができないという上述の問題に遭遇した

試したこと

以下のことを全部やってみたけどダメだった

https://stackoverflow.com/questions/49210830/gcloud-components-update-permission-denied https://stackoverflow.com/questions/31220077/gcloud-installation-permission-issue-on-ubuntu-12-04/31247129#31247129

  1. ./google-cloud-sdkディレクトリのパーミッションを自分にする
sudo chown -R $USER ./google-cloud-sdk
  1. .config/gcloudディレクトリのパーミッションを自分にする
sudo chown -R $USER .config/gcloud
  1. sudoをつけて実行してみる
sudo gcloud components update
  1. pythonを3.6にしてみる(それまで3.7がデフォルトだった)
$sudo apt update
$sudo apt install python3.6

$python3.6 --version
Python 3.6.9

.zshrc(または.bashrc)に以下のaliasを追加

alias python=/usr/bin/python3.6

解決

gcloudを/mnt/c/wsl/ ではなく /home/$USER という、WSLのデフォルトのホームディレクトリに入れ直したら解決した

まずはgcloudを削除

Google Cloud SDK のアンインストール  |  Cloud SDK のドキュメント に従って、以下のディレクトリを削除

$gcloud info --format='value(installation.sdk_root)'
# -> /mnt/c/wsl/google-cloud-sdk
$gcloud info --format='value(config.paths.global_config_dir)'
# -> /mnt/c/wsl/.config/gcloud

.zshrcに書き込まれていた以下の記述も削除

# The next line updates PATH for the Google Cloud SDK.
if [ -f '/mnt/c/wsl/google-cloud-sdk/path.zsh.inc' ]; then . '/mnt/c/wsl/google-cloud-sdk/path.zsh.inc'; fi

# The next line enables shell command completion for gcloud.
if [ -f '/mnt/c/wsl/google-cloud-sdk/completion.zsh.inc' ]; then . '/mnt/c/wsl/google-cloud-sdk/completion.zsh.inc'; fi

tarの展開先を /home/$USER に変更

$ tar zxvf google-cloud-sdk-293.0.0-linux-x86_64.tar.gz /home/$USER/google-cloud-sdk

新しいgcloudのパス

$which gcloud
/home/ludwig125/google-cloud-sdk/bin/gcloud

こうしたら gcloud components update ができるようになった

ちなみに gcloud --quiet components update とするといちいち 【y/N】と聞かれなくなるので便利

ローカルPCでGoでserverを立ち上げたときにファイアウォールを出なくさせる

困ってたこと

Goのサンプルプログラムで作ったサーバをローカルPCで起動させたいときに、 毎回ポップアップがでて うっとうしくて困っていた。

サーバ

例えばこういうの

package main

import (
    "fmt"
    "log"
    "net/http"
)

func main() {
    helloHandler := func(w http.ResponseWriter, req *http.Request) {
        fmt.Fprintf(w, "Hello\n")
    }

    http.HandleFunc("/hello", helloHandler)
    log.Fatal(http.ListenAndServe(":8080", nil))
}

ポップアップの内容

Windowsの場合(main.goというプログラムでサーバを起動させたときの例) ※WSLで実行

image

Macの場合(sample.goというプログラムでサーバを起動させたときの例)

image

  • 「アプリケーション 〇〇へのネットワーク受信接続を許可しますか?」

解決法

ListenAndServeのport番号の前に"127.0.0.1"または"localhost"を書くと、リクエストをlocalhostからのみに制限することができる。

こうすると外部からリクエストできなくなるので、ファイアウォールがブロックしないようになる。

この部分:http.ListenAndServe("127.0.0.1:8000", nil)

修正後のプログラム

package main

import (
    "fmt"
    "log"
    "net/http"
)

func main() {
    helloHandler := func(w http.ResponseWriter, req *http.Request) {
        fmt.Fprintf(w, "Hello\n")
    }

    http.HandleFunc("/hello", helloHandler)
    log.Fatal(http.ListenAndServe("localhost:8080", nil))
}

解説

https://golang.org/pkg/net/#Dial

For TCP, UDP and IP networks, if the host is empty or a literal unspecified IP address, as in ":80", "0.0.0.0:80" or "[::]:80" for TCP and UDP, "", "0.0.0.0" or "::" for IP, the local system is assumed.

-> ポートの前のホストが空の場合(例えば :80 のような場合)は 0.0.0.0 つまりどのホストからでもアクセスを受け付ける状態だと判断される

参考:

4kディスプレイで仮想マシンのUbuntuの文字サイズを大きくする

ディスプレイをフルHDから4kディスプレイに変えた結果、 仮想マシンUbuntu(18.04.2 LTS)を立ち上げたら何もかもめちゃめちゃ小さくて使い物にならないので調べた設定

文字サイズを変更する方法

設定前

f:id:ludwig125:20200411065950p:plain

  • 隣のYahooの画面は比較用に並べたホスト側(Windows10)のブラウザ

変更

gsettings set org.gnome.desktop.interface text-scaling-factor 1.8

設定後

f:id:ludwig125:20200411070132p:plain

  • 隣のYahooの画面に対して大きくなっていることがわかる
  • 1.8の数字を変えれば自由に拡大縮小可能

参考

以下、ありがとうございました。

マウスのカーソルを大きくする

[~] $gsettings get org.gnome.desktop.interface cursor-size
24
[~] $gsettings set org.gnome.desktop.interface cursor-size 48
[~] $gsettings get org.gnome.desktop.interface cursor-size   
48
[~] $

参考: - How to Change Cursor Size on Ubuntu Desktop

他の方法

他に見つけた方法 こちらのほうが全体が大きくなって良さそう How to Enable Fractional Scaling in Ubuntu 19.04 - OMG! Ubuntu!

How To Enable HiDPI Fractional Scaling For Wayland Or X11 On Ubuntu 19.04 Disco Dingo - Linux Uprising Blog

f:id:ludwig125:20200411080552p:plain

これで200%にする 代わりに、以下は小さめにしておく

gsettings set org.gnome.desktop.interface text-scaling-factor 1.0

vscodeメモ

エディタとコンソールのフォーカスを切り替える

参考 - VSCodeでエディタ画面とターミナル間のフォーカスを楽して移動したい - Qiita - Switch focus between editor and integrated terminal in Visual Studio Code - Stack Overflow

トラブル

Undeclared name

Go言語のファイルのbuild tagsが異なると、「Undeclared name」というコンパイルエラーが表示される

参考:

自分の場合、 // +build integration とすることでintegration test時だけbuildするようにしていたファイルがあったので、 vscodeのsettings.jsonに以下を追加して再起動したら治った

toolsEnvVarsの行を追加

{
    "go.formatTool": "goimports",
    "editor.minimap.enabled": false,
    "go.useLanguageServer": true,
    "editor.fontSize": 16,
    "terminal.integrated.fontSize": 16,
    "go.toolsEnvVars": {"GOFLAGS": "-tags=integration"}
}

VMwareplayerのトラブル

トラブル

「vmxファイルが壊れています」と出てVmwarePlayerが起動しない

VMware player(正式名称はVMware Workstation Player)を15.5.1にアップデートしたあとで、なぜか既存のUbuntuが開かなくなってあせった

「VMXファイルが壊れています」と出て起動しないので冷や汗が。。。

VMware playerをアンインストールしてから最新のバージョンを入れなおしたら何事もなく開いた。

恐ろしい。

パワーオン中にエラーが発生しました

image

vmware パワーオン中にエラーが発生しました プロセスはファイルにアクセスできません 別のプロセスがファイルの一部をロックしています。

image

いつものように「.lck」ファイルがVirtualMachineのフォルダ内にあるんだろうと思ったけどない。。

そもそもこういう突然のロックが起きるときは、たいていホストのWindowsごとパソコンが突然パワーダウンされたときによく起きうる。 (子どもが電プチしたんだろうなー)ので、とりあえず、Windowsごと再起動する

→ 再挑戦すると何ごともなく起動できた