Repository: jina-ai/serve
Pull request: refactor: remove unnecessary parser args
In some cases, some entities either have arguments with wrong default values or description, or just shouldn't be having that argument. 
For instance:
* the gateway accepts `gpus` argument with ~~a description that mentions executors not the gateway~~ and it shouldn't accept it.
* the gateway accepts the output-array-type parameter which isn't used at all (only used inside the worker)
closes: https://github.com/jina-ai/jina/issues/5245

Problem statement:
Separate/differentiate parser args that should have different descriptions/defaults
Some args belong to multiple entities (client, flow, gateway, worker pod), have different behavior and should have different default values/descriptions.
We should either replicate those args for different entities with different description/defaults or parameterize parser mixins

Hints from issue discussion:

Commit message: style: fix overload and cli autocomplete

Patch to review:
diff --git a/docs/fundamentals/flow/executor-args.md b/docs/fundamentals/flow/executor-args.md
index 663d4c1966a56..8d6262acea75b 100644
--- a/docs/fundamentals/flow/executor-args.md
+++ b/docs/fundamentals/flow/executor-args.md
@@ -7,30 +7,30 @@
 | `quiet_error` | If set, then exception stack information will not be added to the log | `boolean` | `False` |
 | `timeout_ctrl` | The timeout in milliseconds of the control request, -1 for waiting forever | `number` | `60` |
 | `polling` | The polling strategy of the Deployment and its endpoints (when `shards>1`).<br>    Can be defined for all endpoints of a Deployment or by endpoint.<br>    Define per Deployment:<br>    - ANY: only one (whoever is idle) Pod polls the message<br>    - ALL: all Pods poll the message (like a broadcast)<br>    Define per Endpoint:<br>    JSON dict, {endpoint: PollingType}<br>    {'/custom': 'ALL', '/search': 'ANY', '*': 'ANY'} | `string` | `ANY` |
+| `shards` | The number of shards in the deployment running at the same time. For more details check https://docs.jina.ai/fundamentals/flow/create-flow/#complex-flow-topologies | `number` | `1` |
+| `replicas` | The number of replicas in the deployment | `number` | `1` |
 | `uses` | The config of the executor, it could be one of the followings:<br>        * the string literal of an Executor class name<br>        * an Executor YAML file (.yml, .yaml, .jaml)<br>        * a Jina Hub Executor (must start with `jinahub://` or `jinahub+docker://`)<br>        * a docker image (must start with `docker://`)<br>        * the string literal of a YAML config (must start with `!` or `jtype: `)<br>        * the string literal of a JSON config<br><br>        When use it under Python, one can use the following values additionally:<br>        - a Python dict that represents the config<br>        - a text file stream has `.read()` interface | `string` | `BaseExecutor` |
 | `uses_with` | Dictionary of keyword arguments that will override the `with` configuration in `uses` | `object` | `None` |
 | `uses_metas` | Dictionary of keyword arguments that will override the `metas` configuration in `uses` | `object` | `None` |
 | `uses_requests` | Dictionary of keyword arguments that will override the `requests` configuration in `uses` | `object` | `None` |
 | `py_modules` | The customized python modules need to be imported before loading the executor<br><br>Note that the recommended way is to only import a single module - a simple python file, if your<br>executor can be defined in a single file, or an ``__init__.py`` file if you have multiple files,<br>which should be structured as a python package. For more details, please see the<br>`Executor cookbook <https://docs.jina.ai/fundamentals/executor/executor-files/>`__ | `array` | `None` |
-| `port` | The port for input data to bind to, default is a random port between [49152, 65535]. In the case of an external Executor (`--external` or `external=True`) this can be a list of ports, separated by commas. Then, every resulting address will be considered as one replica of the Executor. | `string` | `random in [49152, 65535]` |
-| `host_in` | The host address for binding to, by default it is 0.0.0.0 | `string` | `0.0.0.0` |
 | `native` | If set, only native Executors is allowed, and the Executor is always run inside WorkerRuntime. | `boolean` | `False` |
 | `output_array_type` | The type of array `tensor` and `embedding` will be serialized to.<br><br>Supports the same types as `docarray.to_protobuf(.., ndarray_type=...)`, which can be found <br>`here <https://docarray.jina.ai/fundamentals/document/serialization/#from-to-protobuf>`.<br>Defaults to retaining whatever type is returned by the Executor. | `string` | `None` |
-| `grpc_server_options` | Dictionary of kwargs arguments that will be passed to the grpc server as options when starting the server, example : {'grpc.max_send_message_length': -1} | `object` | `None` |
 | `exit_on_exceptions` | List of exceptions that will cause the Executor to shut down. | `array` | `[]` |
+| `port` | The port for input data to bind to, default is a random port between [49152, 65535]. In the case of an external Executor (`--external` or `external=True`) this can be a list of ports, separated by commas. Then, every resulting address will be considered as one replica of the Executor. | `string` | `random in [49152, 65535]` |
+| `host_in` | The host address for binding to, by default it is 0.0.0.0 | `string` | `0.0.0.0` |
+| `grpc_server_options` | Dictionary of kwargs arguments that will be passed to the grpc server as options when starting the server, example : {'grpc.max_send_message_length': -1} | `object` | `None` |
 | `entrypoint` | The entrypoint command overrides the ENTRYPOINT in Docker image. when not set then the Docker image ENTRYPOINT takes effective. | `string` | `None` |
 | `docker_kwargs` | Dictionary of kwargs arguments that will be passed to Docker SDK when starting the docker '<br>container. <br><br>More details can be found in the Docker SDK docs:  https://docker-py.readthedocs.io/en/stable/ | `object` | `None` |
 | `volumes` | The path on the host to be mounted inside the container. <br><br>Note, <br>- If separated by `:`, then the first part will be considered as the local host path and the second part is the path in the container system. <br>- If no split provided, then the basename of that directory will be mounted into container's root path, e.g. `--volumes="/user/test/my-workspace"` will be mounted into `/my-workspace` inside the container. <br>- All volumes are mounted with read-write mode. | `array` | `None` |
-| `gpus` | This argument allows dockerized Jina executor discover local gpu devices.<br><br>    Note, <br>    - To access all gpus, use `--gpus all`.<br>    - To access multiple gpus, e.g. make use of 2 gpus, use `--gpus 2`.<br>    - To access specified gpus based on device id, use `--gpus device=[YOUR-GPU-DEVICE-ID]`<br>    - To access specified gpus based on multiple device id, use `--gpus device=[YOUR-GPU-DEVICE-ID1],device=[YOUR-GPU-DEVICE-ID2]`<br>    - To specify more parameters, use `--gpus device=[YOUR-GPU-DEVICE-ID],runtime=nvidia,capabilities=display | `string` | `None` |
-| `disable_auto_volume` | Do not automatically mount a volume for dockerized Executors. | `boolean` | `False` |
+| `gpus` | This argument allows dockerized Jina pods to discover local gpu devices.<br><br>    Note, <br>    - To access all gpus, use `--gpus all`.<br>    - To access multiple gpus, e.g. make use of 2 gpus, use `--gpus 2`.<br>    - To access specified gpus based on device id, use `--gpus device=[YOUR-GPU-DEVICE-ID]`<br>    - To access specified gpus based on multiple device id, use `--gpus device=[YOUR-GPU-DEVICE-ID1],device=[YOUR-GPU-DEVICE-ID2]`<br>    - To specify more parameters, use `--gpus device=[YOUR-GPU-DEVICE-ID],runtime=nvidia,capabilities=display | `string` | `None` |
+| `disable_auto_volume` | Do not automatically mount a volume for dockerized pod. | `boolean` | `False` |
 | `host` | The host address of the runtime, by default it is 0.0.0.0. In the case of an external Executor (`--external` or `external=True`) this can be a list of hosts, separated by commas. Then, every resulting address will be considered as one replica of the Executor. | `string` | `0.0.0.0` |
 | `quiet_remote_logs` | Do not display the streaming of remote logs on local console | `boolean` | `False` |
 | `upload_files` | The files on the host to be uploaded to the remote<br>workspace. This can be useful when your Deployment has more<br>file dependencies beyond a single YAML file, e.g.<br>Python files, data files.<br><br>Note,<br>- currently only flatten structure is supported, which means if you upload `[./foo/a.py, ./foo/b.pp, ./bar/c.yml]`, then they will be put under the _same_ workspace on the remote, losing all hierarchies.<br>- by default, `--uses` YAML file is always uploaded.<br>- uploaded files are by default isolated across the runs. To ensure files are submitted to the same workspace across different runs, use `--workspace-id` to specify the workspace. | `array` | `None` |
 | `runtime_cls` | The runtime class to run inside the Pod | `string` | `WorkerRuntime` |
 | `timeout_ready` | The timeout in milliseconds of a Pod waits for the runtime to be ready, -1 for waiting forever | `number` | `600000` |
 | `env` | The map of environment variables that are available inside runtime | `object` | `None` |
