# 登录容器实例
#### 操作场景
如果在使用容器的过程中遇到非预期的问题，您可登录容器进行调试。
#### 约束与限制
- 在CloudShell中使用kubectl时，kubectl的权限由登录用户的权限决定。
- CloudShell暂不支持委托账号和子项目。
- 同一用户在使用CloudShell组件连接CCE集群或容器时，限制同时打开的实例上限数量为15个。
- CloudShell中kubectl证书有效期为1天，从云容器引擎重新跳转可以重置有效期。
- 当前少部分区域暂未开放CloudShell，具体请以控制台为准。
 
#### 使用CloudShell登录容器
![](https://support.huaweicloud.com/usermanual-cce/public_sys-resources/notice_3.0-zh-cn.png)
CloudShell基于VPCEP实现，在CloudShell中使用kubectl访问集群需要在集群控制节点的安全组（安全组名称：集群名称-cce-control-随机数）中放通5443端口。5443端口默认对所有网段放通，如果您对安全组做过加固，当出现在CloudShell中无法访问集群时，请检查5443端口是否放通了198.19.0.0/16网段。
1. 登录[CCE控制台](https://console.huaweicloud.com/cce2.0/?#/cce/cluster/list)。
2. 选择需要登录的容器。 
   通过"远程登录容器"统一入口
   1. 在集群列表中找到目标集群，单击"远程登录容器"。或者单击集群名称，在上方导航栏中单击"远程登录容器"。 ![](https://support.huaweicloud.com/usermanual-cce/zh-cn_image_0000002614357885.png "点击放大")
      ![](https://support.huaweicloud.com/usermanual-cce/zh-cn_image_0000002614355313.png "点击放大")
      
   
   2. 选择命名空间，单击目标实例操作列中的"远程登录"。如果实例较多，可以通过搜索关键词进行筛选。 ![](https://support.huaweicloud.com/usermanual-cce/zh-cn_image_0000002614351735.png "点击放大")
      
   
   
   通过工作负载实例列表页面
   1. 单击集群名称进入集群，在左侧选择"工作负载"，单击目标工作负载名称，查看工作负载的实例列表。
   
   2. 单击目标实例操作列中的"远程登录"。
      图1登录容器   
      ![](https://support.huaweicloud.com/usermanual-cce/zh-cn_image_0000002583831314.png "点击放大") 
    
   
   
3. 在弹出窗口中选择要登录的容器以及命令，然后单击"确定"。 
   图2选择登录的容器与命令   
   ![](https://support.huaweicloud.com/usermanual-cce/zh-cn_image_0000001938400752.png "点击放大")
   页面会自动跳转到CloudShell，并初始化启动kubectl，然后自动执行kubectl exec命令登录到容器。
   ![](https://support.huaweicloud.com/usermanual-cce/public_sys-resources/note_3.0-zh-cn.png)
   请等待**kubectl exec**命令自动执行后再操作，此命令出现大约需要5-10秒。
   图3CloudShell页面   
   ![](https://support.huaweicloud.com/usermanual-cce/zh-cn_image_0000002583987128.png "点击放大")
   
   
   
 
#### 使用kubectl命令登录容器
1. 使用kubectl连接集群，详情请参见[通过kubectl连接集群](https://support.huaweicloud.com/usermanual-cce/cce_10_0107.html)。
2. 执行以下命令，查看已创建的Pod。请将后续命令中的*\<namespace\>* 替换为实际命名空间名称。
   
   ```
   kubectl get pod -n <namespace>
   ```
   示例输出如下：
   ```
   NAME                               READY   STATUS    RESTARTS       AGE
   nginx-59d89cb66f-mhljr             1/1     Running   0              11m
   ```
   
   
3. 查询该Pod中的容器名称。 
   ```
   kubectl get po nginx-59d89cb66f-mhljr -n <namespace> -o jsonpath='{range .spec.containers[*]}{.name}{end}{"\n"}'
   ```
   示例输出如下：
   ```
   container-1
   ```
   
   
4. 执行以下命令，登录到nginx-59d89cb66f-mhljr这个Pod中名为container-1的容器。 
   ```
   kubectl exec -it nginx-59d89cb66f-mhljr -n <namespace> -c container-1 -- /bin/sh
   ```
   出现类似**/ #** 或**root@\<container_id\>:/ #** 的命令提示符，则说明已成功登录容器。
   
   
5. 如需退出容器，可执行**exit**命令。
 
#### 相关文档
- [创建工作负载](https://support.huaweicloud.com/usermanual-cce/cce_10_0673.html)：了解工作负载的更多参数。
- [管理工作负载](https://support.huaweicloud.com/usermanual-cce/cce_10_0007.html)：工作负载创建后，您可以对其执行升级、编辑YAML、查看日志等操作。
- 如果工作负载创建失败，请参考[工作负载异常问题排查](https://support.huaweicloud.com/cce_faq/cce_faq_00029.html)进行处理。
- 如果需要从容器访问外部网络，请参见[从Pod访问集群外部网络](https://support.huaweicloud.com/bestpractice-cce/cce_bestpractice_10048.html)。
 
