Kubernetes LBソリューション: クラウドベンダーのダイナミックDNSと負荷分散は不要

Kubernetes LBソリューション: クラウドベンダーのダイナミックDNSと負荷分散は不要

[[339892]]

この記事はWeChat公式アカウント「Xintai Cloud Service」から転載し、Zhu Xiangが翻訳したものです。この記事を転載する場合は、Xintai Cloud Service公式アカウントまでご連絡ください。

マネージド Kubernetes やクラウドで実行される Kubernetes についてよく話しますが、VMware などの非クラウド環境やベアメタル サーバーでも Kubernetes を実行します。

クラウド ベンダー統合の典型的な例についても、よく耳にすることがあるでしょう。たとえば、ホストされたサービスにアクセスするためにパスワードなしの認証情報を取得できる、手動介入なしでクラウド ロード バランサーを構成できる、DNS エントリが自動的に作成される、などです。

ローカルで実行する場合、OpenStack などのサポートされているクラウド プラットフォームを使用していない限り、これらの統合機能は通常利用できません。では、ベアメタルまたは VM 上で実行しているときに、クラウド ネイティブ環境の自動化のメリットをどのように得るのでしょうか?

それでは、何を達成したいのかを段階的に見ていきましょう。

この記事で使用されているすべてのマニフェストは、github プロジェクト (https://github.com/clusterfrak-dynamics/gitops-template) で入手できます。

ギットオプス

いつものように、クラウド上かオンプレミスかに関係なく、リソースをクラスターにデプロイするには GitOps と FluxCD を使用します。詳細については、Flux に関する記事を参照してください。

開始するには、GitOps テンプレートを使用して、ニーズに合わせてカスタマイズできます。より適切な場合は、kubectl を使用してマニフェストを直接デプロイすることもできます。

コンポーネントを詳しく見てみましょう。

負荷分散

クラウド上で Kubernetes を実行する場合、通常はすぐに使用できるロードバランサーを使用できます。ベアメタルまたは VM 上で実行している場合、ロード バランサは保留状態のままになります。

したがって、まず第一に、サービス タイプ LoadBalancer が使用不可の保留状態にならないようにし、haproxy やその他の同様のサービスを手動で構成することなく、必要なときに動的なロード バランサーを提供できるようにする必要があります。

Metallb は、仮想ロード バランサ実装の 2 つのモードを提供できます。

  • GP-BGP とは
  • ARP

後者は、追加の構成なしでほぼ​​すべてのレイヤー 2 ネットワークで動作するため、よりシンプルです。

ARP モードでは、metallb の設定は非常に簡単です。使用する IP をいくつか指定するだけです。

構成マニフェストは、こちらまたは公式ドキュメントに記載されています。必要な IP アドレスを構成するには、ConfigMap を使用します。

metallb-config.yaml:

  1. APIバージョン: v1
  2. 種類: ConfigMap
  3. メタデータ:
  4. 名前空間: metallb-system
  5. 名前: config
  6. データ:
  7. 設定: |
  8. アドレスプール:
  9. -名前:デフォルト 
  10. プロトコル: レイヤー2
  11. 住所:
  12. - 10.10.39.200-10.10.39.220

Metallb コンポーネントの通信を暗号化するためのキーを生成する必要もあります。次のスクリプトを使用して Kubernetes シークレット yaml を生成できます。

  1. kubectl は、generic -n metallb-system メンバーリストを作成します--from-literal=secretkey="$(openssl rand -base64 128)" -o yaml --dry-run=client > metallb-secret.yaml  

すべてがデプロイされると、metallb-system 名前空間内に対応するポッドが表示されます。

  1. 名前準備完了 ステータス 再起動 年齢
  2. controller-57f648cb96-tvr9q 1/1 実行中 0 2d1h
  3. speaker-7rd8p 1/1 実行中 0 2d1h
  4. speaker-7t7rg 1/1 実行中 0 2d1h
  5. speaker-8qm2t 1/1 実行中 0 2d1h
  6. speaker-bks4s 1/1 実行中 0 2d1h
  7. speaker-cz6bc 1/1 実行中 0 2d1h
  8. speaker-h8b54 1/1 実行中 0 2d1h
  9. speaker-j6bss 1/1 実行中 0 2d1h
  10. speaker-phvv7 1/1 実行中 0 2d1h
  11. speaker-wdwjc 1/1 実行中 0 2d1h
  12. スピーカー-xj25p 1/1 実行中 0 2d1h

これでロードバランサーをテストする準備が整いました。これについては、次のトピックに直接進みましょう。

イングレスコントローラ

クラウド上で実行する場合、従来のレイヤー 4 ロード バランサに加えて、GCP および AWS でレイヤー 7 ロード バランサ (Application Load Balancer など) を利用できる場合もあります。しかし、機能は限られており、コスト効率が良くなく、Kubernetes クラスターからのトラフィックを管理するために Ingress コントローラーが必要になることがよくあります。

この Ingress コントローラは通常、LoadBalancer のサービス タイプを通じて外部に公開されます。これが、以前の metallb 展開が役立つ理由です。

最初に登場し、最も一般的に使用されるイングレス コントローラーの 1 つは nginx-ingress で、Helm を使用して簡単にデプロイできます。

Helm Operator で Flux を使用しているため、使用している Helm に応じて次の values.yaml 構成を参照できます。

Helm Operator で Flux を使用するため、values.yaml を取得できる Helm Release バージョンを使用します。以下に構成を示します。

  1. apiバージョン: helm.fluxcd.io/v1
  2. 種類: HelmRelease
  3. メタデータ:
  4. 名前: nginx-ingress
  5. 名前空間: nginx-ingress
  6. 仕様:
  7. リリース名: nginx-ingress
  8. チャート:
  9. リポジトリ: https://kubernetes-charts.storage.googleapis.com
  10. バージョン: 1.36.3
  11. 名前: nginx-ingress
  12. コントローラ:
  13. 公開サービス:
  14. 有効: true  
  15. 種類: "DaemonSet"  
  16. サービス:
  17. 有効: true  
  18. 外部トラフィックポリシー:ローカル 
  19. デーモンセット:
  20. ホストポート:
  21. http: 80
  22. https: 443
  23. デフォルトバックエンド:
  24. レプリカ数: 2
  25. ポッドセキュリティポリシー:
  26. 有効: true  

ここでは特別なことは何もありません。DaemonSet を使用しており、デフォルトで使用されるサービス タイプは LoadBalancer です。

新しくデプロイされたバージョンを確認すると:

  1. $ kubectl -n nginx-ingress で helmreleases.helm.fluxcd.io を取得します
  2. 名前リリース フェーズ ステータス メッセージ 年齢
  3. nginx-ingress nginx-ingress Helmリリース'nginx-ingress'のデプロイ成功しました   'nginx-ingress' 。 2日1時間
  4.  
  5. または 
  6.  
  7. $ helm -n nginx-ingress ls
  8. 名前名前空間 リビジョン 更新 ステータス チャート アプリ バージョン
  9. nginx-ingress nginx-ingress 2 2020-05-12 15:06:25.832403094 +0000 UTC デプロイ済み nginx-ingress-1.36.3 0.30.0
  10.  
  11. $ kubectl -n nginx-ingress svc を取得します
  12. 名前タイプ クラスター IP 外部 IP ポート 年齢
  13. nginx-ingress-controller ロードバランサー 10.108.113.212 10.10.39.200 80:31465/TCP、443:30976/TCP 2d1h
  14. nginx-ingress- default -backend ClusterIP 10.102.217.148 <なし> 80/TCP

サービスが LoadBalancer タイプであり、外部 IP が以前の metalb ConfigMap で定義したものであることがわかります。

デモ用の名前空間を作成し、イングレスを作成するときの動作を確認しましょう。

  1. $ kubectl名前空間デモを作成します
  2. ---  
  3. APIバージョン: アプリ/v1
  4. 種類: デプロイメント
  5. メタデータ:
  6. ラベル:
  7. アプリ: nginx
  8. 名前: nginx
  9. 名前空間: デモ
  10. 仕様:
  11. セレクタ:
  12. 一致ラベル:
  13. アプリ: nginx
  14. テンプレート:
  15. メタデータ:
  16. ラベル:
  17. アプリ: nginx
  18. 仕様:
  19. コンテナ:
  20. - 画像: nginx
  21. 名前: nginx
  22. ---  
  23. APIバージョン: v1
  24. 種類: サービス
  25. メタデータ:
  26. ラベル:
  27. アプリ: nginx
  28. 名前: nginx
  29. 名前空間: デモ
  30. 仕様:
  31. ポート:
  32. - ポート: 80
  33. プロトコル: TCP
  34. ターゲットポート: 80
  35. セレクタ:
  36. アプリ: nginx
  37. ---  
  38. APIバージョン: networking.k8s.io/v1beta1
  39. 種類: イングレス
  40. メタデータ:
  41. 注釈:
  42. kubernetes.io/ingress.class: nginx
  43. 名前: nginx
  44. 名前空間: デモ
  45. 仕様:
  46. ルール:
  47. - ホスト: nginx.test.org
  48. http:
  49. パス:
  50. - バックエンド:
  51. サービス名: nginx
  52. サービスポート: 80

nginx-ingress はデフォルトでサービスを公開できるため、ロード バランサの IP アドレスを ingress オブジェクトに報告できます。

  1. $ kubectl -n デモ イングレスを取得
  2.  
  3. 名前クラス ホスト アドレス ポート 年齢
  4. nginx <なし> nginx.test.org 10.10.39.200 80, 443 47h

LoadBalancer IP アドレスが Ingress に埋め込まれていることがわかります。これは、次のトピックで説明する外部 DNS を使用できるようにするための要件の 1 つです。

外部DNS

クラスター内のレイヤー 7 ロード バランサー (nginx-ingress) にトラフィックを渡すことができるレイヤー 4 ロード バランサー (metallb) ができたので、DNS を動的に管理するにはどうすればよいでしょうか。 Kubernetes サービスと Ingress を DNS プラットフォームと同期させるためによく使用されるツールは、external-dns (https://github.com/kubernetes-sigs/external-dns) です。

広く使用されている DNS プラットフォーム (AWS Route53 または Google Cloud DNS) のいずれかを使用している場合、これは非常に簡単に使用できます。外部 DNS は他の DNS プロバイダーもサポートしていますが、直接サポートされている DNS プロバイダーを使用していない場合、問題が発生する可能性があります。

たとえば、ローカル DNS は Active Directory によって管理されます。外部 DNS は Active Directory DNS に直接書き込むことができないため、最終的には DNS 解決が利用できなくなります。

では、ダイナミック DNS 機能を利用するにはどうすればよいでしょうか?もちろん、ワイルドカード DNS レコードを使用して、それを nginx-ingress ロードバランサー IP にポイントすることもできます (これは一方向です)。クラスターへの入力として LoadBalancer を 1 つだけ使用している場合、HTTP 以外のプロトコルや他の種類の LoadBalancer サービスを使用する場合は、一部の DNS レコードを手動で更新する必要があります。

別の解決策としては、クラスターの DNS ゾーンを指定することです。

外部 DNS はバックエンドとして CoreDNS をサポートしているため、Kubernetes で実行されている CoreDNS サーバーに Active Directory の DNS ゾーンを割り当てることができます。

予防

十分シンプルに聞こえますが、external-dns/CoreDNS セクションを詳しく調べると、外部 DNS で使用される CoreDNS でサポートされている唯一のバックエンドは Etcd であることがわかりました。したがって、Etcd クラスターが必要になります。また、readme は etcd-operator に依存していることに気付くかもしれませんが、これは現在非推奨になっており、etcd との暗号化通信もサポートされていません。

最新のガイダンスを公開しました。まず、Cilium の etcd-operator を使用して 3 ノードの etcd クラスターを構成し、TLS を生成します。

Etcd 演算子

まず、etcd のカスタム リソース定義を適用します: (https://kubernetes.io/docs/concepts/extend-kubernetes/api-extension/custom-resources/):

  1. ---  
  2. apiバージョン: apiextensions.k8s.io/v1beta1
  3. 種類: カスタムリソース定義
  4. メタデータ:
  5. 名前: etcdclusters.etcd。データベース.coreos.com
  6. 仕様:
  7. 追加のプリンター列:
  8. - JSONPath: .metadata.creationTimestamp
  9. 説明: 「CreationTimestampはサーバー時間を表すタイムスタンプです いつ 
  10. このオブジェクトが作成されました。それ 設定される保証ありません 先行 
  11. 別々の操作にわたって。クライアント この値を設定しますそれ表される
  12. RFC3339形式   UTCシステムによって入力されます読み取り専用ヌル のために 
  13. リスト。詳細情報: https://git.k8s.io/community/contributors/devel/api-conventions.md#metadata'
  14. 名前: 年齢
  15. タイプ:日付 
  16. グループ: etcd.データベース.coreos.com
  17. 名前:
  18. 種類: EtcdCluster
  19. リストの種類: EtcdClusterList
  20. 複数形: etcdclusters
  21. 短縮名:
  22. - など
  23. 単数形: etcdcluster
  24. スコープ: 名前空間
  25. バージョン: v1beta2
  26. バージョン:
  27. -名前: v1beta2
  28. 提供:本当 
  29. ストレージ: true  

次に、Etcd オペレーターをデプロイできます。

すぐにetcdポッドとシークレットを取得できます。

  1. $ kubectl -n 外部DNS ポッドを取得する
  2.  
  3. 名前準備完了 ステータス 再起動 年齢
  4. cilium-etcd-mnphzk2tjl 1/1 実行中 0 2d1h
  5. cilium-etcd-operator-55d89bbff7-cw8rc 1/1 実行中 0 2d1h
  6. cilium-etcd-tsxm5rsckj 1/1 実行中 0 2d1h
  7. cilium-etcd-wtnqt22ssg 1/1 実行中 0 2d1h
  8. etcd-operator-6c57fff6f5-g92pc 1/1 実行中 0 2d1h
  9.  
  10. $ kubectl -n 外部DNS シークレットを取得する
  11. 名前タイプ データ 年齢
  12. cilium-etcd-client-tls 不透明 3 2d1h
  13. cilium-etcd-operator-token-zmjcl kubernetes.io/サービスアカウントトークン 3 2d1h
  14. cilium-etcd-peer-tls 不透明 3 2d1h
  15. cilium-etcd-sa-token-5dhtn kubernetes.io/サービスアカウントトークン 3 2d1h
  16. 繊毛-etcd-秘密 不透明 3 2d1h
  17. cilium-etcd-server-tls 不透明 3 2d1h

コアDNS

その後、公式の Helm チャットを使用して CoreDNS をデプロイできます。

以前と同様に、リソースは *HelmRelease* (https://github.com/clusterfrak-dynamics/gitops-template/blob/master/flux/resources/external-dns/coredns.yaml) です。 values.yaml が必要な場合は、以下から取得できます。

  1. apiバージョン: helm.fluxcd.io/v1
  2. 種類: HelmRelease
  3. メタデータ:
  4. 名前: coredns
  5. 名前空間: 外部DNS
  6. 仕様:
  7. リリース名: coredns
  8. チャート:
  9. リポジトリ: https://kubernetes-charts.storage.googleapis.com
  10. バージョン: 1.10.1
  11. 名前: coredns
  12. サービスタイプ: "NodePort"  
  13. レプリカ数: 2
  14. サービスアカウント:
  15. 作成: true  
  16. rbac:
  17. pspEnable:有効 
  18. isClusterService: 
  19. 追加秘密:
  20. -名前: cilium-etcd-client-tls
  21. マウントパス: /etc/coredns/tls/etcd
  22. サーバー:
  23. - ゾーン:
  24. - ゾーン: .
  25. ポート: 53
  26. プラグイン:
  27. -名前: エラー
  28. -名前: 健康
  29. 構成ブロック: |-
  30. レームダック5s
  31. -名前:準備完了
  32. -名前: プロメテウス
  33. パラメータ: 0.0.0.0:9153
  34. -名前:転送 
  35. パラメータ: ./etc/resolv.conf
  36. -名前: キャッシュ
  37. パラメータ: 30
  38. -名前: ループ
  39. -名前: リロード
  40. -名前: ロードバランス
  41. -名前: etcd
  42. パラメータ: test.org
  43. 構成ブロック: |-
  44. スタブゾーン
  45. パス /skydns
  46. エンドポイント https://cilium-etcd-client.external-dns.svc:2379
  47. tls /etc/coredns/tls/etcd/etcd-client.crt /etc/coredns/tls/etcd/etcd-client.キー/etc/coredns/tls/etcd/etcd-client-ca.crt

重要な行は次のとおりです。

  1. 追加秘密:
  2. -名前: cilium-etcd-client-tls
  3. マウントパス: /etc/coredns/tls/etcd
  4.  
  5. そして 
  6.  
  7. -名前: etcd
  8. パラメータ: test.org
  9. 構成ブロック: |-
  10. スタブゾーン
  11. パス /skydns
  12. エンドポイント https://cilium-etcd-client.external-dns.svc:2379
  13. tls /etc/coredns/tls/etcd/etcd-client.crt /etc/coredns/tls/etcd/etcd-client.キー/etc/coredns/tls/etcd/etcd-client-ca.crt

etcd との TLS 通信に etcd シークレットをインストールして使用しています。

外部DNS

最後に、外部 DNS をパッケージ化してインストールできます。いつものように、公式の Helm チャット (https://github.com/helm/charts/tree/master/stable/external-dns) と HelmRelease (https://github.com/clusterfrak-dynamics/gitops-template/blob/master/flux/resources/external-dns/external-dns.yaml) を使用します。

  1. apiバージョン: helm.fluxcd.io/v1
  2. 種類: HelmRelease
  3. メタデータ:
  4. 名前: 外部DNS
  5. 名前空間: 外部DNS
  6. 仕様:
  7. リリース名: 外部DNS
  8. チャート:
  9. リポジトリ: https://charts.bitnami.com/bitnami
  10. バージョン: 2.22.4
  11. 名前: 外部DNS
  12. プロバイダー: coredns
  13. ポリシー: 同期
  14. コアデン:
  15. etcdエンドポイント: "https://cilium-etcd-client.external-dns.svc:2379"  
  16. TLS:
  17. 有効: true  
  18. シークレット名: "cilium-etcd-client-tls"  
  19. caファイル名: "etcd-client-ca.crt"  
  20. 証明書ファイル名: "etcd-client.crt"  
  21. キーファイル名: "etcd-client.key"  

ここでは、前と同様に、通信を保護するために etcd TLS シークレット名とパスを指定し、coredns を有効にします。

最終的な external-dns 名前空間は次のようになります。

  1. $ kubectl -n 外部DNSサービスを取得する
  2. 名前タイプ クラスター IP 外部 IP ポート 年齢
  3. cilium-etcd ClusterIP なし <なし> 2379/TCP、2380/TCP 2d2h
  4. cilium-etcd-client ClusterIP 10.105.37.25 <なし> 2379/TCP 2d2h
  5. coredns-coredns ノードポート 10.99.62.135 <なし> 53:31071/UDP、53:30396/TCP 2d1h
  6. 外部DNS ClusterIP 10.103.88.97 <なし> 7979/TCP 2d1h
  7.  
  8. $ kubectl -n 外部DNS ポッドを取得する
  9. 名前準備完了 ステータス 再起動 年齢
  10. cilium-etcd-mnphzk2tjl 1/1 実行中 0 2d2h
  11. cilium-etcd-operator-55d89bbff7-cw8rc 1/1 実行中 0 2d2h
  12. cilium-etcd-tsxm5rsckj 1/1 実行中 0 2d2h
  13. cilium-etcd-wtnqt22ssg 1/1 実行中 0 2d2h
  14. coredns-coredns-5c86dd5979-866s2 1/1 実行中 0 2d
  15. coredns-coredns-5c86dd5979-vq86w 1/1 実行中 0 2d
  16. etcd-operator-6c57fff6f5-g92pc 1/1 実行中 0 2d2h
  17. external-dns-96d9fbc64-j22pf 1/1 実行中 0 2d1h

私たちの進入を振り返ってみると:

  1. ---  
  2. APIバージョン: networking.k8s.io/v1beta1
  3. 種類: イングレス
  4. メタデータ:
  5. 注釈:
  6. kubernetes.io/ingress.class: nginx
  7. 名前: nginx
  8. 名前空間: デモ
  9. 仕様:
  10. ルール:
  11. - ホスト: nginx.test.org
  12. http:
  13. パス:
  14. - バックエンド:
  15. サービス名: nginx
  16. サービスポート: 80
  17. $ kubectl -n デモ イングレスを取得
  18.  
  19. 名前クラス ホスト アドレス ポート 年齢
  20. nginx <なし> nginx.test.org 10.10.39.200 80, 443 2d

このイングレスが外部 DNS によって受信され、etcd データベースに挿入されたかどうかを確認しましょう。

  1. $ kubectl -n 外部DNSログ -f 外部DNS-96d9fbc64-j22pf
  2. 時刻= "2020-05-12T15:23:52Z"  レベル=info msg= "キー /skydns/org/test/nginx/4781436c を Host=10.10.39.200 に追加/設定します。テキスト =\"heritage=external-dns,external-dns/owner=default,external-dns/resource=ingress/demo/nginx\", TTL=0"  

外部 DNS は動作しているようです。ここで、同じ etcd サーバーから読み取る必要があるため、CoreDNS から直接クエリを解決できるかどうかを確認しましょう。

CoreDNS は NodePort サービスをリッスンしているので、そのサービスの NodePort 上の任意のノードをクエリできます。

  1. $ kubectl -n 外部DNSサービスを取得する coredns-coredns
  2. 名前タイプ クラスター IP 外部 IP ポート 年齢
  3. coredns-coredns ノードポート 10.99.62.135 <なし> 53:31071/UDP、53:30396/TCP 2d1h

ポート 53/UDP はポート 31071/UDP にマッピングされます。ランダムなノードを選択しましょう:

  1. 名前ステータス 役割 年齢 バージョン 内部 IP 外部 IP OS イメージ カーネル バージョン コンテナ ランタイム
  2. m1 準備完了マスター 15d v1.18.2 10.10.40.10 <なし> Ubuntu 18.04.3 LTS 4.15.0-99-generic containerd://1.3.4
  3. n1 準備完了 <なし> 15d v1.18.2 10.10.40.110 <なし> Ubuntu 18.04.3 LTS 4.15.0-99-generic containerd://1.3.4
  4. n2 準備完了 <なし> 15d v1.18.2 10.10.40.120 <なし> Ubuntu 18.04.3 LTS 4.15.0-74-generic containerd://1.3.4

dig を使用して DNS クエリを実行してみてください。

  1. root@inf-k8s-epi-m5:~# dig -p 31071 nginx.test.org @10.10.40.120
  2.  
  3. ; <<>> DiG 9.11.3-1ubuntu1.11-Ubuntu <<>> -p 31071 nginx.test.org @10.10.40.120
  4. ;;グローバルオプション: +cmd
  5. ;;回答が得られました:
  6. ;; ->>HEADER<<- オペコード: QUERY、ステータス: NOERROR、ID: 61245
  7. ;;フラグ: qr aa rd;質問: 1、回答: 1、権限: 0、追加: 1
  8. ;;警告: 再帰が要求されましたが利用できません
  9.  
  10. ;; OPT擬似セクション:
  11. ; EDNS: バージョン: 0、フラグ:;宛先アドレス: 4096
  12. ; COOKIE: ef8ff2732b2dc6fd (エコー)
  13. ;;質問セクション:
  14. ;nginx.test.org。
  15.  
  16. ;;回答セクション:
  17. nginx.test.org を参照してください。 30インチ10.10.39.200
  18.  
  19. ;;クエリ時間: 2 ミリ秒
  20. ;;サーバー: 10.10.40.120#31071(10.10.40.120)
  21. ;;日時: 2020年5月14日(木) 16:26:07 UTC
  22. ;;受信したメッセージサイズ: 85

CoreDNS が MetalLB ロード バランサ IP で応答していることがわかります。

すぐに起動して実行

このガイドでは、クラウド アーキテクチャのような動的なエクスペリエンスを提供するために、CoreDNS、外部 DNS、Nginx Ingress、MetalLB を構成しました。すぐに開始したい場合は、このデモに使用されたすべてのリストなどが含まれている Flux github リポジトリを確認してください。

元記事: https://particule.io/en/blog/k8s-no-cloud/

<<:  VMware が vSphere 6 の標準サポートを終了。何をするか

>>:  シスコの従業員が退職後に456台の仮想マシンを悪意を持って削除し、1650万ドルの損失を引き起こした。

推薦する

終末の日11.11: タオバオストアのホリデープロモーションに関する興味深い話

伝説によると、今年は世界の終わりの年だそうです。今年の独身の日は11月11日です。おしゃべりはやめて...

入札が実際の成果をもたらさない理由の詳細な説明

ウェブマスターが百度に費やした努力とお金に対して報われるのは当然のことです。入札にお金を使うとき、大...

クロスリンクの詳細: クロスリンクとは何ですか?

最近は相互リンクの交換をしています。リンク交換用のグループを 75 個、リンク交換用の QQ グルー...

Forbes: エッジ コンピューティングのビジネス ユースケース 12 件

クラウド コンピューティングは長い間話題になっているため、多くのビジネス オーナーはそれが唯一のもの...

オンページ SEO チェックリスト

1. URLウェブリンクWeb ページのリンクが SEO フレンドリーかどうかを確認します。SEO ...

グーグル創業者がFTCの公聴会に出席すると報道、トップ弁護士を雇用

Google の共同創業者ラリー・ペイジとセルゲイ・ブリン(写真提供: テンセント テクノロジー)北...

インダストリー4.0の時代において、China Enterprise Dynamicsは競争力のあるフルネットワークポータルを提供します

1. 中国企業動態誌がインターネットと機械産業の発展状況を分析近年、インダストリー4.0の概念は中国...

封鎖が強化されました!米国は、中国の顧客がアメリカのクラウドコンピューティング企業のコンピューティングパワーを利用してAIを開発することを阻止するだろう

米国政府は、進行中の米国貿易戦争の一環として、人工知能の開発と訓練に使用される高度なチップの中国への...

調査と市場:世界のIaaS関連収益は2025年に429億ドルに達する

12月31日、市場調査会社Research and Marketsが発表した最新のレポートによると、...

Chery Jaguar Land Rover が SAP システムの優先クラウド サービス プロバイダーとして Amazon Web Services を選択

2022年9月27日、アマゾン ウェブ サービスは、高級自動車メーカーの奇瑞雙地車汽車有限公司(以下...

クラウドコンピューティング開発のための3カ年行動計画(2017-2019)

1. 背景クラウド コンピューティングは、情報技術の発展とサービス モデルの革新を凝縮したものです。...

Lu Cong: SEO はリソースの共有を学ばなければならない - Bugmenot

[冒頭に書きました] 正直に言うと、この方法は、有能な IT 業界の人材が必ず使うべきものです。もち...

クラウドコンピューティング導入の課題 1: 優れた信頼性の高いネットワークの構築

ソフトウェア・アズ・ア・サービス、プラットフォーム・アズ・ア・サービス、インフラストラクチャ・アズ・...