-| `shards` | The number of shards in the deployment running at the same time. For more details check https://docs.jina.ai/fundamentals/flow/create-flow/#complex-flow-topologies | `number` | `1` |
-| `replicas` | The number of replicas in the deployment | `number` | `1` |
 | `monitoring` | If set, spawn an http server with a prometheus endpoint to expose metrics | `boolean` | `False` |
 | `port_monitoring` | The port on which the prometheus server is exposed, default is a random port between [49152, 65535] | `string` | `random in [49152, 65535]` |
 | `retries` | Number of retries per gRPC call. If <0 it defaults to max(3, num_replicas) | `number` | `-1` |
diff --git a/docs/fundamentals/flow/gateway-args.md b/docs/fundamentals/flow/gateway-args.md
index bb40ef4a0fc29..769e005c0a6da 100644
--- a/docs/fundamentals/flow/gateway-args.md
+++ b/docs/fundamentals/flow/gateway-args.md
@@ -6,18 +6,17 @@
 | `quiet` | If set, then no log will be emitted from this object. | `boolean` | `False` |
 | `quiet_error` | If set, then exception stack information will not be added to the log | `boolean` | `False` |
 | `timeout_ctrl` | The timeout in milliseconds of the control request, -1 for waiting forever | `number` | `60` |
-| `polling` | The polling strategy of the Deployment and its endpoints (when `shards>1`).<br>    Can be defined for all endpoints of a Deployment or by endpoint.<br>    Define per Deployment:<br>    - ANY: only one (whoever is idle) Pod polls the message<br>    - ALL: all Pods poll the message (like a broadcast)<br>    Define per Endpoint:<br>    JSON dict, {endpoint: PollingType}<br>    {'/custom': 'ALL', '/search': 'ANY', '*': 'ANY'} | `string` | `ANY` |
 | `entrypoint` | The entrypoint command overrides the ENTRYPOINT in Docker image. when not set then the Docker image ENTRYPOINT takes effective. | `string` | `None` |
 | `docker_kwargs` | Dictionary of kwargs arguments that will be passed to Docker SDK when starting the docker '<br>container. <br><br>More details can be found in the Docker SDK docs:  https://docker-py.readthedocs.io/en/stable/ | `object` | `None` |
 | `volumes` | The path on the host to be mounted inside the container. <br><br>Note, <br>- If separated by `:`, then the first part will be considered as the local host path and the second part is the path in the container system. <br>- If no split provided, then the basename of that directory will be mounted into container's root path, e.g. `--volumes="/user/test/my-workspace"` will be mounted into `/my-workspace` inside the container. <br>- All volumes are mounted with read-write mode. | `array` | `None` |
-| `gpus` | This argument allows dockerized Jina executor discover local gpu devices.<br><br>    Note, <br>    - To access all gpus, use `--gpus all`.<br>    - To access multiple gpus, e.g. make use of 2 gpus, use `--gpus 2`.<br>    - To access specified gpus based on device id, use `--gpus device=[YOUR-GPU-DEVICE-ID]`<br>    - To access specified gpus based on multiple device id, use `--gpus device=[YOUR-GPU-DEVICE-ID1],device=[YOUR-GPU-DEVICE-ID2]`<br>    - To specify more parameters, use `--gpus device=[YOUR-GPU-DEVICE-ID],runtime=nvidia,capabilities=display | `string` | `None` |
-| `disable_auto_volume` | Do not automatically mount a volume for dockerized Executors. | `boolean` | `False` |
+| `gpus` | This argument allows dockerized Jina pods to discover local gpu devices.<br><br>    Note, <br>    - To access all gpus, use `--gpus all`.<br>    - To access multiple gpus, e.g. make use of 2 gpus, use `--gpus 2`.<br>    - To access specified gpus based on device id, use `--gpus device=[YOUR-GPU-DEVICE-ID]`<br>    - To access specified gpus based on multiple device id, use `--gpus device=[YOUR-GPU-DEVICE-ID1],device=[YOUR-GPU-DEVICE-ID2]`<br>    - To specify more parameters, use `--gpus device=[YOUR-GPU-DEVICE-ID],runtime=nvidia,capabilities=display | `string` | `None` |
+| `disable_auto_volume` | Do not automatically mount a volume for dockerized pod. | `boolean` | `False` |
 | `prefetch` | Number of requests fetched from the client before feeding into the first Executor. <br>    <br>    Used to control the speed of data input into a Flow. 0 disables prefetch (1000 requests is the default) | `number` | `1000` |
 | `title` | The title of this HTTP server. It will be used in automatics docs such as Swagger UI. | `string` | `None` |
 | `description` | The description of this HTTP server. It will be used in automatics docs such as Swagger UI. | `string` | `None` |
 | `cors` | If set, a CORS middleware is added to FastAPI frontend to allow cross-origin access. | `boolean` | `False` |
 | `no_debug_endpoints` | If set, `/status` `/post` endpoints are removed from HTTP interface. | `boolean` | `False` |
-| `no_crud_endpoints` | If set, `/index`, `/search`, `/update`, `/delete` endpoints are removed from HTTP interface.<br><br>        Any executor that has `@requests(on=...)` bind with those values will receive data requests. | `boolean` | `False` |
+| `no_crud_endpoints` | If set, `/index`, `/search`, `/update`, `/delete` endpoints are removed from HTTP interface.<br><br>        Any executor that has `@requests(on=...)` bound with those values will receive data requests. | `boolean` | `False` |
 | `expose_endpoints` | A JSON string that represents a map from executor endpoints (`@requests(on=...)`) to HTTP endpoints. | `string` | `None` |
 | `uvicorn_kwargs` | Dictionary of kwargs arguments that will be passed to Uvicorn server when starting the server<br><br>More details can be found in Uvicorn docs: https://www.uvicorn.org/settings/ | `object` | `None` |
 | `ssl_certfile` | the path to the certificate file | `string` | `None` |
