LoginSignup
1
1

k8sをオンプレで構築する場合

Last updated at Posted at 2023-11-22

概要

k8sを一つのEC2(オンプレ)に構築する場合(会社の開発環境構築など)

  • 例) Aさんはdev1.xxx、Bさんはdev2.xxxを利用してください

簡単手順

  1. golangDockerk8sをダウンロードし、手順に沿ってインストールすること
    • cri-dockerdをインストールすること
    • ダウンロード直後にノードがNotReadyとk8sの状況でDNSが動作されてないのでCalicoをインストールすること
    • kubeadmを初期化する段階で--cri-socket=unix:///var/run/cri-dockerd.sockのオプションが必要になる
  2. nginx-ingressをダウンロードする、設定を行う
  3. nginx-ingressをダウンロードしたときに、nginx-ingress-controllerEXTERNAL-IPpending状況になる
    NAME                                 TYPE           CLUSTER-IP       EXTERNAL-IP   PORT(S)                      AGE
    ingress-nginx-controller             LoadBalancer   X.X.X.X          <pending>     80:X/TCP,443:X/TCP           4h59m
    
  4. metallbをダウンロードする、MetallbのLayer2の設定を行う
  5. 設定するときに、昔のバージョンは、IPアドレスの設定をConfigMapですると記載されているが、バージョンアップで変わったので新しく対応する必要ある
  6. layer2モードのため、IPAddressPoolを作成し、適応する
    layer2Conf.yaml
    apiVersion: metallb.io/v1beta1
    kind: IPAddressPool
    metadata:
      name: first-pool
      namespace: metallb-system
    spec:
      addresses:
        - X.X.X.1-X.X.X.2 # こちらのIPアドレスはプライベートIPアドレスの範囲を設定すること
    
  7. 上記を設定するようになると、EC2にセカンダリプライベート IPv4 アドレスを追加する必要がある(ひとつずつ追加する)
  8. 上記のIPの設定を行うと、EXTERNAL-IPが表示される
  9. EC2のユーザを作成(sudo useradd -G wheel <username>)し、作成したユーザに交換すること(下記の手順からは各自のユーザから対応です)
  10. 上記で作成したユーザでKubeConfigを適応すること
     mkdir -p $HOME/.kube
     sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config
     sudo chown $(id -u):$(id -g) $HOME/.kube/config
    
  11. ユーザの権限や設定(Namespaceなど)を各自で設定すること
  12. DeploymentServiceを作成する(k8s公式ホームページを参考)
  13. Ingressを作成する、HostALBと連結する
    • Ingressのホスト欄はRoute53で設定する値と合わせること

    この段階で、Aさんはdev1.xxx、Bさんはdev2.xxxを利用してくださいなどの要件に対応できます

  14. ALBのターゲットグループはIPを指定EXTERNAL-IPを設定すること
  15. EC2のユーザ作成し、Ingressのところを人によって変える
  16. Route53や、ACMの設定もアスタ(*)を活用すること

ALBの設定で、HTTPポートで入った場合、HTTPSでリダイレクトする

HTTPS://#{host}:443/#{path}?#{query}

参考にした記事

各自のNsを設定できるようにするKrew


追記

  1. calicoインストール手順としてTaintを削除すること
    kubectl taint nodes --all node-role.kubernetes.io/control-plane-
    kubectl taint nodes --all node-role.kubernetes.io/master-
    
  2. ingress 適応するときに、うまくできてない場合、ログを確認すること
    kubectl logs ingress-nginx-controller-xxxxx-xxxxx   -n ingress-nginx
    
  3. golang最新版をインストールすると、ダメみたい
1
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
1