在IBM云上尝试启动nginx的IBM云Kubernetes服务

首先

由于我今天要在IBM Cloud Kubernetes服务(IKS)上进行nginx的演练,我想整理一下这个过程。这个演练需要有一个IBM Cloud账户(免费使用)。

Nginx启动准备

创建IKS群集

スクリーンショット 2023-08-09 17.05.45.png
スクリーンショット 2023-08-09 17.05.55.png
スクリーンショット 2023-08-09 17.07.13.png
スクリーンショット 2023-08-09 17.07.20.png
スクリーンショット 2023-08-09 17.07.52.png

登录IBM云

スクリーンショット 2023-01-27 14.52.54.png

然后,可以使用以下命令指定集群。
要设置Kubernetes环境,需要使用export命令。可以通过输入ibmcloud ks cluster config命令来获取export命令。
在集群界面中获取集群ID,并在终端中进行替换输入。
请注意,可以使用集群名称代替集群ID进行指定。

ibmcloud ks cluster config --cluster <cluster-id>
<cluster-id> のコンテキストを現在の kubeconfig ファイルに追加しました。
これで、クラスターに対して「kubectl」コマンドを実行できます。 例えば、「kubectl get nodes」を実行します。
クラスターに初めてアクセスする場合、RBAC の同期中に「kubectl」コマンドが数秒間失敗することがあります。

准备Docker镜像

创建Dockerfile

使用Docker镜像来部署Nginx。
使用以下代码创建Dockerfile。

# ベースイメージを指定
FROM nginx

# ローカルの index.html をコンテナのデフォルトパスにコピー
COPY index.html /usr/share/nginx/html/

# ポートを80に変更(nginx デフォルトポート)
EXPOSE 80

# Nginx を起動
CMD ["nginx", "-g", "daemon off;"]

构建Docker镜像

在终端中进入存放Docker镜像的目录,并构建Docker镜像。

docker build .

将IBM Cloud容器注册表存储

使用以下命令登录到容器注册表以存储创建的Docker镜像。

ibmcloud cr login

然后为图像打标签并进行推送。

docker tag <local_image> jp.icr.io/<my_namespace>/<my_repo>
docker push jp.icr.io/<my_namespace>/<my_repo>

准备Kubernetes

创建Kubernetes清单文件

要在Kubernetes上启动某个东西,需要使用yaml文件进行部署。创建的yaml文件包括”deployment.yaml”和”service.yaml”。通过创建这两个yaml文件,在IKS上部署nginx,并且通过service可以从外部访问。

这次我按照以下方式创建了。

apiVersion: apps/v1
kind: Deployment
metadata:
  name: iks-deployment
spec:
  replicas: 1
  selector:
    matchLabels:
      app: iks
  template:
    metadata:
      labels:
        app: iks
    spec:
      containers:
      - name: iks-container
        image: jp.icr.io/moon-test/nginx:latest
        ports:
        - containerPort: 80
apiVersion: v1
kind: Service
metadata:
  name: iks-service
spec:
  selector:
    app: iks
  ports:
  - protocol: TCP
    port: 80
    targetPort: 80
  type: NodePort

应用 Kubernetes 的清单文件

使用以下命令将创建的清单应用到Kubernetes集群。

kubectl apply -f deployment.yaml
kubectl apply -f service.yaml

确认结果

我們將驗證已公開的IP地址。
首先,我們將使用以下命令確認其是否應用於Kubernetes。

kubectl get all
NAME                                  READY   STATUS    RESTARTS   AGE
pod/iks-deployment-6584775c6f-qwz2q   1/1     Running   0          5s

NAME                  TYPE        CLUSTER-IP       EXTERNAL-IP   PORT(S)        AGE
service/iks-service   NodePort    172.21.193.230   <none>        80:31108/TCP   4s
service/kubernetes    ClusterIP   172.21.0.1       <none>        443/TCP        37s

NAME                             READY   UP-TO-DATE   AVAILABLE   AGE
deployment.apps/iks-deployment   1/1     1            1           5s

NAME                                        DESIRED   CURRENT   READY   AGE
replicaset.apps/iks-deployment-6584775c6f   1         1         1       5s

然后,为了获取当前正在执行的工作节点的信息,输入以下命令。
与指定集群一样,您可以输入集群名称。

ibmcloud ks worker ls --cluster <cluster-id>
OK
ID                                                    パブリック IP   プライベート IP   フレーバー          状態     状況    ゾーン   バージョン   
kube-cj84sg2t05u16hk6drig-moontest-default-000001ca   161.202.97.14   10.133.175.181    u3c.2x4.encrypted   normal   Ready   tok02    1.26.7_1546  
スクリーンショット 2023-08-09 17.40.31.png

最终

我根据Dockerfile和yaml创建了一个流程,并在IBM Cloud Kubernetes Service集群上部署了nginx。下一步,我计划对nginx进行操作,并尝试将应用程序部署在上面。

广告
将在 10 秒后关闭
bannerAds