instruction: Create a Dockerfile for cluster
output: ```dockerfile
  from a Pod (EN)
  Run Jobs (EN)
  Running Automated Tasks with a CronJob (EN)
  Coarse Parallel Processing Using a Work Queue (EN)
  Fine Parallel Processing Using a Work Queue (EN)
  Indexed Job for Parallel Processing with Static Work Assignment (EN)
  Job with Pod-to-Pod Communication (EN)
  Parallel Processing using Expansions (EN)
  Handling retriable and non-retriable pod failures with Pod failure policy (EN)
  Access Applications in a Cluster (EN)
  Deploy and Access the Kubernetes Dashboard (EN)
  Accessing Clusters (EN)
  Configure Access to Multiple Clusters (EN)
  Use Port Forwarding to Access Applications in a Cluster (EN)
  Use a Service to Access an Application in a Cluster (EN)
  Connect a Frontend to a Backend Using Services (EN)
  Create an External Load Balancer (EN)
  List All Container Images Running in a Cluster (EN)
  Set up Ingress on Minikube with the NGINX Ingress Controller (EN)
  Communicate Between Containers in the Same Pod Using a Shared Volume (EN)
  Configure DNS for a Cluster (EN)
  Access Services Running on Clusters (EN)
  Extend Kubernetes (EN)
  Configure the Aggregation Layer (EN)
  Use Custom Resources (EN)
  Extend the Kubernetes API with CustomResourceDefinitions (EN)
  Versions in CustomResourceDefinitions (EN)
  Set up an Extension API Server (EN)
  Configure Multiple Schedulers (EN)
  Use an HTTP Proxy to Access the Kubernetes API (EN)
  Use a SOCKS5 Proxy to Access the Kubernetes API (EN)
  Set up Konnectivity service (EN)
  TLS (EN)
  Issue a Certificate for a Kubernetes API Client Using A CertificateSigningRequest (EN)
  Configure Certificate Rotation for the Kubelet (EN)
  Manage TLS Certificates in a Cluster (EN)
  Manual Rotation of CA Certificates (EN)
  Manage Cluster Daemons (EN)
  Building a Basic DaemonSet (EN)
  Perform a Rolling Update on a DaemonSet (EN)
  Perform a Rollback on a DaemonSet (EN)
  Running Pods on Only Some Nodes (EN)
  Networking (EN)
  Adding entries to Pod /etc/hosts with HostAliases (EN)
  Extend Service IP Ranges (EN)
  Kubernetes Default Service CIDR Reconfiguration (EN)
  Validate IPv4/IPv6 dual-stack (EN)
  Extend kubectl with plugins (EN)
  Manage HugePages (EN)
  Schedule GPUs (EN)
  Tutorials
  Hello Minikube (EN)
  Học kiến thức cơ bản về Kubernetes
  Tạo một Cluster
  Sử dụng Minikube để tạo một Cluster
  Hướng dẫn tương tác - Tạo một Cluster
  Triển khai một ứng dụng
  Sử dụng kubectl để triển khai ứng dụng
  Hướng dẫn tương tác - Triển khai một ứng dụng
  Khám phá ứng dụng
  Khám Phá Pods Và Nodes
  Hướng dẫn tương tác - Khám phá ứng dụng
  Expose Your App Publicly (EN)
  Using a Service to Expose Your App (EN)
  Scale Your App (EN)
  Running Multiple Instances of Your App (EN)
  Update Your App (EN)
  Performing a Rolling Update (EN)
  Configuration (EN)
  Updating Configuration via a ConfigMap (EN)
  Configuring Redis using a ConfigMap (EN)
  Configuring swap memory on Kubernetes nodes (EN)
  Adopting Sidecar Containers (EN)
  Security (EN)
  Apply Pod Security Standards at the Cluster Level (EN)
  Apply Pod Security Standards at the Namespace Level (EN)
  Restrict a Container's Access to Resources with AppArmor (EN)
  Restrict a Container's Syscalls with seccomp (EN)
  Stateless Applications (EN)
  Exposing an External IP Address to Access an Application in a Cluster (EN)
  Example: Deploying PHP Guestbook application with Redis (EN)
  Stateful Applications (EN)
  StatefulSet Basics (EN)
  Example: Deploying WordPress and MySQL with Persistent Volumes (EN)
  Example: Deploying Cassandra with a StatefulSet (EN)
  Running ZooKeeper, A Distributed System Coordinator (EN)
  Cluster Management (EN)
  Running Kubelet in Standalone Mode (EN)
  Install Drivers and Allocate Devices with DRA (EN)
  Namespaces Walkthrough (EN)
  Services (EN)
  Connecting Applications with Services (EN)
  Using Source IP (EN)
  Explore Termination Behavior for Pods And Their Endpoints (EN)
  Tài liệu tham khảo
  Thuật ngữ chuẩn hóa
  API Overview (EN)
  Declarative API Validation (EN)
  Kubernetes API Concepts (EN)
  Server-Side Apply (EN)
  Client Libraries (EN)
  Common Expression Language in Kubernetes (EN)
  Kubernetes Deprecation Policy (EN)
  Deprecated API Migration Guide (EN)
  Kubernetes API health endpoints (EN)
  API Access Control (EN)
  Authenticating (EN)
  Authenticating with Bootstrap Tokens (EN)
  Authorization (EN)
  Using RBAC Authorization (EN)
  Using Node Authorization (EN)
  Webhook Mode (EN)
  Using ABAC Authorization (EN)
  Admission Control (EN)
  Dynamic Admission Control (EN)
  Managing Service Accounts (EN)
  Certificates and Certificate Signing Requests (EN)
  Mapping PodSecurityPolicies to Pod Security Standards (EN)
  Kubelet authentication/authorization (EN)
  TLS bootstrapping (EN)
  Mutating Admission Policy (EN)
  Validating Admission Policy (EN)
  Well-Known Labels, Annotations and Taints (EN)
  Audit Annotations (EN)
  Kubernetes API (EN)
  Workload Resources (EN)
  Pod (EN)
  Binding (EN)
  PodTemplate (EN)
  ReplicationController (EN)
  ReplicaSet (EN)
  Deployment (EN)
  StatefulSet (EN)
  ControllerRevision (EN)
  DaemonSet (EN)
  Job (EN)
  CronJob (EN)
  HorizontalPodAutoscaler (EN)
  HorizontalPodAutoscaler (EN)
  PriorityClass (EN)
  DeviceTaintRule v1alpha3 (EN)
  ResourceClaim v1beta2 (EN)
  ResourceClaimTemplate v1beta2 (EN)
  ResourceSlice v1beta2 (EN)
  Service Resources (EN)
  Service (EN)
  Endpoints (EN)
  EndpointSlice (EN)
  Ingress (EN)
  IngressClass (EN)
  Config and Storage Resources (EN)
  ConfigMap (EN)
  Secret (EN)
  CSIDriver (EN)
  CSINode (EN)
  CSIStorageCapacity (EN)
  PersistentVolumeClaim (EN)
  PersistentVolume (EN)
  StorageClass (EN)
  StorageVersionMigration v1alpha1 (EN)
  Volume (EN)
  VolumeAttachment (EN)
  VolumeAttributesClass v1beta1 (EN)
  Authentication Resources (EN)
  ServiceAccount (EN)
  TokenRequest (EN)
  TokenReview (EN)
  CertificateSigningRequest (EN)
  ClusterTrustBundle v1beta1 (EN)
  SelfSubjectReview (EN)
  Authorization Resources (EN)
  LocalSubjectAccessReview (EN)
  SelfSubjectAccessReview (EN)
  SelfSubjectRulesReview (EN)
  SubjectAccessReview (EN)
  ClusterRole (EN)
  ClusterRoleBinding (EN)
  Role (EN)
  RoleBinding (EN)
  Policy Resources (EN)
  FlowSchema (EN)
  LimitRange (EN)
  ResourceQuota (EN)
  NetworkPolicy (EN)
  PodDisruptionBudget (EN)
  PriorityLevelConfiguration (EN)
  ValidatingAdmissionPolicy (EN)
  ValidatingAdmissionPolicyBinding (EN)
  MutatingAdmissionPolicy v1alpha1 (EN)
  MutatingAdmissionPolicyBinding v1alpha1 (EN)
  Extend Resources (EN)
  CustomResourceDefinition (EN)
  DeviceClass v1beta2 (EN)
  MutatingWebhookConfiguration (EN)
  ValidatingWebhookConfiguration (EN)
  Cluster Resources (EN)
  APIService (EN)
  ComponentStatus (EN)
  Event (EN)
  IPAddress (EN)
  Lease (EN)
  LeaseCandidate v1beta1 (EN)
  Namespace (EN)
  Node (EN)
  RuntimeClass (EN)
  ServiceCIDR (EN)
  Common Definitions (EN)
  DeleteOptions (EN)
  LabelSelector (EN)
  ListMeta (EN)
  LocalObjectReference (EN)
  NodeSelectorRequirement (EN)
  ObjectFieldSelector (EN)
  ObjectMeta (EN)
  ObjectReference (EN)
  Patch (EN)
  Quantity (EN)
  ResourceFieldSelector (EN)
  Status (EN)
  TypedLocalObjectReference (EN)
  Common Parameters (EN)
  Instrumentation (EN)
  Service Level Indicator Metrics (EN)
  CRI Pod & Container Metrics (EN)
  Node metrics data (EN)
  Kubernetes z-pages (EN)
  Kubernetes Metrics Reference (EN)
  Kubernetes Issues and Security (EN)
  Kubernetes Issue Tracker (EN)
  Kubernetes Security and Disclosure Information (EN)
  CVE feed (EN)
  Node Reference Information (EN)
  Kubelet Checkpoint API (EN)
  Linux Kernel Version Requirements (EN)
  Articles on dockershim Removal and on Using CRI-compatible Runtimes (EN)
  Node Labels Populated By The Kubelet (EN)
  Local Files And Paths Used By The Kubelet (EN)
  Kubelet Configuration Directory Merging (EN)
  Kubelet Device Manager API Versions (EN)
  Kubelet Systemd Watchdog (EN)
  Node Status (EN)
  Seccomp and Kubernetes (EN)
  Networking Reference (EN)
  Protocols for Services (EN)
  Ports and Protocols (EN)
  Virtual IPs and Service Proxies (EN)
  Setup tools (EN)
  Kubeadm (EN)
  kubeadm init (EN)
  kubeadm join (EN)
  kubeadm upgrade (EN)
  kubeadm upgrade phases (EN)
  kubeadm config (EN)
  kubeadm reset (EN)
  kubeadm token (EN)
  kubeadm version (EN)
  kubeadm alpha (EN)
  kubeadm certs (EN)
  kubeadm init phase (EN)
  kubeadm join phase (EN)
  kubeadm kubeconfig (EN)
  kubeadm reset phase (EN)
  Implementation details (EN)
  Command line tool (kubectl) (EN)
  Introduction to kubectl (EN)
  kubectl Quick Reference (EN)
  kubectl reference (EN)
  kubectl (EN)
  kubectl annotate (EN)
  kubectl api-resources (EN)
  kubectl api-versions (EN)
  kubectl apply (EN)
  kubectl apply edit-last-applied (EN)
  kubectl apply set-last-applied (EN)
  kubectl apply view-last-applied (EN)
  kubectl attach (EN)
  kubectl auth (EN)
  kubectl auth can-i (EN)
  kubectl auth reconcile (EN)
  kubectl auth whoami (EN)
  kubectl autoscale (EN)
  kubectl certificate (EN)
  kubectl certificate approve (EN)
  kubectl certificate deny (EN)
  kubectl cluster-info (EN)
  kubectl cluster-info dump (EN)
  kubectl completion (EN)
  kubectl config (EN)
  kubectl config current-context (EN)
  kubectl config delete-cluster (EN)
  kubectl config delete-context (EN)
  kubectl config delete-user (EN)
  kubectl config get-clusters (EN)
  kubectl config get-contexts (EN)
  kubectl config get-users (EN)
  kubectl config rename-context (EN)
  kubectl config set (EN)
  kubectl config set-cluster (EN)
  kubectl config set-context (EN)
  kubectl config set-credentials (EN)
  kubectl config unset (EN)
  kubectl config use-context (EN)
  kubectl config view (EN)
  kubectl cordon (EN)
  kubectl cp (EN)
  kubectl create (EN)
  kubectl create clusterrole (EN)
  kubectl create clusterrolebinding (EN)
  kubectl create configmap (EN)
  kubectl create cronjob (EN)
  kubectl create deployment (EN)
  kubectl create ingress (EN)
  kubectl create job (EN)
  kubectl create namespace (EN)
  kubectl create poddisruptionbudget (EN)
  kubectl create priorityclass (EN)
  kubectl create quota (EN)
  kubectl create role (EN)
  kubectl create rolebinding (EN)
  kubectl create secret (EN)
  kubectl create secret docker-registry (EN)
  kubectl create secret generic (EN)
  kubectl create secret tls (EN)
  kubectl create service (EN)
  kubectl create service clusterip (EN)
  kubectl create service externalname (EN)
  kubectl create service loadbalancer (EN)
  kubectl create service nodeport (EN)
  kubectl create serviceaccount (EN)
  kubectl create token (EN)
  kubectl debug (EN)
  kubectl delete (EN)
  kubectl describe (EN)
  kubectl diff (EN)
  kubectl drain (EN)
  kubectl edit (EN)
  kubectl events (EN)
  kubectl exec (EN)
  kubectl explain (EN)
  kubectl expose (EN)
  kubectl get (EN)
  kubectl kustomize (EN)
  kubectl label (EN)
  kubectl logs (EN)
  kubectl options (EN)
  kubectl patch (EN)
  kubectl plugin (EN)
  kubectl plugin list (EN)
  kubectl port-forward (EN)
  kubectl proxy (EN)
  kubectl replace (EN)
  kubectl rollout (EN)
  kubectl rollout history (EN)
  kubectl rollout pause (EN)
  kubectl rollout restart (EN)
  kubectl rollout resume (EN)
  kubectl rollout status (EN)
  kubectl rollout undo (EN)
  kubectl run (EN)
  kubectl scale (EN)
  kubectl set (EN)
  kubectl set env (EN)
  kubectl set image (EN)
  kubectl set resources (EN)
  kubectl set selector (EN)
  kubectl set serviceaccount (EN)
  kubectl set subject (EN)
  kubectl taint (EN)
  kubectl top (EN)
  kubectl top node (EN)
  kubectl top pod (EN)
  kubectl uncordon (EN)
  kubectl version (EN)
  kubectl wait (EN)
  kubectl Commands (EN)
  kubectl (EN)
  JSONPath Support (EN)
  kubectl for Docker Users (EN)
  kubectl Usage Conventions (EN)
  Kubectl user preferences (kuberc) (EN)
  Component tools (EN)
  Feature Gates (EN)
  Feature Gates (removed) (EN)
  kubelet (EN)
  kube-apiserver (EN)
  kube-controller-manager (EN)
  kube-proxy (EN)
  kube-scheduler (EN)
  Debug cluster (EN)
  Flow control (EN)
  Configuration APIs (EN)
  Client Authentication (v1) (EN)
  Client Authentication (v1beta1) (EN)
  Event Rate Limit Configuration (v1alpha1) (EN)
  Image Policy API (v1alpha1) (EN)
  kube-apiserver Admission (v1) (EN)
  kube-apiserver Audit Configuration (v1) (EN)
  kube-apiserver Configuration (v1) (EN)
  kube-apiserver Configuration (v1alpha1) (EN)
  kube-apiserver Configuration (v1beta1) (EN)
  kube-controller-manager Configuration (v1alpha1) (EN)
  kube-proxy Configuration (v1alpha1) (EN)
  kube-scheduler Configuration (v1) (EN)
  kubeadm Configuration (v1beta3) (EN)
  kubeadm Configuration (v1beta4) (EN)
  kubeconfig (v1) (EN)
  Kubelet Configuration (v1) (EN)
  Kubelet Configuration (v1alpha1) (EN)
  Kubelet Configuration (v1beta1) (EN)
  Kubelet CredentialProvider (v1) (EN)
  kuberc (v1alpha1) (EN)
  WebhookAdmission Configuration (v1) (EN)
  External APIs (EN)
  Kubernetes Custom Metrics (v1beta2) (EN)
  Kubernetes External Metrics (v1beta1) (EN)
  Kubernetes Metrics (v1beta1) (EN)
  Scheduling (EN)
  Scheduler Configuration (EN)
  Scheduling Policies (EN)
  Other Tools (EN)
  kubectl Cheat Sheet
  Đóng góp
  Contribute to Kubernetes Documentation (EN)
  Contributing to Kubernetes blogs (EN)
  Submitting articles to Kubernetes blogs (EN)
  Blog guidelines (EN)
  Blog article mirroring (EN)
  Post-release communications (EN)
  Helping as a blog writing buddy (EN)
  Suggesting content improvements (EN)
  Contributing new content (EN)
  Opening a pull request (EN)
  Documenting for a release (EN)
  Case studies (EN)
  Reviewing changes (EN)
  Reviewing pull requests (EN)
  For approvers and reviewers (EN)
  Localizing Kubernetes documentation (EN)
  Participating in SIG Docs (EN)
  Roles and responsibilities (EN)
  Issue Wranglers (EN)
  PR wranglers (EN)
  Documentation style overview (EN)
  Content guide (EN)
  Style guide (EN)
  Diagram guide (EN)
  Writing a new topic (EN)
  Page content types (EN)
  Content organization (EN)
  Custom Hugo Shortcodes (EN)
  Updating Reference Documentation (EN)
  Quickstart (EN)
  Contributing to the Upstream Kubernetes Code (EN)
  Generating Reference Documentation for the Kubernetes API (EN)
  Generating Reference Documentation for kubectl Commands (EN)
  Generating Reference Documentation for Metrics (EN)
  Generating Reference Pages for Kubernetes Components and Tools (EN)
   (EN)
  Advanced contributing (EN)
  Viewing Site Analytics (EN)
  Docs smoke test page (EN)Tài liệuBắt đầu với KubernetesMôi trường ProductionMôi trường ProductionTạo một cụm Kubernetes chất lượng productionMột cụm Kubernetes chất lượng production yêu cầu có sự lên kế hoạch và chuẩn bị.
  Nếu cụm Kubernetes của bạn dùng để chạy các workload quan trọng, nó phải được cấu hình để có khả năng phục hồi.
  Trang này giải thích các bước bạn có thể thực hiện để thiết lập một cụm sẵn sàng cho production,
  hoặc để thúc đẩy một cụm hiện có cho việc sử dụng production.
  Nếu bạn đã quen thuộc với thiết lập production và muốn những liên kết, hãy bỏ qua đến
  Tiếp theo là gì.Những cân nhắc productionThông thường, một môi trường cụm Kubernetes production có nhiều yêu cầu hơn một
  môi trường Kubernetes cho học tập, phát triển hoặc thử nghiệm cá nhân. Một môi trường production
  có thể yêu cầu truy cập an toàn bởi nhiều người dùng, tính khả dụng nhất quán, và các nguồn lực để
  thích ứng với nhu cầu thay đổi.Khi bạn quyết định nơi bạn muốn triển khai môi trường Kubernetes production
  (on-premise hoặc trên cloud) và lượng công việc quản lý bạn muốn đảm nhận hoặc trao cho
  người khác, hãy xem xét các yêu cầu của bạn đối với cụm Kubernetes bị ảnh hưởng như thế nào
  bởi các vấn đề sau:Tính sẵn sàng: Một môi trường học tập Kubernetes trên một máy
  có một điểm lỗi duy nhất. Tạo một cụm có tính sẵn sàng cao có nghĩa là phải cân nhắc:Tách control plane khỏi các worker node.Nhân bản các thành phần control plane trên nhiều node.Cân bằng tải lưu lượng tới API server của cụm.Có đủ các worker node sẵn sàng, hoặc có khả năng trở nên khả dụng một cách nhanh chóng khi workload thay đổi.Quy mô: Nếu bạn mong muốn môi trường Kubernetes production của mình đáp ứng được một lượng
  yêu cầu ổn định, bạn có thể thiết lập khả năng đáp ứng bạn cần và hoàn thành. Tuy nhiên,
  nếu bạn mong muốn đáp ứng nhu cầu tăng theo thời gian hoặc thay đổi đáng kể dựa trên những yếu tố
  như mùa hoặc sự kiện đặc biệt, bạn cần lập kế hoạch về việc mở rộng quy mô để giảm bớt áp lực
  tăng lên từ nhiều yêu cầu hơn đối với control plane và các worker node hoặc thu hẹp quy mô để tối ưu
  tài nguyên không sử dụng.Quản lý bảo mật và truy cập: Bạn có đầy đủ các đặc quyền admin trên cụm
  Kubernetes học tập của mình. Nhưng các cụm chia sẻ với nhiều workload quan trọng, và
  nhiều hơn một hoặc hai người dùng, yêu cầu một cách tiếp cận tinh tế hơn đối với những ai và
  những gì có thể truy cập vào các tài nguyên cụm. Bạn có thể sử dụng kiểm soát truy cập dựa trên vai trò
  (RBAC) và các kỹ thuật bảo mật khác
  để chắc chắn rằng người dùng và workloads có thể truy cập được tới tài nguyên họ cần
  trong khi vẫn đảm bảo bảo mật cho worload và cụm máy chủ.
  Bạn có thể đặt giới hạn lên tài nguyên mà người dùng và workload có thể truy cập
  bằng cách quản lý các chính sách và
  tài nguyên container.Trước khi dựng một môi trường Kubernetes production, cân nhắc
  chuyển giao một phần hoặc toàn bộ công việc này cho các nhà cung cấp giải pháp Cloud
  Turnkey Cloud Solutions
  hoặc các đối tác Kubernetes Partners.
  Các tùy chọn gồm:Serverless: Chỉ cần chạy workload trên thiết bị của bên thứ ba mà không cần quản lý
  toàn bộ cụm. Bạn sẽ bị tính phí cho những thứ như mức sử dụng CPU, bộ nhớ, và
  các yêu cầu ổ đĩa.Control plane được quản lý: Hãy để nhà cung cấp quản lý quy mô và tính sẵn sàng
  của control plane trong cụm, cũng như xử lý các bản vá và cập nhật.Worker node được quản lý: Cấu hình nhóm các node để đáp ứng nhu cầu của bạn,
  sau đó nhà cung cấp sẽ đảm bảo rằng những node đó khả dụng và sẵn sàng để thực hiện
  các cập nhật khi cần thiết.Sự tích hợp: Có những nhà cung cấp tích hợp Kubernetes với các dịch vụ khác
  mà bạn có thể cần, ví dụ kho lưu trữ, container registries, các phương thức xác thực,
  và những công cụ phát triển.Liệu bạn tự dựng một cụm Kubernetes production hay làm điều đó với
  các đối tác, xem những phần dưới đây để đánh giá nhu cầu liên quan tới
  control plane, các worker node, truy cập người dùng, và
  các tài nguyên workload cho cụm của bạn.Thiết lập cụm productionTrong một cụm Kubernetes có chất lượng production, control plane quản lý
  cụm từ các dịch vụ có thể được trải đều trên nhiều máy tính
  theo những cách khác nhau. Tuy nhiên, mỗi worker node đại diện cho một thực thể duy nhất
  được cấu hình để chạy Kubernetes pod.Control plane trên productionCụm Kubernetes đơn giản nhất có toàn bộ dịch vụ control plane và worker node
  chạy trên cùng một máy. Bạn có thể phát triển môi trường đó bằng cách thêm
  các worker node, như được phản ánh trong sơ đồ được minh họa trong
  Các thành phần Kubernetes.
  Nếu cụm có nghĩa là có sẵn trong một khoảng thời gian ngắn hoặc có thể
  bị loại bỏ nếu có sự cố nghiêm trọng, điều này có thể đáp ứng nhu cầu của bạn.Tuy nhiên, nếu bạn cần một cụm vĩnh viễn, có mức độ sẵn cao hơn, bạn nên
  xem xét các cách mở rộng control plane. Theo thiết kế, dịch vụ control plane
  chạy trên một máy tính đơn là không có tính sẵn sàng cao.
  Nếu việc giữ cụm được dựng lên và chạy
  và đảm bảo rằng nó có thể được sửa chữa nếu có sự cố xảy ra là điều quan trọng,
  Xem xét các bước sau:Chọn các công cụ triển khai: Bạn có thể triển khai một control plane bằng các công cụ
  vi dụ như kubeadm, kops, và kubespray. Xem
  Cài đặt Kubernetes với những công cụ triển khai
  để tìm hiểu các mẹo triển khai chất lượng production bằng cách sử dụng từng phương pháp
  triển khai đó. Những Container Runtimes
  khác cũng có sẵn để bạn sử dụng cho việc triển khai của mình.Quản lý chứng chỉ: Giao tiếp bảo mật giữa các dịch vụ control plane
  được thực hiện bằng chứng chỉ. Chứng chỉ được tự động tạo trong quá trình triển khai
  hoặc bạn có thể tạo chúng bằng cách sử dụng cơ quan cấp chứng chỉ của riêng bạn.
  Xem Chứng chỉ PKI và yêu cầu để biết thêm chi tiết.Cấu hình bộ cân bằng tải cho apiserver: Cấu hình bộ cân bằng tải
  để phân phối các request API bên ngoài tới các instance của dịch vụ apiserver chạy trên các node khác nhau. Xem
  Tạo Bộ Cân bằng tải bên ngoài
  để biết thêm chi tiết.Phân tách và sao lưu dịch vụ etcd: Các dịch vụ etcd có thể chạy trên
  cùng các máy với các dịch vụ control plane khác hoặc chạy trên các máy tách biệt, để
  tăng tính bảo mật và khả dụng. Bởi vì etcd lưu dữ liệu cấu hình của cụm,
  sao lưu cơ sở dữ liệu etcd nên được thực hiện thường xuyên để đảm bảo rằng bạn có thể
  sửa chữa cơ sở dữ liệu đó nếu cần.
  Xem thêm etcd FAQ để biết thêm chi tiết về việc cấu hình và sử dụng etcd.
  Xem Vận hành các cụm etcd cho Kubernetes
  và Thiết lập một cụm etcd có tính Sẵn sàng cao với kubeadm
  để biết thêm chi tiết.Tạo nhiều hệ thống control plane: Để có tính sẵn sàng cao,
  control plane không nên giới hạn trong một máy. Nếu các dịch vụ control plane
  được chạy bởi một dịch vụ khởi tạo (ví dụ systemd), các dịch vụ nên chạy trên
  ít nhất ba máy. Tuy nhiên, chạy các dịch vụ control plane dạng pods trong
  Kubernetes đảm bảo rằng số lượng bản sao dịch vụ mà bạn yêu cầu
  sẽ luôn có sẵn.
  Scheduler phải có khả năng chịu lỗi,
  nhưng không sẵn sàng cao. Một số công cụ triển khai được thiết lập thuật toán đồng thuận
  Raft để bầu cử leader cho các dịch vụ Kubernetes. Nếu
  nếu leader biến mất, một dịch vụ khác tự bầu cử chính nó và tiếp quản.Trải rộng nhiều zone: Nếu việc duy trì cụm khả dụng mọi lúc là quan trọng,
  cân nhắc việc tạo một cụm chạy trên nhiều trung tâm dữ liệu,
  được gọi là zone trên các môi trường đám mây. Nhóm các zone gọi là region.
  Bằng cách trải rộng một cụm trên nhiều zone trong cùng một region,
  nó có thể làm tăng cơ hội cho cụm của bạn được tiếp tục hoạt động ngay cả khi
  một zone trở nên không khả dụng.
  Xem Chạy trong nhiều zone để biết thêm chi tiết.Quản lý các tính năng on-going: Nếu bạn có kế hoạch giữ cụm theo thời gian,
  có những nhiệm vụ bạn cần làm để duy trì sức khỏe và bảo mật của cụm. Ví dụ,
  nếu bạn đã cài đặt với kubeadm, có các hướng dẫn để giúp bạn
  Quản lý Chứng chỉ
  và Nâng cấp các cụm kubeadm.
  Xem Quản lý một cụm
  để biết thêm danh sách các tác vụ quản trị của Kubernetes.Để tìm hiểu về các tùy chọn có sẵn khi bạn chạy các dịch vụ control plane, xem các trang
  kube-apiserver,
  kube-controller-manager,
  và kube-scheduler.
  Đối với các ví dụ về control plane có tính sẵn sàng cao, xem
  Các tùy chọn cho kiến trúc có tính Sẵn sàng cao,
  Tạo các cụm có tính Sẵn sàng cao với kubeadm,
  và Vận hành cụm etcd cho Kubernetes.
  Xem Sao lưu cụm etcd
  để biến cách tạo kế hoạch sao lưu cho etcd.Worker node trên productionWorkload chất lượng production cần phải có tính đàn hồi và bất kỳ thành phần nào mà chúng phụ thuộc vào cũng phải có tính đàn hồi
  (ví dụ CoreDNS). Cho dù bạn tự quản lý control plane hay có một nhà cung cấp cloud làm điều đó cho bạn, bạn vẫn cần phải xem xét
  cách bạn muốn quản lý các worker node (còn gọi một cách đơn giản là node).Cấu hình các node: Các node có thể là máy vật lý hay máy ảo. Nếu bạn muốn tạo
  và quản lý node của riêng bạn, bạn có thể cài đặt một hệ điều hành được hỗ trợ,
  sau đó thêm và chạy các dịch vụ Node thích hợp. Xem xét:Nhu cầu của workload khi bạn thiết lập các node bằng cách có sẵn bộ nhớ, CPU và tốc độ đĩa và dung lượng lưu trữ phù hợp.Liệu các hệ thống máy tính chung sẽ làm hay bạn có workload cần bộ xử lý GPU, node Windows hoặc VM cô lập.Xác nhận các node: Xem Thiết lập node hợp lệ
  để biết thông tin về cách đảm bảo một node đáp ứng các yêu cầu để tham gia cụm Kubernetes.Thêm các node vào cụm: Nếu bạn đang quản lý cụm của riêng mình, bạn có thể
  thêm các node bằng cách thiết lập các máy của riêng bạn và thêm chúng theo cách thủ công hoặc
  để chúng tự đăng ký với apiserver của cụm. Xem phần Nodes
  để biết thông tin về cách thiết lập Kubernetes để thêm các nút theo những cách này.Quy mô các node: Sau cùng bạn sẽ cần có một kế hoạch để mở rộng khả năng của cụm.
  Xem Các cân nhắc cho những cụm lớn để giúp xác định bạn cần bao nhiêu node,
  dựa trên số lượng pod và container bạn cần chạy. Nếu bạn đang tự quản lý các node,
  điều này có thể có nghĩa là mua và cài đặt thiết bị vật lý của riêng bạn.Autoscale các node: Đọc
  Node Autoscaling để tìm hiểu về
  các công cụ có sẵn để tự động quản lý các node của bạn và khả năng chúng cung cấp.Thiết lập kiểm tra sức khỏe node: Đối với những workload quan trọng, bạn muốn đảm bảo rằng
  các node và các pod chạy trên các node đó là khỏe mạnh. Sử dụng
  Trình phát hiện vấn đề node,
  bạn có thể đảm bảo các node của bạn khỏe mạnh.Quản lý người dùng trên productionTrên production, bạn có thể chuyển từ một mô hình nơi bạn hoặc một nhóm nhỏ
  những người đang truy cập cụm đến nơi có khả năng có hàng tá hoặc
  hàng trăm người. Trong môi trường học tập hoặc nền tảng nguyên mẫu, bạn có thể có một
  tài khoản quản trị cho mọi thứ bạn làm. Trên production, bạn sẽ muốn
  nhiều tài khoản với các cấp độ truy cập khác nhau vào các namespace khác nhau.Đảm nhận một cụm có chất lượng production nghĩa là quyết định việc bạn muốn làm thế nào
  để cho phép người dùng khác truy cập một cách chọn lọc. Đặc biệt, bạn cần
  chọn chiến lược để xác minh danh tính những người đang cố truy cập vào cụm của bạn
  (xác thực) và quyết định liệu họ có quyền làm những gì họ muốn (phân quyền):Xác thực: Apiserver có thể xác thực người dùng bằng chứng chỉ khác, bearer tokens,
  một proxy xác thực, hoặc HTTP basic auth.
  Bạn có thể chọn phương pháp xác thực bạn muốn. Băng việc sử dụng plugin, apiserver có thể
  tận dụng phương thức xác thực hiện có của tổ chức của bạn, ví dụ LDAP hoặc Kerberos. Xem
  Xác thực
  dể biết mô tả về các phương pháp xác thực người dùng Kubernetes khác nhau.Phân quyền: Khi bạn bắt đầu ủy quyền cho người dùng thường xuyên của mình, bạn có lẽ
  sẽ chọn giữa phân quyền RBAC và ABAC.
  Xem Tổng quan phân quyền
  để xem những chế độ phân quyền tài khoản người dùng khác nhau (cũng như quyền truy cập của
  service account tới cụm của bạn):Kiểm soát truy cập dựa trên vai trò (RBAC): Cho phép
  bạn chỉ định quyền truy cập vào cụm bằng cách cho phép thiết lập một tập các quyền tới
  người dùng đã xác thực.
  Quyền có thể được chỉ định trong một namespace cụ thể (Role) hoặc trong cả cụm (ClusterRole). Sau đó sử dụng RoleBindings và ClusterRoleBindings, những quyền này có thể
  được gán tới những người dùng cụ thể.Kiểm soát truy cập dựa trên thuộc tính (ABAC): Cho phép bạn
  tạo các chính sách dựa trên thuộc tính của tài nguyên trong cụm và sẽ cho phép hoặc
  hoặc từ chối truy cập dựa trên những thuộc tính đó. Mỗi dòng trong 1 file chính sách
  xác định phiên bản của thuộc tính (apiVersion and kind) và một ánh xạ các thuộc tính
  đặc trưng để gán tới một chủ thể (người dùng hoặc nhóm), thuộc tính tài nguyên, thuộc tính
  phi tài nguyên (/versions hoặc /apis), và chỉ đọc. Xem
  Các ví dụ để biết thêm chi tiếtVới tư cách là người thiết lập xác thực và phân quyền trên cụm Kubernetes production,
  dưới đây là một số điều cần cân nhắc:Đặt chế độ phân quyền: Khi Kubernetes API server
  (kube-apiserver)
  khởi động, chế độ hỗ trợ phân quyền phải được thiết lập bằng cờ --authorization-config
  file hoặc --authorization-mode. Ví dụ, cờ đó trong kube-adminserver.yaml file
  (tại /etc/kubernetes/manifests) có thể được đặt là Node,RBAC. Điều này sẽ cho phép
  phân quyền Node và RBAC tới những yêu cầu đã xác thực.Tạo chứng chỉ người dùng và role bindings (RBAC): Nếu bạn sử dụng phân quyền RBAC,
  người dùng có thể tạo một CertificateSigningRequest (CSR) và sẽ được ký bởi CA của cụm.
  Sau đó bạn có thể gán Roles và ClusterRoles tới từng người dùng.
  Xem Certificate Signing Requests để biết thêm chi tiết.Tạo các chính sách kết hợp các thuộc tính (ABAC): Nếu bạn sử dụng phân quyền ABAC,
  bạn có thể gán sự kết hợp các thuộc tính thành các chính sách để phân quyền tới
  người dùng hoặc nhóm được chọn để họ có thể truy cập tới những tài nguyên cụ thể
  (ví dụ pod), namespace, hoặc apiGroup. Để biết thêm thông tin, xem
  Các ví dụ.Cân nhắc Admission Controllers: Các hình thức phân quyền bổ sung cho các yêu cầu
  đến thông qua API server bao gồm
  Webhook Token Authentication.
  Webhooks và những loại phân quyền đặc biệt khác cần được kích hoạt bằng cách thêm
  Admission Controllers
  vào API server.Đặt giới hạn tài nguyên cho workloadNhững yêu cầu từ production workload có thể gây ra áp lực lên cả trong và ngoài
  Kubernetes control plane. Hãy cân nhắc những mục này khi thiết lập cho
  nhu cầu của workload trong cụm của bạn:Đặt giới hạn namespace: Đặt từng namespace quotas lên những thứ như bộ nhớ và CPU. Xem
  Quản lý Bộ nhớ, CPU, và API Resources
  để biết thêm chi tiết.Chuẩn bị cho yêu cầu DNS: Nếu bạn mong đợi workloads mở rộng một cách ồ ạt,
  dịch vụ DNS của bạn phải săn sàng để mở rộng quy mô. Xem
  Autoscale dịch vụ DNS trong cụm.Tạo thêm các service account: Tài khoản người dùng (user account) xác định những gì
  người dùng có thể thực hiện trên một cụm, trong khi đó một tài khoản dịch vụ (service account)
  định nghĩa khả năng truy cập của pod trong một namespace cụ thể. Mặc định, một pod sẽ
  tiếp nhận service account default từ namespace của nó.
  Xem Quản lý Service Account
  để biết cách tạo một service account. Ví dụ, bạn có thể muốn:Thêm secret cho pod để có thể pull image từ một container registry cụ thể. Xem
  Cấu hình Service Account cho Pods.Gán các quyền RBAC tới một service account. Xem
  các quyền ServiceAccount
  để biết thêm chi tiết.Tiếp theo là gìQuyết định liệu bạn muốn tự dựng cụm Kubernetes production hay đạt được từ những nhà cung cấp
  Turnkey Cloud Solutions
  hoặc các đối tác Kubernetes Partners.Nếu bạn chọn dựng cụm cho riêng bạn, lập kế hoạch về việc xử lý
  các chứng chỉ
  và thiết lập tính sẵn sàng cao cho các thành phần, ví dụ
  etcd
  và
  API server.Chọn phương pháp triển khai bằng kubeadm,
  kops hay
  Kubespray.Cấu hình quản lý người dùng bằng cách xác định các phương pháp
  Xác thực và
  Phân quyền.Chuẩn bị cho workload ứng dụng bằng cách thiết lập
  giới hạn tài nguyên,
  DNS autoscaling
  và các service account.Phản hồiTrang này có hữu ích không?Có
  KhôngCảm ơn bạn đã phản hồi. Nếu bạn có một câu hỏi cụ thể và có thể trả lời về cách sử dụng Kubernetes, hãy đặt nó trên
  Stack Overflow.
  Mở một vấn đề trong Kho GitHub nếu bạn muốn
  báo cáo một vấn đề
  hoặc
  đề xuất một cải tiến.Last modified April 22, 2025 at 3:40 PM PST: [vi] fix vietnamese header anchors (04553b2e8a)  Create child page
   Tạo một vấn đề
   Print entire sectionNhững cân nhắc productionThiết lập cụm productionControl plane trên productionWorker node trên productionQuản lý người dùng trên productionĐặt giới hạn tài nguyên cho workloadTiếp theo là gì© 2025 Tác giả Kubernetes | Tài liệu phân phối dưới CC BY 4.0© 2025 The Linux Foundation ®. Tất cả các quyền được bảo lưu. The Linux Foundation đã đăng ký thương hiệu và sử dụng thương hiệu. Để xem danh sách các thương hiệu của The Linux Foundation, vui lòng xem trang Sử dụng Thương hiệu của chúng tôiICP license: 京ICP备17074266号-3
  ```