### Description

Currently, KubernetesPodOperator fetches logs using
```
             self.pod_manager.fetch_container_logs(
                    pod=self.pod,
                    container_name=self.BASE_CONTAINER_NAME,
                    follow=True,
                )
```
and so only shows log from the main container in a pod. It would be very useful/helpful to have the possibility to fetch logs for all the containers in a pod.


### Use case/motivation

Making the cause of failed KubernetesPodOperator tasks a lot more visible.

### Related issues

_No response_

### Are you willing to submit a PR?

- [ ] Yes I am willing to submit a PR!

### Code of Conduct

- [X] I agree to follow this project's [Code of Conduct](https://github.com/apache/airflow/blob/main/CODE_OF_CONDUCT.md)

"""
    Protocol to define methods relied upon by KubernetesPodOperator.
    Subclasses of KubernetesPodOperator, such as GKEStartPodOperator, may use
    hooks that don't extend KubernetesHook.  We use this protocol to document the
    methods used by KPO and ensure that these methods exist on such other hooks.
    """
    @property
    def core_v1_client(self) -> client.CoreV1Api:
        """Get authenticated CoreV1Api object."""
    @property
    def is_in_cluster(self) -> bool:
        """Expose whether the hook is configured with ``load_incluster_config`` or not."""
    def get_pod(self, name: str, namespace: str) -> V1Pod:
        """Read pod object from kubernetes API."""
    def get_namespace(self) -> str | None:
        """Returns the namespace that defined in the connection."""
def get_container_status(pod: V1Pod, container_name: str) -> V1ContainerStatus | None:
    """Retrieves container status."""
    container_statuses = pod.status.container_statuses if pod and pod.status else None
    if container_statuses:
        
        
        
        
        return next((x for x in container_statuses if x.name == container_name), None)
    return None
def container_is_running(pod: V1Pod, container_name: str) -> bool: