microk8s を Amazon Linux 2 にインストールしてIngressを起動するまで
snapコマンドのインストール
こちらの記事のワンライナーでsnapコマンドをインストールする。
https://www.bonusbits.com/wiki/HowTo:Install_Snap_on_Amazon_Linux_Workspace
tag_version=v0.1.0 && \
rpm_version=2.36.3-0 && \
wget https://github.com/albuild/snap/releases/download/${tag_version}/snap-confine-${rpm_version}.amzn2.x86_64.rpm -P $HOME/Downloads && \
wget https://github.com/albuild/snap/releases/download/${tag_version}/snapd-${rpm_version}.amzn2.x86_64.rpm -P $HOME/Downloads && \
sudo yum -y install $HOME/Downloads/snap-confine-${rpm_version}.amzn2.x86_64.rpm $HOME/Downloads/snapd-${rpm_version}.amzn2.x86_64.rpm && \
sudo systemctl enable --now snapd.socket
microk8sのインストールと設定
Canonicalの公式リファレンス通りに microk8s のインストールコマンドを実行する。
https://microk8s.io/docs
sudo snap install microk8s --classic --channel=1.18/stable
この時、下記のエラーが出たが数分待ってから再度実行することでインストールに成功した。
error: too early for operation, device not yet seeded or device model not acknowledged
あとは公式ドキュメント通りに設定するが、AmazonLinux2に合わせて少しコマンドを改変。
sudo usermod -a -G microk8s $USER
sudo chown -f -R $USER ~/.kube
# aliasだとkubectlのプラグイン(krewなど)が動かないので、シェルスクリプトを作る方式の方が良いかも
echo alias kubectl="'microk8s kubectl'" >> $HOME/.bashrc
sudo su - $USER
よく使うaddonを有効化
microk8s enable dns storage ingress
Ingressの起動
Kubernetesの最小限の設定ファイルを作成してIngressを起動する。
apiVersion: apps/v1
kind: Deployment
metadata:
name: nginx-deployment
labels:
app: nginx
spec:
replicas: 1
selector:
matchLabels:
app: nginx
template:
metadata:
labels:
app: nginx
spec:
containers:
- name: nginx
image: nginx:1.14.2
ports:
- containerPort: 80
apiVersion: v1
kind: Service
metadata:
name: nginx-service
spec:
type: NodePort
selector:
app: nginx
ports:
- protocol: TCP
port: 80
targetPort: 80
apiVersion: networking.k8s.io/v1beta1
kind: Ingress
metadata:
name: http-ingress
annotations:
nginx.ingress.kubernetes.io/ssl-redirect: "false"
spec:
rules:
- http:
paths:
- path: /
backend:
serviceName: nginx-service
servicePort: 80
kubectl apply -f deploy.yaml
kubectl apply -f service.yaml
kubectl apply -f ingress.yaml
これでIngressが起動してパブリックIPから接続することができた。
トラブルシューティング
kubectl logs や kubectl exec が動作しない問題
DNS解決に失敗してlogs, execが動作しない問題が発生した。
AWSのVPCの「DNSホスト名の解決」が有効になっているか確認。
有効にして5分ほど待つとプライベートDNS名が解決されるようになり動作するようになった。
Nginx Ingress ControllerはがデフォルトでHTTPSへのリダイレクトを行う
Ingressに下記のアノテーションを入れることで回避できる
annotations:
nginx.ingress.kubernetes.io/ssl-redirect: "false"
Author And Source
この問題について(microk8s を Amazon Linux 2 にインストールしてIngressを起動するまで), 我々は、より多くの情報をここで見つけました https://qiita.com/devneko/items/a400d00ae2754a02b35e著者帰属:元の著者の情報は、元のURLに含まれています。著作権は原作者に属する。
Content is automatically searched and collected through network algorithms . If there is a violation . Please contact us . We will adjust (correct author information ,or delete content ) as soon as possible .