【读书笔记】12 牛刀小试:我的第一个容器化应用
admin
2023-04-03 17:22:06
0

《深入剖析Kubernetes - 12  牛刀小试:我的第一个容器化应用》


主要包括2个步骤:制作镜像 和 编写yaml配置文件(或json)

以 nginx 的deployment 为例

apiVersion: apps/v1 
kind: Deployment 
metadata: 
  name: nginx-deployment 
spec: 
  selector: 
    matchLabels: 
      app: nginx 
  replicas: 2 
 template: 
   metadata: labels: 
     app: nginx 
   spec: 
     containers: 
     - name: nginx 
       image: nginx:1.7.9 
       ports: 
       - containerPort: 80


其中kind 字段声明类型,例如deployment、daemonset 等,metadata 是具体描述,例如name、namespace、labels、annotations等

spec.template 描述了pod 的细节,即容器配置的模板


创建deployment

$ kubectl create -f nginx-deployment.yaml


查看deployment运行情况

$ kubectl get pods -l app=nginx 
NAME READY STATUS RESTARTS AGE n
ginx-deployment-67594d6bf6-9gdvr 1/1 Running 0 10m 
nginx-deployment-67594d6bf6-v6j7w 1/1 Running 0 10m


查看API 对象细节

kubectl describe pod nginx-deployment-67594d6bf6-9gdvr
Name:               nginx-deployment-67594d6bf6-9gdvr
Namespace:          default
Priority:           0
PriorityClassName:  
Node:               node-1/10.168.0.3
Start Time:         Thu, 16 Aug 2018 08:48:42 +0000
Labels:             app=nginx
                    pod-template-hash=2315082692
Annotations:        
Status:             Running
IP:                 10.32.0.23
Controlled By:      ReplicaSet/nginx-deployment-67594d6bf6
...
Events:

  Type     Reason                  Age                From               Message

  ----     ------                  ----               ----               -------
  
  Normal   Scheduled               1m                 default-scheduler  Successfully assigned default/nginx-deployment-67594d6bf6-9gdvr to node-1
  Normal   Pulling                 25s                kubelet, node-1    pulling image "nginx:1.7.9"
  Normal   Pulled                  17s                kubelet, node-1    Successfully pulled image "nginx:1.7.9"
  Normal   Created                 17s                kubelet, node-1    Created container
  Normal   Started                 17s                kubelet, node-1    Started container


其中Events 字段可用于后期问题定位,常见的有

(1)找不到合适的node节点调度pod,包括

node节点label匹配不上;

node节点资源不够分配;

node节点设置了污点;

node节点网络异常;


(2) 镜像拉取失败

升级容器镜像版本

...    
    spec:
      containers:
      - name: nginx
        image: nginx:1.8 # 这里被从 1.7.9 修改为 1.8
        ports:
      - containerPort: 80


执行

$ kubectl replace -f nginx-deployment.yaml

更常见的方式是,通过apply 执行相关操作,无论是创建还是修改都可以通过该命令完成

$ kubectl apply -f nginx-deployment.yaml 
# 修改 nginx-deployment.yaml 的内容 
$ kubectl apply -f nginx-deployment.yaml

下面是一个volume挂载的例子

通常分为emptyDir 和 hostPath 两种,两者的区别在于前者不需要指定宿主机目录(源目录),k8s 会在宿主机上创建一个临时目录并挂载进去;而后者,则需要显式声明挂载的源目录,例如将宿主机的/usr/local/nginx/html 目录挂载到容器同样的位置


emptyDir的例子

volumes:
      - name: nginx-vol
        emptyDir: {}
hostPath的例子
...   
    volumes:
      - name: nginx-vol
        hostPath: 
          path: /var/data


进入容器

$ kubectl exec -it nginx-deployment-5c678cfb6d-lg9lw -- /bin/bash 
# ls /usr/share/nginx/html


删除容器

$ kubectl delete -f nginx-deployment.yaml


相关内容

热门资讯

特朗普下令不打了,美国的“余粮... 可以说戛然而止,快得让很多人都无法适应。前两周,每一天美国都要打击伊朗一通。就在7月24日白宫会议前...
穆杰塔巴最新表态:支持黎真主党 △伊朗最高领袖穆杰塔巴·哈梅内伊(资料图)当地时间7月26日晚,伊朗最高领袖穆杰塔巴·哈梅内伊对黎巴...
美军瘫痪一艘驶向伊朗的油轮,特... 美国总统特朗普虽下令暂停打击伊朗,但美军仍在执行对霍尔木兹海峡的封锁任务。针对美军瘫痪一艘驶向伊朗油...
“小牌大耍”的底气到底是哪里来... 澎湃首席评论员 李平这两天,“艺人李权哲乘高铁占座事件”在网上引发热议,该艺人参加的活动主办方曾发布...
越南籍船舶南海遇险沉没,中方已... 据凤凰卫视报道,一艘越南船舶7月24日夜间在越南庆和以东220海里附近遇险沉没,船上共62名越南籍人...
李权哲占座、蒙面、装死:娱乐圈... 你买了一张高铁一等座的票,找到自己的位置,18A。有人坐着。你拿出手机看了眼购票记录——没错,18A...
杭州景区咖啡店闯入1条幼蛇,仅... 夏天气温高、湿度大,蛇类活动进入高峰期,千万别被“小蛇无害”的刻板印象骗了!有些幼蛇看着迷你可爱,实...
AI开源公开信签署企业增至50... IT之家 7 月 26 日消息,英伟达、微软、IBM、Meta 等 25 家美国科技企业本周(7 月...
南阳快手短视频代运营企业的服务... 在短视频平台快速发展的背景下,企业通过快手等渠道进行内容运营已成为常见的市场动作。对于希望借助短视频...
普通人该如何跟上科技发展的步伐 这个被称作科技的词汇, 听起来既有宏大之感, 又颇为遥远, 好似仅仅归属于在实验室里专心致志钻研的科...