Kubertenes なんか難しいですよね。
クラスター、ポッド、サービス、ノード、レプリカセット???
macOS 上で、とりあえず動かしてみて Kubernetes の雰囲気をつかみましょう。
macOS Venture 13.1 (Apple Silicon)で確認済み。
Docker Desktop
まず、Docker Desktop for Mac をインストールしてください。
Mac に Docker Desktop をインストール
https://docs.docker.jp/docker-for-mac/install.html
インストール後、ターミナルにて以下のコマンドが使えるはずです。
% kubectl version --short Client Version: v1.25.2 Kustomize Version: v4.5.7 Unable to connect to the server: EOF
以下の Enable Kubernetes を有効化します。
有効化に成功すると Server Version が表示されるようになります。
Client Version: v1.25.2 Kustomize Version: v4.5.7 Server Version: v1.25.2
Deployment
以下のファイルを作成してください。
deployment.yml
apiVersion: apps/v1
kind: Deployment
metadata:
  name: nginx-deployment
spec:
  selector:
    matchLabels:
      app: nginx
  replicas: 3
  template:
    metadata:
      labels:
        app: nginx
    spec:
      containers:
      - name: nginx
        image: nginx:latest
        ports:
        - containerPort: 80
以下のように実行します
% kubectl apply -f deployment.yml
Replica 数が3なので、pod が3つできています。
% kubectl get pods NAME READY STATUS RESTARTS AGE nginx-deployment-6bd4f444d6-h98vq 1/1 Running 0 29s nginx-deployment-6bd4f444d6-m8dsc 1/1 Running 0 29s nginx-deployment-6bd4f444d6-sckdx 1/1 Running 0 29s
pod はできましたが、サービスがないので外部からアクセスできません。
Service
以下のファイルを作成してください。
service.yml
apiVersion: v1
kind: Service
metadata:
  name: nginx-service
spec:
  type: LoadBalancer
  selector:
    app: nginx
  ports:
  - protocol: TCP
    port: 8080
    targetPort: 80
以下のように実行します
% kubectl apply -f service.yml
nginx-service が増えました。
kubernetes というのは元からあるサービスです。
% kubectl get service NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE kubernetes ClusterIP 10.96.0.1443/TCP 24m nginx-service LoadBalancer 10.101.206.174 localhost 8080:31336/TCP 10s 
表示確認
ブラウザで、
Localhost:8080 にアクセスすると nginx のページが表示されるはずです。
Rolling Update
deployment_httpd.yml
apiVersion: apps/v1
kind: Deployment
metadata:
  name: nginx-deployment
spec:
  selector:
    matchLabels:
      app: nginx
  replicas: 3
  template:
    metadata:
      labels:
        app: nginx
    spec:
      containers:
      - name: nginx
        image: httpd:latest
        ports:
        - containerPort: 80
以下のように実行します
% kubectl apply -f deployment_httpd.yml
pod 自動的にが入れ替わっています
% kubectl get pods NAME READY STATUS RESTARTS AGE nginx-deployment-7c568c4f9c-5hzhm 1/1 Running 0 6s nginx-deployment-7c568c4f9c-8g747 1/1 Running 0 15s nginx-deployment-7c568c4f9c-dpkhz 1/1 Running 0 5s
ブラウザで、
Localhost:8080 にアクセスすると apache のページが表示されるはずです。
参考文献
メルカリ、プルリクエストをトリガーにKubernetesでテスト環境を作成するOSS「KubeTempura」を公開 – 2022/4/12
https://codezine.jp/article/detail/15810
巨大モノリスをKubernetesに移行してシングルクラスタ運用にするためにどうしたか – 2021/3/3
https://engineering.mercari.com/blog/entry/20210302-move-monolith-into-kube
  
  
  
  




コメント