OpenShift 3.11のRelease Note抄訳
2018/10/10(日本時間では10/11未明)にOpenShift 3.11がリリースされました。
4.0に向けて着々と新機能が投入されていますが、特に注目すべきはPrometheusのGAとOperator Frameworkです。Operator FrameworkはOpenShift内部だけでなく、Red HatのプロダクトやISV製品の基盤となる仕組みなので要注目です。
元情報
OpenShift Container Platform 3.11 Release Notes
https://docs.openshift.com/container-platform/3.11/release_notes/ocp_3_11_release_notes.html
このリリースについて
このリリースはKubernetes1.11を含むOKD3.11をベースにしている。
RHEL7.4および7.5上で、CRI-O1.11およびDocker1.13を含むExtrasチャネルの最新パッケージをサポートする。
以前のバージョンからのアップグレードはドキュメント(https://docs.openshift.com/container-platform/3.11/upgrading/index.html#install-config-upgrading-index)を参照。
注) 3.10へのダウングレード
OCP3.11の初期リリースでは、3.10へのダウングレードに問題があるため行わないこと。将来のリリースで修正される予定。
https://bugzilla.redhat.com/show_bug.cgi?id=1638004
4.0で予定されている主要な変更
OCP3.11は3.xの最後のリリースで、4.0では内部アーキテクチャやインストールプロセスが大きく変更される予定であり、多くのフィーチャーが廃止される。
4.0で廃止されるフィーチャー
フィーチャー | 理由 |
Hawkular | Prometheusにリプレース |
Cassandra | Prometheusにリプレース |
Heapster | Metrics-ServerかPrometheus metrics adapterにリプレース |
Atomic Host | Red Hat CoreOSにリプレース |
System containers | Red Hat CoreOSにリプレース |
projectatomic/docker-1.13 additional search registries | CRI-OがRHCOSおよびRHELに対するデフォルトのコンテナランタイムに |
oc adm diagnostics | Operatorベースのdiagnosticsに変更 |
oc adm registry | registry operatorにリプレース |
Custom Docker Build Strategy on Builder Pods | カスタムビルドの利用を継続する場合はDockerコマンドをPodmanとBuildahに置き換える必要あり。カスタムビルドストラテジは存続するが、OCP4.0では機能が大幅に変更される。 |
Cockpit | Quayにリプレース |
Standalone Registry Installations | エンタープライズコンテナレジストリとしてQuayを提供 |
DNSmasq | CoreDNSがデフォルトに |
External etcd nodes | 4.0ではetcdは常にクラスタ上にデプロイされる |
CFME(CloudForms) OpenShift Provider and Podified CFME | Prometheusにリプレース |
Volume Provisioning via installer | Dynamic Volumeでリプレース、ないしはNFSが必要ならNFS provisionerを利用 |
Blue-Greenクラスタアップグレード | 4.0ではアップグレードが容易になることが目玉の一つ |
OCP4.0では大幅な変更が予定されているため、ドキュメントも大幅に改廃される予定。
主なアップデート(カテゴリ別)
[TP]はTechnology Preview、すなわち、プロダクション環境ではサポートされないフィーチャーです。
開発テスト環境などの非プロダクション環境では問題なくご利用いただけます。
Operator関連
[TP]Operator Lifecycle Manager(OLM)
Operator SDK
Operator SDKはコード生成とCLIによってOperatorの実装、テスト、パブリッシュを容易にするための開発ツール
- アプリケーションのビジネスロジックを迅速にOperatorに組み込むためのツールを提供
- Kubernetes APIとコミュニケーションするための定型的なコードを自動生成
- ローカル/リモートクラスタでエンドツーエンドのテスト実行を支援
- Couchbase, MongoDB, Redisやその他のOperatorで利用されている
詳細はOKDのドキュメントを参照
https://docs.okd.io/latest/operators/osdk-getting-started.html
Service Broker関連
OpenShift Automation BrokerとAnsible Galaxyの統合
Automation Broker(Ansible Broker)が利用するAnsible Playbook Bundle(APB)をAnsible Galaxyから検索して実行できるようになった。
詳細はドキュメントを参照
https://docs.openshift.com/container-platform/3.11/architecture/service_catalog/ansible_service_broker.html#arch-ansible-service-broker
インストールとアップグレード
アップグレード時の証明書有効期限チェック
openshift_certificate_expiry_warning_daysを指定すると、アップグレード時に自動生成された証明書の有効期限が指定日数より短い場合にwarningが発生する。
openshift_certificate_expiry_fail_on_warnを指定することで、有効期限が短い場合にアップグレードをfailさせることができる。
https://docs.openshift.com/container-platform/3.11/install/configuring_inventory_file.html#configuring-cluster-variables
Ansilbe2.6サポート
OCP3.11のインストールおよびOCP3.10からのアップグレードにはAnsible2.6.xが必要。
Ansible2.7はまだサポートされていない。
レジストリ認証クレデンシャルが必須に
コンテナイメージとメタデータの取得先が registry.redhat.io に変更されたため、認証が必須になった。
inventory fileで以下の設定が必須
- openshift_deployment_type == ‘openshift-enterprise’
- oreg_url == ‘registry.redhat.io’ or undefined
- oreg_auth_user および oreg_auth_password
その他の認証ありレジストリ(プライベートレジストリ)からイメージを取得することも可能。詳細はドキュメントを参照。
https://docs.openshift.com/container-platform/3.11/dev_guide/managing_images.html#private-registries
デフォルトでインストールログが取得されるようになった
Ansibleのlog_pathが設定されているので、playbookの実行は /usr/share/ansible/openshift-ansible ディレクトリから行う必要あり。もしくはlog_pathを変更すること。
ストレージ関連
[TP]Container Storage Interface
CSIを実装したストレージバックエンドが利用可能。詳細はドキュメント参照。
https://docs.openshift.com/container-platform/3.11/install_config/persistent_storage/persistent_storage_csi.html#install-config-persistent-storage-persistent-storage-csi
[TP]Local Ephemeral Storageの保護
Nodeのローカルストレージが枯渇することを防止する。
デフォルトでは無効化されている。
https://docs.openshift.com/container-platform/3.11/install_config/configuring_ephemeral.html#install-config-configuring-ephemeral-storage
[TP]Openstack ManilaによるPVのプロビジョニング
NFSシェアタイプのみ対応。
https://docs.openshift.com/container-platform/3.11/install_config/persistent_storage/persistent_storage_manila.html#persistent_storage_manila
[TP]PVリサイズ
GlusterFSの場合はStorageClassのallowVolumeExpansionをtrueにすることで、PVCのサイズを拡張するだけで対応するPVのリサイズが行われる。
ブロックストレージ(GCE-PD,AWS-EBS,Azure Disk,Cinder, Ceph RDBなど)の場合はボリューム拡張が必要で、通常はPVを参照するPodがリスタートした際にKubernetesが自動的にファイルシステムの拡張を行う。
ネットワークファイルシステム(GlusterFS,Azure Fileなど)の場合はファイルシステムの拡張が不要なので、Podをリスタートしなくても拡張できる。
https://docs.openshift.com/container-platform/3.11/dev_guide/expanding_persistent_volumes.html#expanding_persistent_volumes
スケーラビリティ関連
Cluster Limits
ガイドがアップデートされた
https://docs.openshift.com/container-platform/3.11/scaling_performance/cluster_limits.html#scaling-performance-cluster-limits
Masterに対する推奨事項
大きいクラスタ、ないしは高密度なクラスタに対しては、デフォルトQPS(query per second)の制限によってAPIサーバーが過負荷になる可能性があるため、/etc/origin/master/master-config.yaml を修正してQPSの制限を増やす。
Masterに対する推奨プラクティスはこちらを参照。
https://docs.openshift.com/container-platform/3.11/scaling_performance/host_practices.html#scaling-performance-capacity-host-practices-master
Cluster Monitoring Operatorのスケールアウト
OCPのメトリクスはcluster-monitoring-operatorが提供するバックエンド(PrometheusとGrafana)によって収集/格納され、参照可能になっている。
OCP3.11ではデフォルトでInfraNode(node-role.kubernetes.io/infra=true)にCluster Monitoring Operatorがインストールされるので、InfraNodeを複数台用意するか、inventory fileでインストール対象のNodeを指定(openshift_cluster_monitoring_operator_node_selector)して、Operatorが適切にスケールされるようにしておくこと。
https://docs.openshift.com/container-platform/3.11/scaling_performance/scaling_cluster_monitoring.html#scaling-performance-cluster-monitoring
メトリクスとロギング
Prometheus Cluster Monitoring
Prometheus Cluster Monitoringがフルサポートになり、デフォルトでクラスタにデプロイされる。
[TP]Syslog Output Plug-in For Fluentd
Fluentd Syslog Output plug-inにより、OCPノードから外部のSyslogサーバーにシステムおよびコンテナのログを送信可能。
https://docs.openshift.com/container-platform/3.11/install_config/aggregate_logging.html#sending-logs-to-external-rsyslog
Elasticsearch5およびKibana5
ElasticsearchとKibanaのバージョンアップ。
Kibanaダッシュボードの保存と複数ユーザー間での共有に対応。
Developer Experience
[TP]CLI Plug-in
ocコマンドの拡張が可能
https://docs.openshift.com/container-platform/3.11/cli_reference/extend_cli.html#cli-reference-extend-cli
Build Triggerの挙動を設定可能に
ImageChangeTriggerを一時停止(paused=true)することが可能になり、ビルド実行前にImage Streamに対する複数回の変更を許容できるようになった。
ビルドにConfigMapやSecretを受け渡す方法の追加
SCM以外にも様々な方法で受け渡せるようになった。
https://docs.openshift.com/container-platform/3.11/dev_guide/builds/build_inputs.html#dev-guide-build-inputs
Kubectl
oc client downloadからkubectlがダウンロード可能になるとのこと。
https://access.redhat.com/downloads/content/290
=>10/15時点では以前と変わらずocコマンドしかダウンロードできなかった。これから対応?
Quay
Red Hat Quayレジストリ
ホステッドサービス(quay.io)とソフトウェアの両方を提供。ジオレプリケーション、イメージスキャン、イメージロールバックなどの高度な機能を含む。
https://docs.openshift.com/container-platform/3.11/architecture/infrastructure_components/image_registry.html#architecture-infrastructure-components-image-registry
ネットワーク
[TP]KuryrによるOpenShiftとOpenStackの統合
https://docs.openshift.com/container-platform/3.11/admin_guide/kuryr.html#admin-guide-kuryr
https://docs.openshift.com/container-platform/3.11/install_config/configuring_kuryrsdn.html#install-config-configuring-kuryr-sdn
Router(HAProxy)の拡張
- HTTP/2対応(Routerでterminate)
- スレッド数変更対応
- 動的変更(Routerを再起動せずに変更を反映)
- mTLSサポート
- logging(EFK)によるログ収集
Namespace毎のHA Egress IP
Namespaceに対してactive/backup方式でのHA Egress IPを付与
https://docs.openshift.com/container-platform/3.11/admin_guide/managing_networking.html#enabling-static-ips-for-external-project-traffic
Namespace毎の全自動HA Egress IP
Namespaceに対して全自動HA方式で Egress IPを付与
Master
Pod PriorityとPreemption
Podの相対的な優先度を指定してスケジューリングやリソース枯渇時のevictionなどの順序を制御できる。
https://docs.openshift.com/container-platform/3.11/admin_guide/scheduling/priority_preemption.html#admin-guide-priority-preemption
[TP]Descheduler
クラスタへのノード追加時などにノードのリソース利用状況の偏りが発生するのを防止するために再スケジューリングを行う
https://docs.openshift.com/container-platform/3.11/admin_guide/scheduling/descheduler.html#admin-guide-descheduler
[TP]Podman
OCIコンテナやPodを実行するためのデーモンレスツール
[TP]Node Problem Detector
Nodeレベルの問題を検出し、API Serverに報告するDaemonSet
https://docs.openshift.com/container-platform/3.11/admin_guide/node_problem_detector.html#admin-guide-node-problem-detector
クラスタオートスケーリング(AWSのみ)
ワークロードに応じてアクティブなノード数を自動調整。
https://docs.openshift.com/container-platform/3.11/admin_guide/cluster-autoscaler.html#configuring-cluster-auto-scaler-AWS
Webコンソール
Nodeレベルの情報提供
ノードの管理や障害対応のために以下を提供
- ノードステータスイベント
- node-exporterとkube-state-metrics
- RBACによるメトリクスの保護
- メトリクス参照用ロール(cluster-reader)
Kubernetesオブジェクトの管理
以下のオブジェクトの参照/編集/削除が可能
- ネットワーク
- Route / Ingress
- ストレージ
- PV / PVC
- StorageClass
- 管理
- Project / Namespace
- Node
- Role / RoleBinding
- CustomResourceDefinition(CRD)
クラスタワイドのイベントストリーム
権限のある全てのProject/Namespaceのイベントをフィルタリングして参照可能
マイクロサービス
[TP]Red Hat OpenShift Service Mesh
Istioベースのサービスメッシュ層を提供。
https://docs.openshift.com/container-platform/3.11/servicemesh-install/servicemesh-install.html#product-overview
Notable Technical Changes
特に重要な変更についての技術的な解説があります。
https://docs.openshift.com/container-platform/3.11/release_notes/ocp_3_11_release_notes.html#ocp-311-notable-technical-changes
推奨されるストレージドライバの変更
よりよいパフォーマンスのため、Docker engineではoverlayfs2を、CRI-OではoverlayFSを推奨。(従来はDevice Mapperを推奨していた。)