Help us understand the problem. What is going on with this article?

GKEで限定公開クラスタ構築時のtimeoutエラー問題と解決策

はじめに

GKE(Google Kubernetes Engine)の限定公開クラスタを構築する際に、以下のような接続エラーが起こりkubectlコマンドが使えずハマったのでメモ。

$ kubectl version
Unable to connect to the server: dial tcp <Your Cluster IP>:443: i/o timeout 

やりたかったこと

GKEと連携しているAPIの制約上、外部への通信のIPを固定する必要がありました。Cloud NATと限定公開クラスタ(Nodeに外部IPが付与されない)の構築してオートスケールしてもIPを固定にすることが目的でした。

そのために限定公開クラスタをを構築する必要がありました。現在では限定公開クラスタの作成はコンソール上で可能です。ただし、IngressのLet's Encrypt連携といったkubernetesの詳細な設定はkubectlを使わないと出来ません。(←違ってたらすみません)

通常のクラスタじゃだめなの?

通常のクラスタはオートスケール時にデフォルトで自動的に新規の外部IPが付与され、クラスタが格納されているネットワークにCloud NATを構築していてもその外部IPで通信してしまいます。ノードのテンプレートを設定、適用することで新規作成ノードに外部IPを付与させないことが可能ですが、私の環境では数ヶ月に一度、適用しているテンプレートが勝手に更新される現象が発生しました。そのため、GKEでノードに外部IPが付与できないよう限定公開クラスタを構築しました。

やったこと

以下の公式ドキュメントに従って限定公開クラスタを作成した。

原因

ドキュメントのサンプルコマンドに含まれている--enable-master-authorized-networksオプションが原因でした。これのオプションは許可されたIP以外からのクラスタへの通信を防ぐオプションです。実行するコマンドのオプションぐらいは最低限把握しとけって話ですね。ちなみに--master-authorized-networks [CIDR]オプションで許可するIPを指定します。

解決策

限定公開クラスタ作成コマンドから--enable-master-authorized-networksオプションを除く。

example
$ gcloud container clusters create private-cluster-0 \
    --create-subnetwork name=my-subnet-0 \
    --enable-ip-alias \
    --enable-private-nodes \
    --master-ipv4-cidr 172.16.0.0/28 \
    --no-enable-basic-auth \
    --no-issue-client-certificate
icchi_h
都内のメディア企業で働く高専出身エンジニア
https://icchi.me
Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
Comments
No comments
Sign up for free and join this conversation.
If you already have a Qiita account
Why do not you register as a user and use Qiita more conveniently?
You need to log in to use this function. Qiita can be used more conveniently after logging in.
You seem to be reading articles frequently this month. Qiita can be used more conveniently after logging in.
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
ユーザーは見つかりませんでした