首页 > 其他分享 >K8s 问题及解答

K8s 问题及解答

时间:2024-07-01 14:52:53浏览次数:19  
标签:kubectl k8s name yaml -- 问题 nginx K8s 解答

问题及解答

  1. kubectl proxy 命令及其含义,如何通过 proxy 访问 kubernetes 集群?

    Creates a proxy server or application-level gateway between localhost and the Kubernetes API Server. It also allows serving static content over specified HTTP path. All incoming data enters through one port and gets forwarded to the remote kubernetes API Server port, except for the path matching the static content path.

    在本地主机和 Kubernetes API 服务器之间创建代理服务器或应用程序级网关。它还允许通过指定的 HTTP 路径提供静态内容。 除了与静态内容路径匹配的路径之外,所有传入的数据都通过一个端口进入并转发到远程 kubernetes API Server 端口。

    kubectl proxy --port=8080
    
    # 获取 API 版本
    # curl http://localhost:8080/api/
     
    {
      "kind": "APIVersions",
      "versions": [
        "v1"
      ],
      "serverAddressByClientCIDRs": [
        {
          "clientCIDR": "0.0.0.0/0",
          "serverAddress": "10.0.2.15:8443"
        }
      ]
    }
    

    获取 Pod 列表

   # curl http://localhost:8080/api/v1/namespaces/default/pods

   {
     "kind": "PodList",
     "apiVersion": "v1",
     "metadata": {
       "resourceVersion": "33074"
     },
     "items": [
       {
         "metadata": {
           "name": "kubernetes-bootcamp-2321272333-ix8pt",
           "generateName": "kubernetes-bootcamp-2321272333-",
           "namespace": "default",
           "uid": "ba21457c-6b1d-11e6-85f7-1ef9f1dab92b",
           "resourceVersion": "33003",
           "creationTimestamp": "2016-08-25T23:43:30Z",
           "labels": {
             "pod-template-hash": "2321272333",
             "run": "kubernetes-bootcamp"
           },
           ...
   }

2. `kubectl port-forward` 命令及其含义,如何通过 port-forward 访问应用?

> Forward one or more local ports to a pod.
>
> 转发一个或多个本地端口到 Pod 中。
>
> Use resource type/name such as deployment/mydeployment to select a pod. Resource type defaults to 'pod' if omitted.
>
> 使用资源类型/名称(例如 deploy/ mydeployment)来选择容器。 如果省略,资源类型默认为 'pod'。

```bash
# 监听本地 5000 端口,转发至 Pod 的 5000 端口
kubectl port-forward deployment/mydeployment 5000

# 监听本地 6000 端口,转发至 Pod 的 5000 端口
kubectl port-forward deployment/mydeployment 6000:5000

# 监听本地随机端口,转发至 Pod 的 5000 端口
kubectl port-forward deployment/mydeployment :5000
  1. 修改 Pod label 使其与 Deployment 不相符,集群有什么变化?

    # 创建 Deploy
    kubectl run nginx --image=nginx --replicas=3 -n k8s-yaml --record
     
    # 修改 Lable(注意 overwrite)
    kubectl label pod/nginx-7bb7cd8db5-6p69t run=nginx2 --overwrite -n k8s-yaml
    

    Deployment 控制器会新起一个 nginx Pod,以达到期望的 Replica。

  2. kubectl run 如何向 Pod 注入环境变量?如何查看是否注入成功?

    # 通过 `env` 选项
    kubectl run busybox --image=busybox --restart=Never --env="HELLO=World" -- env
     
    # 通过查看 log
    kubectl logs busybox
     
    PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin
    HOSTNAME=busybox
    HELLO=World
    KUBERNETES_SERVICE_PORT=443
    KUBERNETES_SERVICE_PORT_HTTPS=443
    KUBERNETES_PORT=tcp://10.96.0.1:443
    KUBERNETES_PORT_443_TCP=tcp://10.96.0.1:443
    KUBERNETES_PORT_443_TCP_PROTO=tcp
    KUBERNETES_PORT_443_TCP_PORT=443
    KUBERNETES_PORT_443_TCP_ADDR=10.96.0.1
    KUBERNETES_SERVICE_HOST=10.96.0.1
    HOME=/root
    
  3. 如何通过 kubectl rollout 将应用回滚到指定版本?

    # 创建 Deploy
    kubectl run nginx --image=nginx --replicas=3 --namespace=k8s-yaml --record=true
     
    # 修改 Nginx 的 Version,将 image=nginx 修改成 image=nginx:1.15.2
    kubectl edit deploy/nginx -n k8s-yaml
     
    # 查看此 Deploy 的 history
    kubectl rollout history deploy/nginx -n k8s-yaml
     
    deployment.extensions/nginx
    REVISION  CHANGE-CAUSE
    1         kubectl run nginx --image=nginx --replicas=3 --namespace=k8s-yaml --record=true
    2         kubectl run nginx --image=nginx --replicas=3 --namespace=k8s-yaml --record=true
     
    # 还原到上一版本
    kubectl rollout undo deploy/nginx -n k8s-yaml
    # 还原到特定版本
    kubectl rollout undo deploy/nginx --to-revision=1 -n k8s-yaml
    
  4. Pod LivenessProbe 如何使用 exec 进行健康检查?

    apiVersion: apps/v1
    kind: Deployment
    metadata:
      name: nginx
      namespace: k8s-yaml
    spec:
      selector:
        matchLabels:
          app: nginx
      template:
        metadata:
          labels:
            app: nginx
        spec:
          containers:
          - name: nginx
            image: nginx
            resources:
              limits:
                memory: "128Mi"
                cpu: "50m"
            # 只是为了演示使用 EXEC,Command 无意义
            livenessProbe:
              exec:
                command: ['sh', '-c', 'date >> /usr/share/nginx/html/index.html']
            ports:
            - containerPort: 80
    
  5. Pod Lifecycle 如何使用 PostStart Hook?

    apiVersion: apps/v1
    kind: Deployment
    metadata:
      name: nginx
      namespace: k8s-yaml
    spec:
      selector:
        matchLabels:
          app: nginx
      template:
        metadata:
          labels:
            app: nginx
        spec:
          containers:
          - name: nginx
            image: nginx
            # lifecycle 只有 postStart 和 preStop
            lifecycle:
              postStart:
                 tcpSocket:
                    port: 80
            resources:
              limits:
                memory: "128Mi"
                cpu: "50m"
            ports:
            - containerPort: 80
    
  6. 创建一个 Secret 并在 Pod 内访问。

    创建 Secret

    使用 Secret

  7. 利用环境变量加载 configmap 的例子。

    # 创建 ConfigMap
    apiVersion: v1
    kind: ConfigMap
    metadata:
      name: cm
      namespace: k8s-yaml
    data:
      key1: value1
      key2: value2
     
    # 使用 cm
    apiVersion: v1
    kind: Pod
    metadata:
      name: busybox
      namespace: k8s-yaml
      labels:
        name: busybox
    spec:
      containers:
      - name: busybox
        image: busybox
        command:
          - "/bin/sh"
          - "-c"
          - "env"
        envFrom:
          - configMapRef:
              name: cm
        resources:
          limits:
            memory: "128Mi"
            cpu: "50m"
     
    # 第二种
    ...
    env:
      - valueFrom:
          configMapKeyRef:
            name: cm
            key: key1
    ...
    
  8. kubernetes 多区域运行。

    多区域运行

  1. 1-9 题目来源
  2. kubectl proxy
  3. http-proxy-access-api
  4. port-forward

标签:kubectl,k8s,name,yaml,--,问题,nginx,K8s,解答
From: https://www.cnblogs.com/colasdn/p/18278037

相关文章

  • GEE问题:Landsat Collection 2不同传感器之间是否需要进行协调校正?
    LandsatTeam团队和GEE团队对于大多数应用而言,在使用采集2地表反射率产品时,无需进行任何传感器间协调校正(转述Landsat科学团队MikeWulder的信息)(个人经验)。使用波段比指数时尤其如此。您提到的Roy等人的系数是为采集前数据开发的。大地遥感卫星档案现已进入第2个数......
  • 浅谈 K8s Service 网络机制
    浅谈K8sService网络机制云原生运维圈 2024-07-0112:03 上海 1人听过 以下文章来源于腾讯云原生 ,作者王成腾讯云原生.云原生技术交流阵地,汇聚云原生最新技术资讯、文章、活动,以及云原生产品及用户最佳实践内容。王成,腾讯云研发工程师,Kubernetesmember,从......
  • 看门狗游戏启动困境:ace-drv32.dll丢失问题的全面修复方案一览
    遇到《看门狗》(WatchDogs)游戏提示“ace-drv32.dll”文件丢失的问题,意味着您的系统中可能缺少或损坏了Ubisoft游戏运行所需的某些组件。以下是解决此问题的步骤:1.重新安装游戏尝试卸载并重新安装游戏,有时候游戏的重新安装可以自动修复缺失的文件问题。2.更新UbisoftCon......
  • 2024 年 5 亿大模型新应用井喷即将到来,算力问题该如何解决?
    在科技飞速发展的2024年,我们正站在大模型应用爆发的前沿。预计将有5亿大模型新应用如雨后春笋般涌现,为各行各业带来前所未有的变革。然而,在这令人兴奋的前景背后,算力问题却成为了制约其发展的关键瓶颈。大模型的训练和运行需要巨大的计算资源,其对算力的需求呈指数级增长......
  • 有关paddleocr在pyinstall中打包问题的解决方案
    借鉴网址python解决paddleocr打包问题_pyinstaller怎么解决paddleocr中的动态导入-CSDN博客在打包时我使用的spec文件如下:(需要将pathe和binaries换为自己的paddleocr路径)block_cipher=Nonea=Analysis(['main.py'],   pathex=['E:\\PyEnviroment\\Lib\\site-packages\\p......
  • h5 移动端align-items: center; 字体行高偏上问题;vant 按钮字体不居中问题
    最近写h5页面,用的vant,验收时候,ui说按钮的字上下不居中 是不是很难看出来有点靠上,我拿了个牙签比了一下,才觉得靠上,用电脑打开就是好的 后来加了个背景色,发现行高不一样发现下面(手机端)这个文字行高不太居中, 然后添加了属性 /deep/.van-button__content{line-heigh......
  • 解决.NET Core Ajax请求后台传送参数过大请求失败问题
    原文链接:https://www.cnblogs.com/xiongze520/p/14500156.html今天在项目上遇到一个坑,在.NetCore中通过ajax向mvc的controller传递对象时,控制器(controller)的方法一直没有进去,百思不得其解,后面把传递的参数打印出来发现传递的参数比较大,有2.4M的数据,如下图:后面跟踪项目发现we......
  • ata1.00: exception Emask 0x0 SAct 0x8000000 SErr 0x0 action 0x6 frozen 问题解析
    ata1.00:exceptionEmask0x0SAct0x8000000SErr0x0action0x6frozen硬盘问题测试发现嵌入式linuxvfat文件系统的sata固态硬盘偶然启动时出现异常打印如下:ata1.00:exceptionEmask0x0SAct0x8000000SErr0x0action0x6frozenata1.00:failedcommand:READFPD......
  • 使用.Net6中的System.Text.Json遇到几个常见问题及解决方案
    原文链接:https://blog.csdn.net/zls365365/article/details/124162096前言以前.NetCore是不内置JSON库的,所以大家都用Newtonsoft的JSON库,而且也确实挺好用的,不过既然官方出了标准库,那更方便更值得我们多用用,至少不用每次都nuget安装Newtonsoft.Json库了。字符编码问题默认的S......
  • 52单片机超声波测距时无法刷新检测的问题
    本实验采用超声波模块HC-SR04模块进行测量距离,假设距离短则LED1亮,反之LED2亮#include"reg52.h"sbitled1=P3^7;sbitled2=P3^6;sbitTrig=P1^5;sbitEcho=P1^6;voidDelay10us()      //@11.0592MHz{   unsignedchari;   i=2; ......