@@ -31,10 +30,7 @@
 | `py_modules` | The customized python modules need to be imported before loading the gateway<br><br>Note that the recommended way is to only import a single module - a simple python file, if your<br>gateway can be defined in a single file, or an ``__init__.py`` file if you have multiple files,<br>which should be structured as a python package. | `array` | `None` |
 | `port` | The port for input data to bind to, default is a random port between [49152, 65535]. In the case of an external Executor (`--external` or `external=True`) this can be a list of ports, separated by commas. Then, every resulting address will be considered as one replica of the Executor. | `string` | `random in [49152, 65535]` |
 | `host_in` | The host address for binding to, by default it is 0.0.0.0 | `string` | `0.0.0.0` |
-| `native` | If set, only native Executors is allowed, and the Executor is always run inside WorkerRuntime. | `boolean` | `False` |
-| `output_array_type` | The type of array `tensor` and `embedding` will be serialized to.<br><br>Supports the same types as `docarray.to_protobuf(.., ndarray_type=...)`, which can be found <br>`here <https://docarray.jina.ai/fundamentals/document/serialization/#from-to-protobuf>`.<br>Defaults to retaining whatever type is returned by the Executor. | `string` | `None` |
 | `grpc_server_options` | Dictionary of kwargs arguments that will be passed to the grpc server as options when starting the server, example : {'grpc.max_send_message_length': -1} | `object` | `None` |
-| `exit_on_exceptions` | List of exceptions that will cause the Executor to shut down. | `array` | `[]` |
 | `graph_description` | Routing graph for the gateway | `string` | `{}` |
 | `graph_conditions` | Dictionary stating which filtering conditions each Executor in the graph requires to receive Documents. | `string` | `{}` |
 | `deployments_addresses` | JSON dictionary with the input addresses of each Deployment | `string` | `{}` |
@@ -45,8 +41,6 @@
 | `runtime_cls` | The runtime class to run inside the Pod | `string` | `GatewayRuntime` |
 | `timeout_ready` | The timeout in milliseconds of a Pod waits for the runtime to be ready, -1 for waiting forever | `number` | `600000` |
 | `env` | The map of environment variables that are available inside runtime | `object` | `None` |
-| `shards` | The number of shards in the deployment running at the same time. For more details check https://docs.jina.ai/fundamentals/flow/create-flow/#complex-flow-topologies | `number` | `1` |
-| `replicas` | The number of replicas in the deployment | `number` | `1` |
 | `monitoring` | If set, spawn an http server with a prometheus endpoint to expose metrics | `boolean` | `False` |
 | `port_monitoring` | The port on which the prometheus server is exposed, default is a random port between [49152, 65535] | `string` | `random in [49152, 65535]` |
 | `retries` | Number of retries per gRPC call. If <0 it defaults to max(3, num_replicas) | `number` | `-1` |
