@antonio2368 , after https://github.com/ClickHouse/ClickHouse/pull/36258 and https://github.com/ClickHouse/ClickHouse/issues/35465

I tried to test your --force-recovery implementation and failed, totally

when we try to scale down zookeeper cluster from 3 nodes to 1 nodes we need only one keeper node 
`clickhouse-keeper --force-recovery` can't start properly, cause still wait 2 other nodes, even when have only one node in peer list in XML config

```
 <Information> KeeperDispatcher: Server is recovering, will not apply configuration until recovery is finished
```

> Again, keep in mind that such configuration changes are already possible with the Keeper if there is a quorum by just changing the XML.

I can't to do it inside all other keeper nodes, inside Kubernetes

kubernetes operates pods and containers in declarative manner, I see only one opportunity to use
```yaml
          lifecycle:
            preStop: |
              shell script which will rewrite XML config
```
but it doesn't allow us to change XML configs on other pods during scale down

Moreover, we don't have support `reconfigure add` and `reconfigure remove` zookeeper commands and can't remove Pod from Quorum peer list dynamic

So, it makes --force-recovery useless in Kubernetes ;(

@alesapin maybe you could suggest how to run clickhouse-keeper in Kubernetes with scale down operation support?

params.max_append_size_
        = getValueOrMaxInt32AndLogWarning(coordination_settings->max_requests_batch_size, "max_requests_batch_size", log);
    params.return_method_ = nuraft::raft_params::async_handler;
    nuraft::asio_service::options asio_opts{};
    if (state_manager->isSecure())
    {
#if USE_SSL
        setSSLParams(asio_opts);
#else
        throw Exception(
            "SSL support for NuRaft is disabled because ClickHouse was built without SSL support.", ErrorCodes::SUPPORT_IS_DISABLED);
#endif
    }
    if (is_recovering)
        enterRecoveryMode(params);
    nuraft::raft_server::init_options init_options;
    init_options.skip_initial_election_timeout_ = state_manager->shouldStartAsFollower();
    init_options.start_server_in_constructor_ = false;
    init_options.raft_callback_ = [this](nuraft::cb_func::Type type, nuraft::cb_func::Param * param) { return callbackFunc(type, param); };
    nuraft::ptr<nuraft::logger> logger = nuraft::cs_new<LoggerWrapper>("RaftInstance", coordination_settings->raft_logs_level);
    asio_service = nuraft::cs_new<nuraft::asio_service>(asio_opts, logger);
    asio_listener = asio_service->create_rpc_listener(state_manager->getPort(), logger, enable_ipv6);
    if (!asio_listener)
        return;
    nuraft::ptr<nuraft::delayed_task_scheduler> scheduler = asio_service;
    nuraft::ptr<nuraft::rpc_client_factory> rpc_cli_factory = asio_service;
    nuraft::ptr<nuraft::state_mgr> casted_state_manager = state_manager;
    nuraft::ptr<nuraft::state_machine> casted_state_machine = state_machine;
    
    nuraft::context * ctx