【コンテナ化アプリケーションの設計・開発】 2.4 コンテナネットワークとストレージ

過去のレビュー:

第 1 章: [クラウドネイティブの概念とテクノロジー]

第 2 章: 2.1 コンテナ化と Docker コンテナの基礎知識

第 2 章: 2.2 Dockerfile の作成とベスト プラクティス

第 2 章: 2.3 コンテナ オーケストレーションと Kubernetes スケジューリング

2.4 コンテナネットワークとストレージ

33.jpg

コンテナ ネットワーキングとストレージは、コンテナ化されたアプリケーションにおける 2 つの非常に重要な概念です。コンテナ ネットワーキングはさまざまなコンテナの通信に役立ちますが、コンテナ ストレージによりコンテナは永続ストレージ メディアでデータの読み書きが可能になります。

Kubernetes では、コンテナ ネットワーキングは NetworkPolicy リソースと PodSecurityPolicy リソースを通じて実装されます。NetworkPolicy リソースは、コンテナーのネットワーク接続を制御するために使用されます。これにより、ネットワークへのコンテナーのアクセスが制限され、セキュリティと信頼性が提供されます。PodSecurityPolicy リソースは、コンテナーにセキュリティ保護を提供するために使用され、コンテナーのアクセス権と権限の割り当てを制御できます。

Java 開発者は、Kubernetes API クライアント ライブラリを使用して、コンテナ ネットワーキングとストレージをコード化できます。たとえば、Kubernetes API クライアント ライブラリを使用してコンテナ ネットワークを作成および管理する Java コードの例を次に示します。

public class KubernetesNetworkJavaCode {
    
    
    public static void main(String[] args) throws KubernetesClientException, IOException {
    
    

        // 创建 Kubernetes 客户端实例    
        KubernetesClient KubernetesClient = KubernetesClient.create();

        // 创建 NetworkPolicy 资源    
        V1beta1NetworkPolicy networkPolicy = new V1beta1NetworkPolicy();    
        networkPolicy.setObjectMeta(new V1ObjectMeta());    
        networkPolicy.setSpec(new V1beta1NetworkPolicySpec());    
        networkPolicy.setStatus(new V1beta1NetworkPolicyStatus());

        // 设置 NetworkPolicy 资源的配置    
        networkPolicy.spec.podSelector = new V1LabelSelector();    
        networkPolicy.spec.podSelector.matchLabels = new HashMap<>();    
        List<V1PodTemplateSpec> templates = new ArrayList<>();    
        V1PodTemplateSpec template = new V1PodTemplateSpec();    
        template.metadata = new V1ObjectMeta();    
        template.spec = new V1PodSpec();    
        templates.add(template);    
        networkPolicy.spec.podTemplates = templates;    
        networkPolicy.spec.policyTypes = new String[]{
    
    "Ingress", "Egress"};

        // 设置 NetworkPolicy 资源的状态    
        networkPolicy.status.allowedPods = new ArrayList<>();    
        networkPolicy.status.allowedPods.forEach(pod -> {
    
        
            PodStatus status = new PodStatus();    
            status.podIP = pod.getPodIP();    
            status.Ready = true;    
            status.ContainersReady = true;    
            status.Conditions = new HashMap<>();    
            status.Conditions.put("Ready", new V1PodCondition());    
            networkPolicy.status.allowedPods.add(status);    
        });

        // 创建 NetworkPolicy 资源    
        V1beta1NetworkPolicy createdNetworkPolicy = KubernetesClient.create(networkPolicy).get();

        // 打印 NetworkPolicy 资源的状态    
        System.out.println("NetworkPolicy 资源的状态为:" + createdNetworkPolicy.status.toString());    
    }    
}

上記のコードでは、最初に KubernetesClient インスタンスを作成し、次に NetworkPolicy リソースを作成しました。NetworkPolicy リソースの構成を使用して、コンテナー ネットワークのルールを指定し、NetworkPolicy リソースの状態を設定します。最後に、KubernetesClient を使用して NetworkPolicy リソースを作成し、createdNetworkPolicy オブジェクトに保存しました。

あるいは、Java 開発者は、Kubernetes API クライアント ライブラリを使用して、Docker コンテナ ストレージなどのコンテナ ストレージを作成および管理できます。Docker コンテナ ストレージを使用すると、開発者は Docker イメージを Kubernetes クラスタに保存し、Docker コンテナを使用してアクセスできます。Java を使用してコンテナー ストレージ コードを作成すると、コンテナー データの永続的なストレージを実現し、データ アクセス サービスを提供できます。

おすすめ

転載: blog.csdn.net/weixin_44427181/article/details/130553479