diff --git a/jina/orchestrate/flow/base.py b/jina/orchestrate/flow/base.py
index 951ae811abe83..b2924ca477119 100644
--- a/jina/orchestrate/flow/base.py
+++ b/jina/orchestrate/flow/base.py
@@ -167,7 +167,6 @@ def __init__(
         docker_kwargs: Optional[dict] = None,
         entrypoint: Optional[str] = None,
         env: Optional[dict] = None,
-        exit_on_exceptions: Optional[List[str]] = [],
         expose_endpoints: Optional[str] = None,
         expose_graphql_endpoint: Optional[bool] = False,
         floating: Optional[bool] = False,
@@ -183,11 +182,8 @@ def __init__(
         metrics_exporter_port: Optional[int] = None,
         monitoring: Optional[bool] = False,
         name: Optional[str] = 'gateway',
-        native: Optional[bool] = False,
         no_crud_endpoints: Optional[bool] = False,
         no_debug_endpoints: Optional[bool] = False,
-        output_array_type: Optional[str] = None,
-        polling: Optional[str] = 'ANY',
         port: Optional[str] = None,
         port_monitoring: Optional[str] = None,
         prefetch: Optional[int] = 1000,
@@ -196,10 +192,8 @@ def __init__(
         py_modules: Optional[List[str]] = None,
         quiet: Optional[bool] = False,
         quiet_error: Optional[bool] = False,
-        replicas: Optional[int] = 1,
         retries: Optional[int] = -1,
         runtime_cls: Optional[str] = 'GatewayRuntime',
-        shards: Optional[int] = 1,
         ssl_certfile: Optional[str] = None,
         ssl_keyfile: Optional[str] = None,
         timeout_ctrl: Optional[int] = 60,
@@ -224,18 +218,17 @@ def __init__(
         :param deployments_disable_reduce: list JSON disabling the built-in merging mechanism for each Deployment listed
         :param deployments_metadata: JSON dictionary with the request metadata for each Deployment
         :param description: The description of this HTTP server. It will be used in automatics docs such as Swagger UI.
-        :param disable_auto_volume: Do not automatically mount a volume for dockerized Executors.
+        :param disable_auto_volume: Do not automatically mount a volume for dockerized pod.
         :param docker_kwargs: Dictionary of kwargs arguments that will be passed to Docker SDK when starting the docker '
           container.
 
           More details can be found in the Docker SDK docs:  https://docker-py.readthedocs.io/en/stable/
         :param entrypoint: The entrypoint command overrides the ENTRYPOINT in Docker image. when not set then the Docker image ENTRYPOINT takes effective.
         :param env: The map of environment variables that are available inside runtime
-        :param exit_on_exceptions: List of exceptions that will cause the Executor to shut down.
         :param expose_endpoints: A JSON string that represents a map from executor endpoints (`@requests(on=...)`) to HTTP endpoints.
         :param expose_graphql_endpoint: If set, /graphql endpoint is added to HTTP interface.
         :param floating: If set, the current Pod/Deployment can not be further chained, and the next `.add()` will chain after the last Pod/Deployment not this current one.
-        :param gpus: This argument allows dockerized Jina executor discover local gpu devices.
+        :param gpus: This argument allows dockerized Jina pods to discover local gpu devices.
 
               Note,
               - To access all gpus, use `--gpus all`.
@@ -262,24 +255,10 @@ def __init__(
               - ...
 
               When not given, then the default naming strategy will apply.
-        :param native: If set, only native Executors is allowed, and the Executor is always run inside WorkerRuntime.
         :param no_crud_endpoints: If set, `/index`, `/search`, `/update`, `/delete` endpoints are removed from HTTP interface.
 
-                  Any executor that has `@requests(on=...)` bind with those values will receive data requests.
+                  Any executor that has `@requests(on=...)` bound with those values will receive data requests.
         :param no_debug_endpoints: If set, `/status` `/post` endpoints are removed from HTTP interface.
-        :param output_array_type: The type of array `tensor` and `embedding` will be serialized to.
-
-          Supports the same types as `docarray.to_protobuf(.., ndarray_type=...)`, which can be found
-          `here <https://docarray.jina.ai/fundamentals/document/serialization/#from-to-protobuf>`.
-          Defaults to retaining whatever type is returned by the Executor.
-        :param polling: The polling strategy of the Deployment and its endpoints (when `shards>1`).
-              Can be defined for all endpoints of a Deployment or by endpoint.
-              Define per Deployment:
-              - ANY: only one (whoever is idle) Pod polls the message
-              - ALL: all Pods poll the message (like a broadcast)
-              Define per Endpoint:
-              JSON dict, {endpoint: PollingType}
-              {'/custom': 'ALL', '/search': 'ANY', '*': 'ANY'}
         :param port: The port for input data to bind to, default is a random port between [49152, 65535]. In the case of an external Executor (`--external` or `external=True`) this can be a list of ports, separated by commas. Then, every resulting address will be considered as one replica of the Executor.
         :param port_monitoring: The port on which the prometheus server is exposed, default is a random port between [49152, 65535]
         :param prefetch: Number of requests fetched from the client before feeding into the first Executor.
@@ -294,10 +273,8 @@ def __init__(
           which should be structured as a python package.
         :param quiet: If set, then no log will be emitted from this object.
         :param quiet_error: If set, then exception stack information will not be added to the log
-        :param replicas: The number of replicas in the deployment
         :param retries: Number of retries per gRPC call. If <0 it defaults to max(3, num_replicas)
         :param runtime_cls: The runtime class to run inside the Pod
-        :param shards: The number of shards in the deployment running at the same time. For more details check https://docs.jina.ai/fundamentals/flow/create-flow/#complex-flow-topologies
         :param ssl_certfile: the path to the certificate file
         :param ssl_keyfile: the path to the key file
         :param timeout_ctrl: The timeout in milliseconds of the control request, -1 for waiting forever
@@ -428,18 +405,17 @@ def __init__(
         :param deployments_disable_reduce: list JSON disabling the built-in merging mechanism for each Deployment listed
         :param deployments_metadata: JSON dictionary with the request metadata for each Deployment
         :param description: The description of this HTTP server. It will be used in automatics docs such as Swagger UI.
-        :param disable_auto_volume: Do not automatically mount a volume for dockerized Executors.
+        :param disable_auto_volume: Do not automatically mount a volume for dockerized pod.
         :param docker_kwargs: Dictionary of kwargs arguments that will be passed to Docker SDK when starting the docker '
           container.
 
           More details can be found in the Docker SDK docs:  https://docker-py.readthedocs.io/en/stable/
         :param entrypoint: The entrypoint command overrides the ENTRYPOINT in Docker image. when not set then the Docker image ENTRYPOINT takes effective.
         :param env: The map of environment variables that are available inside runtime
-        :param exit_on_exceptions: List of exceptions that will cause the Executor to shut down.
         :param expose_endpoints: A JSON string that represents a map from executor endpoints (`@requests(on=...)`) to HTTP endpoints.
         :param expose_graphql_endpoint: If set, /graphql endpoint is added to HTTP interface.
         :param floating: If set, the current Pod/Deployment can not be further chained, and the next `.add()` will chain after the last Pod/Deployment not this current one.
-        :param gpus: This argument allows dockerized Jina executor discover local gpu devices.
+        :param gpus: This argument allows dockerized Jina pods to discover local gpu devices.
 
               Note,
               - To access all gpus, use `--gpus all`.
@@ -466,24 +442,10 @@ def __init__(
               - ...
 
               When not given, then the default naming strategy will apply.
-        :param native: If set, only native Executors is allowed, and the Executor is always run inside WorkerRuntime.
         :param no_crud_endpoints: If set, `/index`, `/search`, `/update`, `/delete` endpoints are removed from HTTP interface.
 
-                  Any executor that has `@requests(on=...)` bind with those values will receive data requests.
+                  Any executor that has `@requests(on=...)` bound with those values will receive data requests.
         :param no_debug_endpoints: If set, `/status` `/post` endpoints are removed from HTTP interface.
-        :param output_array_type: The type of array `tensor` and `embedding` will be serialized to.
-
-          Supports the same types as `docarray.to_protobuf(.., ndarray_type=...)`, which can be found
-          `here <https://docarray.jina.ai/fundamentals/document/serialization/#from-to-protobuf>`.
-          Defaults to retaining whatever type is returned by the Executor.
-        :param polling: The polling strategy of the Deployment and its endpoints (when `shards>1`).
-              Can be defined for all endpoints of a Deployment or by endpoint.
-              Define per Deployment:
-              - ANY: only one (whoever is idle) Pod polls the message
-              - ALL: all Pods poll the message (like a broadcast)
-              Define per Endpoint:
-              JSON dict, {endpoint: PollingType}
-              {'/custom': 'ALL', '/search': 'ANY', '*': 'ANY'}
         :param port: The port for input data to bind to, default is a random port between [49152, 65535]. In the case of an external Executor (`--external` or `external=True`) this can be a list of ports, separated by commas. Then, every resulting address will be considered as one replica of the Executor.
         :param port_monitoring: The port on which the prometheus server is exposed, default is a random port between [49152, 65535]
         :param prefetch: Number of requests fetched from the client before feeding into the first Executor.
@@ -498,10 +460,8 @@ def __init__(
           which should be structured as a python package.
         :param quiet: If set, then no log will be emitted from this object.
         :param quiet_error: If set, then exception stack information will not be added to the log
-        :param replicas: The number of replicas in the deployment
         :param retries: Number of retries per gRPC call. If <0 it defaults to max(3, num_replicas)
         :param runtime_cls: The runtime class to run inside the Pod
-        :param shards: The number of shards in the deployment running at the same time. For more details check https://docs.jina.ai/fundamentals/flow/create-flow/#complex-flow-topologies
         :param ssl_certfile: the path to the certificate file
         :param ssl_keyfile: the path to the key file
         :param timeout_ctrl: The timeout in milliseconds of the control request, -1 for waiting forever
@@ -958,7 +918,7 @@ def add(
 
         :param compression: The compression mechanism used when sending requests from the Head to the WorkerRuntimes. For more details, check https://grpc.github.io/grpc/python/grpc.html#compression.
         :param connection_list: dictionary JSON with a list of connections to configure
-        :param disable_auto_volume: Do not automatically mount a volume for dockerized Executors.
+        :param disable_auto_volume: Do not automatically mount a volume for dockerized pod.
         :param disable_reduce: Disable the built-in reduce mechanism, set this if the reduction is to be handled by the Executor connected to this Head
         :param docker_kwargs: Dictionary of kwargs arguments that will be passed to Docker SDK when starting the docker '
           container.
@@ -970,7 +930,7 @@ def add(
         :param external: The Deployment will be considered an external Deployment that has been started independently from the Flow.This Deployment will not be context managed by the Flow.
         :param floating: If set, the current Pod/Deployment can not be further chained, and the next `.add()` will chain after the last Pod/Deployment not this current one.
         :param force_update: If set, always pull the latest Hub Executor bundle even it exists on local
-        :param gpus: This argument allows dockerized Jina executor discover local gpu devices.
+        :param gpus: This argument allows dockerized Jina pods to discover local gpu devices.
 
               Note,
               - To access all gpus, use `--gpus all`.
@@ -1114,7 +1074,7 @@ def add(
 
         :param compression: The compression mechanism used when sending requests from the Head to the WorkerRuntimes. For more details, check https://grpc.github.io/grpc/python/grpc.html#compression.
         :param connection_list: dictionary JSON with a list of connections to configure
-        :param disable_auto_volume: Do not automatically mount a volume for dockerized Executors.
+        :param disable_auto_volume: Do not automatically mount a volume for dockerized pod.
         :param disable_reduce: Disable the built-in reduce mechanism, set this if the reduction is to be handled by the Executor connected to this Head
         :param docker_kwargs: Dictionary of kwargs arguments that will be passed to Docker SDK when starting the docker '
           container.
@@ -1126,7 +1086,7 @@ def add(
         :param external: The Deployment will be considered an external Deployment that has been started independently from the Flow.This Deployment will not be context managed by the Flow.
         :param floating: If set, the current Pod/Deployment can not be further chained, and the next `.add()` will chain after the last Pod/Deployment not this current one.
         :param force_update: If set, always pull the latest Hub Executor bundle even it exists on local
-        :param gpus: This argument allows dockerized Jina executor discover local gpu devices.
+        :param gpus: This argument allows dockerized Jina pods to discover local gpu devices.
 
               Note,
               - To access all gpus, use `--gpus all`.
diff --git a/jina/parsers/__init__.py b/jina/parsers/__init__.py
index 3b9990b8c3d4b..6cffe1f0dfedc 100644
--- a/jina/parsers/__init__.py
+++ b/jina/parsers/__init__.py
@@ -17,7 +17,7 @@ def set_pod_parser(parser=None):
 
     from hubble.executor.parsers.pull import mixin_hub_pull_options_parser
 
-    from jina.parsers.orchestrate.base import mixin_base_ppr_parser
+    from jina.parsers.orchestrate.base import mixin_scalable_deployment_parser
     from jina.parsers.orchestrate.pod import mixin_pod_parser
     from jina.parsers.orchestrate.runtimes.container import (
         mixin_container_runtime_parser,
@@ -28,7 +28,7 @@ def set_pod_parser(parser=None):
     from jina.parsers.orchestrate.runtimes.remote import mixin_remote_runtime_parser
     from jina.parsers.orchestrate.runtimes.worker import mixin_worker_runtime_parser
 
-    mixin_base_ppr_parser(parser)
+    mixin_scalable_deployment_parser(parser)
     mixin_worker_runtime_parser(parser)
     mixin_container_runtime_parser(parser)
     mixin_remote_runtime_parser(parser)
@@ -71,7 +71,7 @@ def set_gateway_parser(parser=None):
 
         parser = set_base_parser()
 
-    from jina.parsers.orchestrate.base import mixin_base_ppr_parser
+    from jina.parsers.orchestrate.base import mixin_base_deployment_parser
     from jina.parsers.orchestrate.pod import mixin_pod_parser
     from jina.parsers.orchestrate.runtimes.remote import (
         mixin_gateway_parser,
@@ -79,9 +79,8 @@ def set_gateway_parser(parser=None):
         mixin_http_gateway_parser,
         mixin_prefetch_parser,
     )
-    from jina.parsers.orchestrate.runtimes.worker import mixin_worker_runtime_parser
 
-    mixin_base_ppr_parser(parser)
+    mixin_base_deployment_parser(parser)
     mixin_container_runtime_parser(parser)
     mixin_prefetch_parser(parser)
     mixin_http_gateway_parser(parser)
diff --git a/jina/parsers/orchestrate/base.py b/jina/parsers/orchestrate/base.py
index be2593e30ad32..de2e3a5b76bd1 100644
--- a/jina/parsers/orchestrate/base.py
+++ b/jina/parsers/orchestrate/base.py
@@ -69,14 +69,17 @@ def mixin_essential_parser(parser):
     )
 
 
-def mixin_base_ppr_parser(parser):
-    """Mixing in arguments required by pod/deployment/runtime module into the given parser.
+def mixin_base_deployment_parser(parser, title='Base Deployment'):
+    """Mixing in arguments required by a deployment into the given parser.
+    The Deployment doesn't have scalable features like shards, replicas and polling
     :param parser: the parser instance to which we add arguments
+    :param title: the title of the create args group
+    :return: returns the created arg group
     """
 
     mixin_essential_parser(parser)
 
-    gp = add_arg_group(parser, title='Base Deployment')
+    gp = add_arg_group(parser, title=title)
 
     gp.add_argument(
         '--extra-search-paths',
@@ -95,13 +98,22 @@ def mixin_base_ppr_parser(parser):
         help='The timeout in milliseconds of the control request, -1 for waiting forever',
     )
 
-    parser.add_argument(
+    gp.add_argument(
         '--k8s-namespace',
         type=str,
         help='Name of the namespace where Kubernetes deployment should be deployed, to be filled by flow name'
         if _SHOW_ALL_ARGS
         else argparse.SUPPRESS,
     )
+    return gp
+
+
+def mixin_scalable_deployment_parser(parser):
+    """Mixing in arguments required by a scalable deployment into the given parser.
+    The deployment is scalable and can have shards, replicas and polling
+    :param parser: the parser instance to which we add arguments
+    """
+    gp = mixin_base_deployment_parser(parser, title='Scalable Deployment')
 
     gp.add_argument(
         '--polling',
@@ -119,3 +131,18 @@ def mixin_base_ppr_parser(parser):
     
     ''',
     )
+
+    gp.add_argument(
+        '--shards',
+        type=int,
+        default=1,
+        help='The number of shards in the deployment running at the same time. For more details check '
+        'https://docs.jina.ai/fundamentals/flow/create-flow/#complex-flow-topologies',
+    )
+
+    gp.add_argument(
+        '--replicas',
+        type=int,
+        default=1,
+        help='The number of replicas in the deployment',
+    )
diff --git a/jina/parsers/orchestrate/pod.py b/jina/parsers/orchestrate/pod.py
index 3e98e20593afd..f588b2ad90877 100644
--- a/jina/parsers/orchestrate/pod.py
+++ b/jina/parsers/orchestrate/pod.py
@@ -87,21 +87,6 @@ def mixin_pod_parser(parser, pod_type: str = 'worker'):
         else argparse.SUPPRESS,
     )
 
-    gp.add_argument(
-        '--shards',
-        type=int,
-        default=1,
-        help='The number of shards in the deployment running at the same time. For more details check '
-        'https://docs.jina.ai/fundamentals/flow/create-flow/#complex-flow-topologies',
-    )
-
-    gp.add_argument(
-        '--replicas',
-        type=int,
-        default=1,
-        help='The number of replicas in the deployment',
-    )
-
     gp.add_argument(
         '--port',
         type=str,
diff --git a/jina/parsers/orchestrate/runtimes/container.py b/jina/parsers/orchestrate/runtimes/container.py
index 95cdde5bc6694..cfc913cc9dcd1 100644
--- a/jina/parsers/orchestrate/runtimes/container.py
+++ b/jina/parsers/orchestrate/runtimes/container.py
@@ -46,7 +46,7 @@ def mixin_container_runtime_parser(parser):
         '--gpus',
         type=str,
         help='''
-    This argument allows dockerized Jina executor discover local gpu devices.
+    This argument allows dockerized Jina pods to discover local gpu devices.
 
     Note, 
     - To access all gpus, use `--gpus all`.
@@ -61,5 +61,5 @@ def mixin_container_runtime_parser(parser):
         '--disable-auto-volume',
         action='store_true',
         default=False,
-        help='Do not automatically mount a volume for dockerized Executors.',
+        help='Do not automatically mount a volume for dockerized pod.',
     )
diff --git a/jina/parsers/orchestrate/runtimes/remote.py b/jina/parsers/orchestrate/runtimes/remote.py
index 775f093822e4a..adbda1cbc7b34 100644
--- a/jina/parsers/orchestrate/runtimes/remote.py
+++ b/jina/parsers/orchestrate/runtimes/remote.py
@@ -227,7 +227,7 @@ def mixin_http_gateway_parser(parser=None):
         help='''
         If set, `/index`, `/search`, `/update`, `/delete` endpoints are removed from HTTP interface.
 
-        Any executor that has `@requests(on=...)` bind with those values will receive data requests.
+        Any executor that has `@requests(on=...)` bound with those values will receive data requests.
         ''',
     )
 
diff --git a/jina/parsers/orchestrate/runtimes/runtime.py b/jina/parsers/orchestrate/runtimes/runtime.py
index a659e11543e32..99504cbc8dd09 100644
--- a/jina/parsers/orchestrate/runtimes/runtime.py
+++ b/jina/parsers/orchestrate/runtimes/runtime.py
@@ -22,26 +22,6 @@ def mixin_base_runtime_parser(arg_group):
         help=f'The host address for binding to, by default it is {__default_host__}',
     )
 
-    arg_group.add_argument(
-        '--native',
-        action='store_true',
-        default=False,
-        help='If set, only native Executors is allowed, and the Executor is always run inside WorkerRuntime.',
-    )
-
-    arg_group.add_argument(
-        '--output-array-type',
-        type=str,
-        default=None,
-        help='''
-The type of array `tensor` and `embedding` will be serialized to.
-
-Supports the same types as `docarray.to_protobuf(.., ndarray_type=...)`, which can be found 
-`here <https://docarray.jina.ai/fundamentals/document/serialization/#from-to-protobuf>`.
-Defaults to retaining whatever type is returned by the Executor.
-''',
-    )
-
     arg_group.add_argument(
         '--grpc-server-options',
         action=KVAppendAction,
@@ -50,11 +30,3 @@ def mixin_base_runtime_parser(arg_group):
         help="Dictionary of kwargs arguments that will be passed to the grpc server as options when starting the server, example : {'grpc.max_send_message_length': -1}",
         default=None,
     )
-
-    arg_group.add_argument(
-        '--exit-on-exceptions',
-        type=str,
-        default=[],
-        nargs='*',
-        help='List of exceptions that will cause the Executor to shut down.',
-    )
diff --git a/jina/parsers/orchestrate/runtimes/worker.py b/jina/parsers/orchestrate/runtimes/worker.py
index fd27ea4bd20cf..4108b82061081 100644
--- a/jina/parsers/orchestrate/runtimes/worker.py
+++ b/jina/parsers/orchestrate/runtimes/worker.py
@@ -1,5 +1,6 @@
 """Argparser module for WorkerRuntime"""
 from jina import __default_host__, helper
+from jina.enums import PollingType
 from jina.parsers.helper import KVAppendAction, add_arg_group
 from jina.parsers.orchestrate.runtimes.runtime import mixin_base_runtime_parser
 
@@ -71,4 +72,32 @@ def mixin_worker_runtime_parser(parser):
 `Executor cookbook <https://docs.jina.ai/fundamentals/executor/executor-files/>`__
 ''',
     )
+
+    gp.add_argument(
+        '--native',
+        action='store_true',
+        default=False,
+        help='If set, only native Executors is allowed, and the Executor is always run inside WorkerRuntime.',
+    )
+
+    gp.add_argument(
+        '--output-array-type',
+        type=str,
+        default=None,
+        help='''
+The type of array `tensor` and `embedding` will be serialized to.
+
+Supports the same types as `docarray.to_protobuf(.., ndarray_type=...)`, which can be found 
+`here <https://docarray.jina.ai/fundamentals/document/serialization/#from-to-protobuf>`.
+Defaults to retaining whatever type is returned by the Executor.
+''',
+    )
+
+    gp.add_argument(
+        '--exit-on-exceptions',
+        type=str,
+        default=[],
+        nargs='*',
+        help='List of exceptions that will cause the Executor to shut down.',
+    )
     mixin_base_runtime_parser(gp)
diff --git a/jina/serve/runtimes/gateway/http/app.py b/jina/serve/runtimes/gateway/http/app.py
index 888e6e10af0ed..56908c2c024ab 100644
--- a/jina/serve/runtimes/gateway/http/app.py
+++ b/jina/serve/runtimes/gateway/http/app.py
@@ -10,7 +10,7 @@
 from jina.importer import ImportExtensions
 from jina.logging.logger import JinaLogger
 
-if TYPE_CHECKING: # pragma: no cover
+if TYPE_CHECKING:  # pragma: no cover
     from opentelemetry import trace
 
     from jina.serve.streamer import GatewayStreamer
@@ -38,7 +38,7 @@ def get_fastapi_app(
     :param no_debug_endpoints: If set, `/status` `/post` endpoints are removed from HTTP interface.
     :param no_crud_endpoints: If set, `/index`, `/search`, `/update`, `/delete` endpoints are removed from HTTP interface.
 
-              Any executor that has `@requests(on=...)` bind with those values will receive data requests.
+              Any executor that has `@requests(on=...)` bound with those values will receive data requests.
     :param expose_endpoints: A JSON string that represents a map from executor endpoints (`@requests(on=...)`) to HTTP endpoints.
     :param expose_graphql_endpoint: If set, /graphql endpoint is added to HTTP interface.
     :param cors: If set, a CORS middleware is added to FastAPI frontend to allow cross-origin access.
diff --git a/jina/serve/runtimes/gateway/http/gateway.py b/jina/serve/runtimes/gateway/http/gateway.py
index eafc3f550944a..4334178e9be0f 100644
--- a/jina/serve/runtimes/gateway/http/gateway.py
+++ b/jina/serve/runtimes/gateway/http/gateway.py
@@ -35,7 +35,7 @@ def __init__(
         :param no_debug_endpoints: If set, `/status` `/post` endpoints are removed from HTTP interface.
         :param no_crud_endpoints: If set, `/index`, `/search`, `/update`, `/delete` endpoints are removed from HTTP interface.
 
-                  Any executor that has `@requests(on=...)` bind with those values will receive data requests.
+                  Any executor that has `@requests(on=...)` bound with those values will receive data requests.
         :param expose_endpoints: A JSON string that represents a map from executor endpoints (`@requests(on=...)`) to HTTP endpoints.
         :param expose_graphql_endpoint: If set, /graphql endpoint is added to HTTP interface.
         :param cors: If set, a CORS middleware is added to FastAPI frontend to allow cross-origin access.
diff --git a/jina_cli/autocomplete.py b/jina_cli/autocomplete.py
index 86f3c3e053872..b539c2c9aa80b 100644
--- a/jina_cli/autocomplete.py
+++ b/jina_cli/autocomplete.py
@@ -30,17 +30,19 @@
             '--timeout-ctrl',
             '--k8s-namespace',
             '--polling',
+            '--shards',
+            '--replicas',
             '--uses',
             '--uses-with',
             '--uses-metas',
             '--uses-requests',
             '--py-modules',
-            '--port-in',
-            '--host-in',
             '--native',
             '--output-array-type',
-            '--grpc-server-options',
             '--exit-on-exceptions',
+            '--port-in',
+            '--host-in',
+            '--grpc-server-options',
             '--entrypoint',
             '--docker-kwargs',
             '--volumes',
@@ -55,8 +57,6 @@
             '--shard-id',
             '--pod-role',
             '--noblock-on-start',
-            '--shards',
-            '--replicas',
             '--port',
             '--monitoring',
             '--port-monitoring',
@@ -116,7 +116,6 @@
             '--extra-search-paths',
             '--timeout-ctrl',
             '--k8s-namespace',
-            '--polling',
             '--entrypoint',
             '--docker-kwargs',
             '--volumes',
@@ -141,10 +140,7 @@
             '--py-modules',
             '--port-in',
             '--host-in',
-            '--native',
-            '--output-array-type',
             '--grpc-server-options',
-            '--exit-on-exceptions',
             '--port-expose',
             '--graph-description',
             '--graph-conditions',
@@ -159,8 +155,6 @@
             '--shard-id',
             '--pod-role',
             '--noblock-on-start',
-            '--shards',
-            '--replicas',
             '--port',
             '--monitoring',
             '--port-monitoring',
@@ -251,17 +245,19 @@
             '--timeout-ctrl',
             '--k8s-namespace',
             '--polling',
+            '--shards',
+            '--replicas',
             '--uses',
             '--uses-with',
             '--uses-metas',
             '--uses-requests',
             '--py-modules',
-            '--port-in',
-            '--host-in',
             '--native',
             '--output-array-type',
-            '--grpc-server-options',
             '--exit-on-exceptions',
+            '--port-in',
+            '--host-in',
+            '--grpc-server-options',
             '--entrypoint',
             '--docker-kwargs',
             '--volumes',
@@ -276,8 +272,6 @@
             '--shard-id',
             '--pod-role',
             '--noblock-on-start',
-            '--shards',
-            '--replicas',
             '--port',
             '--monitoring',
             '--port-monitoring',
@@ -311,17 +305,19 @@
             '--timeout-ctrl',
             '--k8s-namespace',
             '--polling',
+            '--shards',
+            '--replicas',
             '--uses',
             '--uses-with',
             '--uses-metas',
             '--uses-requests',
             '--py-modules',
-            '--port-in',
-            '--host-in',
             '--native',
             '--output-array-type',
-            '--grpc-server-options',
             '--exit-on-exceptions',
+            '--port-in',
+            '--host-in',
+            '--grpc-server-options',
             '--entrypoint',
             '--docker-kwargs',
             '--volumes',
@@ -336,8 +332,6 @@
             '--shard-id',
             '--pod-role',
             '--noblock-on-start',
-            '--shards',
-            '--replicas',
             '--port',
             '--monitoring',
             '--port-monitoring',


Code review comments:
diff_hunk: @@ -71,4 +72,32 @@ def mixin_worker_runtime_parser(parser):
 `Executor cookbook <https://docs.jina.ai/fundamentals/executor/executor-files/>`__
 ''',
     )
+
+    gp.add_argument(
path: jina/parsers/orchestrate/runtimes/worker.py
text: @user1:
native is not a `workerRuntime` argument, it is a `Deployment` argument

@author:
I will add it to `mixin_scalable_deployment_parser` so that it doesn't show up for gateway

@author:
done

diff_hunk: @@ -7,30 +7,30 @@
 | `quiet_error` | If set, then exception stack information will not be added to the log | `boolean` | `False` |
 | `timeout_ctrl` | The timeout in milliseconds of the control request, -1 for waiting forever | `number` | `60` |
 | `polling` | The polling strategy of the Deployment and its endpoints (when `shards>1`).<br>    Can be defined for all endpoints of a Deployment or by endpoint.<br>    Define per Deployment:<br>    - ANY: only one (whoever is idle) Pod polls the message<br>    - ALL: all Pods poll the message (like a broadcast)<br>    Define per Endpoint:<br>    JSON dict, {endpoint: PollingType}<br>    {'/custom': 'ALL', '/search': 'ANY', '*': 'ANY'} | `string` | `ANY` |
+| `shards` | The number of shards in the deployment running at the same time. For more details check https://docs.jina.ai/fundamentals/flow/create-flow/#complex-flow-topologies | `number` | `1` |
+| `replicas` | The number of replicas in the deployment | `number` | `1` |
 | `uses` | The config of the executor, it could be one of the followings:<br>        * the string literal of an Executor class name<br>        * an Executor YAML file (.yml, .yaml, .jaml)<br>        * a Jina Hub Executor (must start with `jinahub://` or `jinahub+docker://`)<br>        * a docker image (must start with `docker://`)<br>        * the string literal of a YAML config (must start with `!` or `jtype: `)<br>        * the string literal of a JSON config<br><br>        When use it under Python, one can use the following values additionally:<br>        - a Python dict that represents the config<br>        - a text file stream has `.read()` interface | `string` | `BaseExecutor` |
 | `uses_with` | Dictionary of keyword arguments that will override the `with` configuration in `uses` | `object` | `None` |
 | `uses_metas` | Dictionary of keyword arguments that will override the `metas` configuration in `uses` | `object` | `None` |
 | `uses_requests` | Dictionary of keyword arguments that will override the `requests` configuration in `uses` | `object` | `None` |
 | `py_modules` | The customized python modules need to be imported before loading the executor<br><br>Note that the recommended way is to only import a single module - a simple python file, if your<br>executor can be defined in a single file, or an ``__init__.py`` file if you have multiple files,<br>which should be structured as a python package. For more details, please see the<br>`Executor cookbook <https://docs.jina.ai/fundamentals/executor/executor-files/>`__ | `array` | `None` |
-| `port` | The port for input data to bind to, default is a random port between [49152, 65535]. In the case of an external Executor (`--external` or `external=True`) this can be a list of ports, separated by commas. Then, every resulting address will be considered as one replica of the Executor. | `string` | `random in [49152, 65535]` |
-| `host_in` | The host address for binding to, by default it is 0.0.0.0 | `string` | `0.0.0.0` |
 | `native` | If set, only native Executors is allowed, and the Executor is always run inside WorkerRuntime. | `boolean` | `False` |
 | `output_array_type` | The type of array `tensor` and `embedding` will be serialized to.<br><br>Supports the same types as `docarray.to_protobuf(.., ndarray_type=...)`, which can be found <br>`here <https://docarray.jina.ai/fundamentals/document/serialization/#from-to-protobuf>`.<br>Defaults to retaining whatever type is returned by the Executor. | `string` | `None` |
-| `grpc_server_options` | Dictionary of kwargs arguments that will be passed to the grpc server as options when starting the server, example : {'grpc.max_send_message_length': -1} | `object` | `None` |
 | `exit_on_exceptions` | List of exceptions that will cause the Executor to shut down. | `array` | `[]` |
+| `port` | The port for input data to bind to, default is a random port between [49152, 65535]. In the case of an external Executor (`--external` or `external=True`) this can be a list of ports, separated by commas. Then, every resulting address will be considered as one replica of the Executor. | `string` | `random in [49152, 65535]` |
+| `host_in` | The host address for binding to, by default it is 0.0.0.0 | `string` | `0.0.0.0` |
+| `grpc_server_options` | Dictionary of kwargs arguments that will be passed to the grpc server as options when starting the server, example : {'grpc.max_send_message_length': -1} | `object` | `None` |
 | `entrypoint` | The entrypoint command overrides the ENTRYPOINT in Docker image. when not set then the Docker image ENTRYPOINT takes effective. | `string` | `None` |
 | `docker_kwargs` | Dictionary of kwargs arguments that will be passed to Docker SDK when starting the docker '<br>container. <br><br>More details can be found in the Docker SDK docs:  https://docker-py.readthedocs.io/en/stable/ | `object` | `None` |
 | `volumes` | The path on the host to be mounted inside the container. <br><br>Note, <br>- If separated by `:`, then the first part will be considered as the local host path and the second part is the path in the container system. <br>- If no split provided, then the basename of that directory will be mounted into container's root path, e.g. `--volumes="/user/test/my-workspace"` will be mounted into `/my-workspace` inside the container. <br>- All volumes are mounted with read-write mode. | `array` | `None` |
-| `gpus` | This argument allows dockerized Jina executor discover local gpu devices.<br><br>    Note, <br>    - To access all gpus, use `--gpus all`.<br>    - To access multiple gpus, e.g. make use of 2 gpus, use `--gpus 2`.<br>    - To access specified gpus based on device id, use `--gpus device=[YOUR-GPU-DEVICE-ID]`<br>    - To access specified gpus based on multiple device id, use `--gpus device=[YOUR-GPU-DEVICE-ID1],device=[YOUR-GPU-DEVICE-ID2]`<br>    - To specify more parameters, use `--gpus device=[YOUR-GPU-DEVICE-ID],runtime=nvidia,capabilities=display | `string` | `None` |
-| `disable_auto_volume` | Do not automatically mount a volume for dockerized Executors. | `boolean` | `False` |
+| `gpus` | This argument allows dockerized Jina pods to discover local gpu devices.<br><br>    Note, <br>    - To access all gpus, use `--gpus all`.<br>    - To access multiple gpus, e.g. make use of 2 gpus, use `--gpus 2`.<br>    - To access specified gpus based on device id, use `--gpus device=[YOUR-GPU-DEVICE-ID]`<br>    - To access specified gpus based on multiple device id, use `--gpus device=[YOUR-GPU-DEVICE-ID1],device=[YOUR-GPU-DEVICE-ID2]`<br>    - To specify more parameters, use `--gpus device=[YOUR-GPU-DEVICE-ID],runtime=nvidia,capabilities=display | `string` | `None` |
+| `disable_auto_volume` | Do not automatically mount a volume for dockerized pod. | `boolean` | `False` |
path: docs/fundamentals/flow/executor-args.md
text: @user1:
keep `Executor`, we do not expose `Pod` concept

@author:
done

diff_hunk: @@ -7,30 +7,30 @@
 | `quiet_error` | If set, then exception stack information will not be added to the log | `boolean` | `False` |
 | `timeout_ctrl` | The timeout in milliseconds of the control request, -1 for waiting forever | `number` | `60` |
 | `polling` | The polling strategy of the Deployment and its endpoints (when `shards>1`).<br>    Can be defined for all endpoints of a Deployment or by endpoint.<br>    Define per Deployment:<br>    - ANY: only one (whoever is idle) Pod polls the message<br>    - ALL: all Pods poll the message (like a broadcast)<br>    Define per Endpoint:<br>    JSON dict, {endpoint: PollingType}<br>    {'/custom': 'ALL', '/search': 'ANY', '*': 'ANY'} | `string` | `ANY` |
+| `shards` | The number of shards in the deployment running at the same time. For more details check https://docs.jina.ai/fundamentals/flow/create-flow/#complex-flow-topologies | `number` | `1` |
+| `replicas` | The number of replicas in the deployment | `number` | `1` |
 | `uses` | The config of the executor, it could be one of the followings:<br>        * the string literal of an Executor class name<br>        * an Executor YAML file (.yml, .yaml, .jaml)<br>        * a Jina Hub Executor (must start with `jinahub://` or `jinahub+docker://`)<br>        * a docker image (must start with `docker://`)<br>        * the string literal of a YAML config (must start with `!` or `jtype: `)<br>        * the string literal of a JSON config<br><br>        When use it under Python, one can use the following values additionally:<br>        - a Python dict that represents the config<br>        - a text file stream has `.read()` interface | `string` | `BaseExecutor` |
 | `uses_with` | Dictionary of keyword arguments that will override the `with` configuration in `uses` | `object` | `None` |
 | `uses_metas` | Dictionary of keyword arguments that will override the `metas` configuration in `uses` | `object` | `None` |
 | `uses_requests` | Dictionary of keyword arguments that will override the `requests` configuration in `uses` | `object` | `None` |
 | `py_modules` | The customized python modules need to be imported before loading the executor<br><br>Note that the recommended way is to only import a single module - a simple python file, if your<br>executor can be defined in a single file, or an ``__init__.py`` file if you have multiple files,<br>which should be structured as a python package. For more details, please see the<br>`Executor cookbook <https://docs.jina.ai/fundamentals/executor/executor-files/>`__ | `array` | `None` |
-| `port` | The port for input data to bind to, default is a random port between [49152, 65535]. In the case of an external Executor (`--external` or `external=True`) this can be a list of ports, separated by commas. Then, every resulting address will be considered as one replica of the Executor. | `string` | `random in [49152, 65535]` |
-| `host_in` | The host address for binding to, by default it is 0.0.0.0 | `string` | `0.0.0.0` |
 | `native` | If set, only native Executors is allowed, and the Executor is always run inside WorkerRuntime. | `boolean` | `False` |
 | `output_array_type` | The type of array `tensor` and `embedding` will be serialized to.<br><br>Supports the same types as `docarray.to_protobuf(.., ndarray_type=...)`, which can be found <br>`here <https://docarray.jina.ai/fundamentals/document/serialization/#from-to-protobuf>`.<br>Defaults to retaining whatever type is returned by the Executor. | `string` | `None` |
-| `grpc_server_options` | Dictionary of kwargs arguments that will be passed to the grpc server as options when starting the server, example : {'grpc.max_send_message_length': -1} | `object` | `None` |
 | `exit_on_exceptions` | List of exceptions that will cause the Executor to shut down. | `array` | `[]` |
+| `port` | The port for input data to bind to, default is a random port between [49152, 65535]. In the case of an external Executor (`--external` or `external=True`) this can be a list of ports, separated by commas. Then, every resulting address will be considered as one replica of the Executor. | `string` | `random in [49152, 65535]` |
+| `host_in` | The host address for binding to, by default it is 0.0.0.0 | `string` | `0.0.0.0` |
+| `grpc_server_options` | Dictionary of kwargs arguments that will be passed to the grpc server as options when starting the server, example : {'grpc.max_send_message_length': -1} | `object` | `None` |
 | `entrypoint` | The entrypoint command overrides the ENTRYPOINT in Docker image. when not set then the Docker image ENTRYPOINT takes effective. | `string` | `None` |
 | `docker_kwargs` | Dictionary of kwargs arguments that will be passed to Docker SDK when starting the docker '<br>container. <br><br>More details can be found in the Docker SDK docs:  https://docker-py.readthedocs.io/en/stable/ | `object` | `None` |
 | `volumes` | The path on the host to be mounted inside the container. <br><br>Note, <br>- If separated by `:`, then the first part will be considered as the local host path and the second part is the path in the container system. <br>- If no split provided, then the basename of that directory will be mounted into container's root path, e.g. `--volumes="/user/test/my-workspace"` will be mounted into `/my-workspace` inside the container. <br>- All volumes are mounted with read-write mode. | `array` | `None` |
-| `gpus` | This argument allows dockerized Jina executor discover local gpu devices.<br><br>    Note, <br>    - To access all gpus, use `--gpus all`.<br>    - To access multiple gpus, e.g. make use of 2 gpus, use `--gpus 2`.<br>    - To access specified gpus based on device id, use `--gpus device=[YOUR-GPU-DEVICE-ID]`<br>    - To access specified gpus based on multiple device id, use `--gpus device=[YOUR-GPU-DEVICE-ID1],device=[YOUR-GPU-DEVICE-ID2]`<br>    - To specify more parameters, use `--gpus device=[YOUR-GPU-DEVICE-ID],runtime=nvidia,capabilities=display | `string` | `None` |
-| `disable_auto_volume` | Do not automatically mount a volume for dockerized Executors. | `boolean` | `False` |
+| `gpus` | This argument allows dockerized Jina pods to discover local gpu devices.<br><br>    Note, <br>    - To access all gpus, use `--gpus all`.<br>    - To access multiple gpus, e.g. make use of 2 gpus, use `--gpus 2`.<br>    - To access specified gpus based on device id, use `--gpus device=[YOUR-GPU-DEVICE-ID]`<br>    - To access specified gpus based on multiple device id, use `--gpus device=[YOUR-GPU-DEVICE-ID1],device=[YOUR-GPU-DEVICE-ID2]`<br>    - To specify more parameters, use `--gpus device=[YOUR-GPU-DEVICE-ID],runtime=nvidia,capabilities=display | `string` | `None` |
path: docs/fundamentals/flow/executor-args.md
text: @user1:
keep `Executor` here