ビビリフクロウの足跡

とあるインフラSEの勉強&備忘ブログ

kata containers + firecrackerを試してみた

コンテナのセキュリティレベルを上げるためにホストOSとの分離レベルをあげようというモチベーションで開発されたプロダクトがいくつかあります。gVisorやrunV、kata containersなどがそれです。今回はその中のkata containersを検証してみました。kata cont…

StatefulSetのノード障害時の挙動と対応

前回、Kubernetesのノード障害時の挙動について記事を書きました。このときはDeploymentを使って挙動を確かめていたですが、前回の記事を見た方から「StatefulSetだと挙動が違ったはず」とのご意見を頂戴しました。 https://twitter.com/tzkb/status/1116597…

Kubernetesのノード障害時の挙動とノード復帰後の再スケジューリング

Kubernetes上のアプリケーションの可用性について調べていたところ、ノード障害時に気をつけたほうが良い点を見つけたので記事にしてみます。 Kubernetesのノード障害時にはノードのステータスがNotReadyになります。Kubernetesクラスタが以下の通り構成され…

Rancher Submarinerを動かしてみた

3/12にRancher公式ブログで発表された、「Submariner」という新しいOSSを動かしてみましたので、軽く所感を書きます。 Submarinerってなに? 複数のKubernetesクラスタのPodネットワークおよびServiceネットワークを繋げるプロダクトです。NodePortサービス…

Kubernetesの認定資格「CKA」を取得しました 〜これから受ける方へのアドバイス〜

この度、Kubernetesの認定資格「CKA(Certified Kubernetes Administrator)」を取得いたしました! 今後受ける方のお役に立てばと、受験レポートを残しておきます。 要約 〜忙しい人はここだけ読んでね〜 試験に関する説明の書かれている英語のドキュメント「…

KubernetesのHorizontalPodAutoscalerでハマった話

ふとしたきっかけで、deploymentを以下のように定義していたわけです。 apiVersion: apps/v1 kind: Deployment metadata: creationTimestamp: null labels: app: v1 name: nginx spec: replicas: 1 selector: matchLabels: app: v1 strategy: {} template: m…

OpenStack Swiftの既存リングを拡張する

OpenStack Swiftで新しくストレージノードを構築し、既存リングを拡張する機会がありましたので、その際の手順をメモしておきます。 手順 proxyノードで以下のコマンドを叩きます。 # accountリングの拡張 swift-ring-builder account.builder add r<region num>z<zone num>-<storage node ip>:6202/<device name></device></storage></zone></region>…

Portusでプライベートなコンテナイメージレジストリを立ててみる

Dockerを使う際にまずお世話になるのがパブリックなコンテナイメージレジストリサービスであるDocker Hubかと思うのですが、業務で本格的にDockerを使うとなった際にはクローズドなネットワークセグメントでしかDockerホストを実行できなかったりして、プラ…

KubeVirtを使ってみる

KubeVirtをお試ししてみたので、その際のメモを残しておきます。 KubeVirtとは KubeVirtはRed Hat社が主に開発している、CNCF MemberプロダクトのOSSです。KubeVirtを使うとKubernetes上で仮想マシンを管理することができるようになります。これによりコンテ…

Kubernetes the Hard Way on OpenStack

Kubernetesの構築をスクラッチで実践できるチュートリアルとしてKubernetes the Hard Wayがあります。来年のはじめくらいにCKAを取得したいと考えているので、本チュートリアルを自宅のOpenStack上で実施してみました。その際の実施手順と少しばかりの解説を…

virtual-kubeletをAWS Fargateで試してみた

現在開催中のJapan Container Days 1812の基調講演でvirtual-kubeletなるプロダクトを聞いたので、サクッと試してみました。 virtual-kubeletとは Kubernetesにおけるkubeletの実装の一つで、podの作成先を他のプラットフォームのAPIに依頼することができる…

Neutron LBaaSのオートヒーリング設定

少しずつ、プライベートクラウド(OpenStack)の構築時ナレッジを書いていこうと思います。本日はNeutron LBaaSについてです。 Neutron LBaaS自身、Octaviaにその役割を譲りつつあり、Deprecateなのですが、LB用VM立てるよりもHAproxyのプロセスをネットワーク…

docker-composeでNginx + Django + MySQLのWeb三階層を構成する

Kubernetesクラスタの構築方法など、インフラ観点での記事を書くことが多い本ブログですが、Kubernetesを学んでみると インフラエンジニアもアプリケーションエンジニアの気持ちがわかったほうがいい! というお気持ちになるのです。CI/CDとか考えると特に。…

Docker for WindowsでMySQLコンテナのデータを永続化する

Docker for WindowsでMySQLコンテナのデータを永続化する際、ホストディレクトリを/var/lib/mysqlに単純にマウントすると、MySQLコンテナ側で以下のようなエラーが出ます。 2018-11-18T10:02:32.761277Z 1 [ERROR] [MY-012646] [InnoDB] File ./ibdata1: 'op…

既定のアプリをコマンドで変更する方法

Windows 10の10月24日のアップデートでGUI上から一部の既定のアプリを変更することができないようになっているみたいです。これに見事にはまり、.txtファイルの既定のアプリをメモ帳から変更できなくなってしまいました。。。 Microsoft側もこのことを認識し…

OpenStackとoVirtで自宅クラウド環境を構築してみた

お久しぶりです。4か月間ぐらい全くポストしていませんでしたが生きています。 何やっていたかというと、自宅環境をOpenStackによってプライベートクラウド化しておりました。これが完成しないと諸々の検証ができないので、ブログのポストより優先していたら…

kubeadmを用いたKubernetes HAクラスタ on AWS(v.1.11対応版)

前の記事を公開してすぐにv.1.11が出てしまい、構築方法が変わったので、泣きながら再検証... 構成 OS: CentOS7 サーバ群 Master + etcd 3台(aws-k8s-master[01-03]) Node 3台(aws-k8s-node[01-03]) 前提 作業ユーザはroot 手順 NLBの作成(AWS ManagementCon…

kubeadmを用いたKubernetes HAクラスタ on AWS

AWS上でkubeadmを使い、Kubernetes HAクラスタを作ってみたときのメモです。 構成 OS: CentOS7 サーバ群 Master + etcd 3台(aws-k8s-master[01-03]) Node 3台(aws-k8s-node[01-03]) 前提 作業ユーザはroot 手順 Dockerのインストール(aws-k8s-master[01-03]…

gVisorを試してみた

Googleが開発したgVisorを試して、簡単に性能調査してみましたので、メモとして残しておきます。 環境 OS: Ubuntu 16.04 LTS vCPU: 2 (Core i3) Mem: 4G gVisorのインストール手順 Dockerのインストール sudo apt-get update sudo apt-get install -y \ apt-…

Rancher 2.0で複数のKubernetes環境を管理してみる

2018年4月末にコンテナ管理プラットフォームであるRancherのバージョン2.0がGA(General Availability)となりました。対応するコンテナオーケストレーションツールをKubernetesに絞り、オンプレ/クラウド問わずKubernetesクラスタをマネジメントするOSSに昇華…

API Aggregationを有効化してPrometheusのメトリクスからHorizonPodAutoscalerでPodのオートスケールをする

やたら長いタイトルですが… KubernetesではAPI Aggregationといって、Custom Metrics API Serverを用意しkube-apiserverと連携することでAPIを拡張することができます。例えば今回のタイトルにもある通り、Prometheusが取得したメトリクスをAPIから取得でき…

KubernetesでHorizontal Pod Autoscalerを使えるようにする

KubernetesにおけるHorizontal Pod Autoscaler(HPA)とは、Podの過負荷時(CPU使用量増、メモリ使用量増など)においてPodをオートスケーリングするリソースです。DeploymentやReplicaSetに紐付けて使います。 HPAを使ってオートスケーリングを実現するには、Po…

Haproxy Ingress Controllerの導入

OpenShiftではおなじみのroute機能を、Kubernetes上でもIngressを使って再現してみたいと思います。 まずはDNSワイルドカードの有効化から。今回は*.ha-kubernetes.internalというアドレスをhaproxyポッドに割り当てます。 DNSサーバの設定 DNSワイルドカー…

Kubernetes環境にDashboardとDNSサービスをデプロイする

前回作成したマルチマスターKubernetes環境はKubernetesの最小構成なので、今回はDashboardとDNSサービスをデプロイしたいと思います。 まずはDashboardのデプロイから。 Dashboardの設定 kube-controller-managerの設定で、ServiceAccountがAPIサーバとの通…

複数マスターを持つ高可用性Kubernetesクラスタを作る

先日、keepalivedを用いてhaproxyを冗長化する記事を上げましたが、この高可用性ロードバランサを用いて複数マスターを持つ高可用性Kubernetestクラスタを作ってみたので、その手順を公開いたします。 環境 アーキテクチャはシンプルで、kubeletやkubectlのA…

haproxyをkeepalivedで冗長化して高可用性ロードバランサを構築する

ロードバランサとして活用できるhaproxyですが、ロードバランサ冗長性確保用デーモンであるkeepalivedを使って冗長化してみたので、その手法をメモしておきます。 なんでいきなりhaproxy + keepalivedかというと、Kubernetesの冗長化においてkubeletやkubect…

今更ながらECSを試してみた

Dockerコンテナはこれまで自前でコンテナホストを建てて実行してましたが、パブリッククラウドで使うとどんな使用感なんだろう?と気になり、今更ですがAmazon ECSを使ってみました。今回は簡単にタスクを1個定義して実行してみただけですが、メモとして記事…

rktをインストールしてコンテナを起動してみた

巷でコンテナランタイムといえばまだまだDockerが有名ですが、他にもrkt、containerd、LXD、cri-oなど、いろいろあります。今回はrktをDebian 9にインストールしてコンテナを上げてみたのでその手順をメモメモです。 sidを登録 $ sudo vi /etc/apt/sources.l…

oVirt用のクラウドイメージテンプレートの作り方

またまたoVirtネタです。oVirtではcloud-initを使ってテンプレートからVMをプロビジョニングし、ネットワークなどの初期設定を行うことができます。これを実現するにはプロビジョニング元のテンプレートにcloud-initをインストールする必要があるのですが、…

oVirt環境のVMを管理するplaybookをさらす

久しぶりの投稿ですが、生きてますw 投稿しよう!と思いきれる真新しい発見なく過ごしていたので、放置気味でした…(汗 けど、細々としたことでもこまめにナレッジとして残しておいたほうが後々得すると思うので、少し更新頻度を上げたいと思います。 という…