范文健康探索娱乐情感热点
热点动态
科技财经
情感日志
励志美文
娱乐时尚
游戏搞笑
探索旅游
历史星座
健康养生
美丽育儿
范文作文
教案论文

K8s创建Pod的不同姿势,常用策略讲解Demo

  写在前面本文内容包括:创建 Pod  的两种方式,pod中镜像获取,重启机制,标签等Demo
  钱比你想象的重要得多,超过20岁了就别整天活在梦里了,对于平凡的你来讲,钱就是你的尊严。
  Pod 环境:Ansible+K8s集群
  master
  vms81.liruilongs.github.io
  192.168.26.81
  node
  vms82.liruilongs.github.io
  192.168.26.82
  vms83.liruilongs.github.io
  192.168.26.83
  Ansible 环境准备   [root@vms81.liruilongs.github.io]-[~]  $cd ansible/  [root@vms81.liruilongs.github.io]-[~/ansible]  $ansible node -m ping 192.168.26.82 | SUCCESS => {     "ansible_facts": {         "discovered_interpreter_python": "/usr/bin/python"     },     "changed": false,     "ping": "pong" } 192.168.26.83 | SUCCESS => {     "ansible_facts": {         "discovered_interpreter_python": "/usr/bin/python"     },     "changed": false,     "ping": "pong" }
  容器集群环境准备  [root@vms81.liruilongs.github.io]-[~/ansible]  $ansible 192.168.26.83 -m shell -a "systemctl enable docker --now" 192.168.26.83 | CHANGED | rc=0 >> Created symlink from /etc/systemd/system/multi-user.target.wants/docker.service to /usr/lib/systemd/system/docker.service.  [root@vms81.liruilongs.github.io]-[~/ansible]  $kubectl get nodes NAME                         STATUS   ROLES                  AGE     VERSION vms81.liruilongs.github.io   Ready    control-plane,master   7d23h   v1.21.1 vms82.liruilongs.github.io   Ready                     7d23h   v1.21.1 vms83.liruilongs.github.io   Ready                     7d23h   v1.21.1  [root@vms81.liruilongs.github.io]-[~/ansible]  $ 一、资源对象创建帮助文档的使用
  kubectl explain --help   [root@vms81.liruilongs.github.io]-[~/ansible/k8s-pod-create]  $kubectl explain --help
  查看pod的语法结构  [root@vms81.liruilongs.github.io]-[~/ansible/k8s-pod-create]  $kubectl explain pods KIND:     Pod VERSION:  v1 DESCRIPTION:      Pod is a collection of containers that can run on a host. This resource is      created by clients and scheduled onto hosts. FIELDS:    apiVersion      ....    kind    .....    metadata        .....    spec    .....    status          ....  [root@vms81.liruilongs.github.io]-[~/ansible/k8s-pod-create]  $kubectl explain pods.metadata KIND:     Pod VERSION:  v1 二、创建Pod的方式
  新建一个命名空间用于创建 新建命名空间:
  kubectl config set-context context1 --namespace=liruilong-pod-create   [root@vms81.liruilongs.github.io]-[~/ansible]  $mkdir k8s-pod-create  [root@vms81.liruilongs.github.io]-[~/ansible]  $cd k8s-pod-create/  [root@vms81.liruilongs.github.io]-[~/ansible/k8s-pod-create]  $kubectl create ns liruilong-pod-create namespace/liruilong-pod-create created
  查看当前集群信息  [root@vms81.liruilongs.github.io]-[~/ansible/k8s-pod-create]  $kubectl config view apiVersion: v1 clusters: - cluster:     certificate-authority-data: DATA+OMITTED     server: https://192.168.26.81:6443   name: cluster1 contexts: - context:     cluster: cluster1     namespace: kube-system     user: kubernetes-admin1   name: context1 current-context: context1 kind: Config preferences: {} users: - name: kubernetes-admin1   user:     client-certificate-data: REDACTED     client-key-data: REDACTED
  查看命名空间  [root@vms81.liruilongs.github.io]-[~/ansible/k8s-pod-create]  $kubectl get  ns NAME                   STATUS   AGE default                Active   8d kube-node-lease        Active   8d kube-public            Active   8d kube-system            Active   8d liruilong              Active   7d10h liruilong-pod-create   Active   4m18s
  设置刚才新建的命名空间为当前命名空间  [root@vms81.liruilongs.github.io]-[~/ansible/k8s-pod-create]  $kubectl config set-context context1 --namespace=liruilong-pod-create Context "context1" modified.命令行的方式创建pod
  kubectl run podcommon --image=nginx --image-pull-policy=IfNotPresent --labels="name=liruilong" --env="name=liruilong"   [root@vms81.liruilongs.github.io]-[~/ansible/k8s-pod-create]  $kubectl run podcommon --image=nginx --image-pull-policy=IfNotPresent --labels="name=liruilong" --env="name=liruilong" pod/podcommon created  [root@vms81.liruilongs.github.io]-[~/ansible/k8s-pod-create]  $kubectl get pods NAME        READY   STATUS              RESTARTS   AGE podcommon   0/1     ContainerCreating   0          12s 查看pod调度到了那个节点
  kubectl get pods -o wide   [root@vms81.liruilongs.github.io]-[~/ansible/k8s-pod-create]  $kubectl run pod-demo --image=nginx  --labels=name=nginx --env="user=liruilong" --port=8888  --image-pull-policy=IfNotPresent pod/pod-demo created  [root@vms81.liruilongs.github.io]-[~/ansible/k8s-pod-create]  $kubectl  get pods -o wide NAME          READY   STATUS    RESTARTS   AGE     IP               NODE                         NOMINATED NODE   READINESS GATES pod-demo      1/1     Running   0          94s     10.244.171.149   vms82.liruilongs.github.io               poddemo       1/1     Running   0          8m22s   10.244.70.41     vms83.liruilongs.github.io                [root@vms81.liruilongs.github.io]-[~/ansible/k8s-pod-create]  $ 删除pod
  kubectl delete pod pod-demo --force   [root@vms81.liruilongs.github.io]-[~/ansible/k8s-pod-create]  $kubectl delete pod pod-demo --force warning: Immediate deletion does not wait for confirmation that the running resource has been terminated. The resource may continue to run on the cluster indefinitely. pod "pod-demo" force deleted  [root@vms81.liruilongs.github.io]-[~/ansible/k8s-pod-create]  $kubectl get pods | grep pod-  [root@vms81.liruilongs.github.io]-[~/ansible/k8s-pod-create]  $
  每个Pod都有一个pause镜像  [root@vms81.liruilongs.github.io]-[~/ansible]  $ansible 192.168.26.83 -m shell -a "docker ps | grep podcomm" 192.168.26.83 | CHANGED | rc=0 >> c04e155aa25d   nginx                                                 "/docker-entrypoint.…"   21 minutes ago   Up 21 minutes             k8s_podcommon_podcommon_liruilong-pod-create_dbfc4fcd-d62b-4339-9f15-0a48802f60ad_0 309925812d42   registry.aliyuncs.com/google_containers/pause:3.4.1   "/pause"                 21 minutes ago   Up 21 minutes             k8s_POD_podcommon_liruilong-pod-create_dbfc4fcd-d62b-4339-9f15-0a48802f60ad_0 生成yaml文件的方式创建pod:-o yaml
  kubectl run pod-demo --image=nginx --image-pull-policy=IfNotPresent --dry-run=client -o yaml >pod-demo.yaml
  yaml文件的获取方法:-o yaml  [root@vms81.liruilongs.github.io]-[~/ansible/k8s-pod-create]  # yaml文件的获取方法:  $kubectl run pod-demo --image=nginx --image-pull-policy=IfNotPresent --dry-run=client -o yaml apiVersion: v1 kind: Pod metadata:   creationTimestamp: null   labels:     run: pod-demo   name: pod-demo spec:   containers:   - image: nginx     imagePullPolicy: IfNotPresent     name: pod-demo     resources: {}   dnsPolicy: ClusterFirst   restartPolicy: Always status: {}
  yaml文件创建pod  [root@vms81.liruilongs.github.io]-[~/ansible/k8s-pod-create]  $kubectl run pod-demo --image=nginx --image-pull-policy=IfNotPresent --dry-run=client -o yaml >pod-demo.yaml
  pod-demo.yaml apiVersion: v1 kind: Pod metadata:   creationTimestamp: null   labels:     run: pod-demo   name: pod-demo spec:   containers:   - image: nginx     imagePullPolicy: IfNotPresent     name: pod-demo     resources: {}   dnsPolicy: ClusterFirst   restartPolicy: Always status: {}
  yaml文件创建pod  [root@vms81.liruilongs.github.io]-[~/ansible/k8s-pod-create]  $kubectl apply -f pod-demo.yaml pod/pod-demo created  [root@vms81.liruilongs.github.io]-[~/ansible/k8s-pod-create]  $kubectl get pods -o wide NAME        READY   STATUS    RESTARTS   AGE   IP            NODE                         NOMINATED NODE   READINESS GATES pod-demo    1/1     Running   0          27s   10.244.70.4   vms83.liruilongs.github.io               podcommon   1/1     Running   0          13m   10.244.70.3   vms83.liruilongs.github.io              
  删除pod:delete pod  [root@vms81.liruilongs.github.io]-[~/ansible/k8s-pod-create]  $kubectl delete pod pod-demo pod "pod-demo" deleted  [root@vms81.liruilongs.github.io]-[~/ansible/k8s-pod-create]  $kubectl get pods -o wide NAME        READY   STATUS    RESTARTS   AGE   IP            NODE                         NOMINATED NODE   READINESS GATES podcommon   1/1     Running   0          14m   10.244.70.3   vms83.liruilongs.github.io               Pod指定命令/删除pod/批量创建Pod
  创建pod时指定运行命令。替换镜像中CMD的命令 方式一  [root@vms81.liruilongs.github.io]-[~/ansible/k8s-pod-create]  $kubectl run comm-pod --image=nginx --image-pull-policy=IfNotPresent --dry-run=client -o yaml -- "echo liruilong" apiVersion: v1 kind: Pod metadata:   creationTimestamp: null   labels:     run: comm-pod   name: comm-pod spec:   containers:   - args:     - echo liruilong     image: nginx     imagePullPolicy: IfNotPresent     name: comm-pod     resources: {}   dnsPolicy: ClusterFirst   restartPolicy: Always status: {} 方式二  [root@vms81.liruilongs.github.io]-[~/ansible/k8s-pod-create]  $kubectl run comm-pod --image=nginx --image-pull-policy=IfNotPresent --dry-run=client -o yaml -- sh -c "echo liruilong" apiVersion: v1 kind: Pod metadata:   creationTimestamp: null   labels:     run: comm-pod   name: comm-pod spec:   containers:   - args:     - sh     - -c     - echo liruilong     image: nginx     imagePullPolicy: IfNotPresent     name: comm-pod     resources: {}   dnsPolicy: ClusterFirst   restartPolicy: Always status: {}
  kubectl delete -f comm-pod.yaml  删除pod [root@vms81.liruilongs.github.io]-[~/ansible/k8s-pod-create]  $kubectl run comm-pod --image=nginx --image-pull-policy=IfNotPresent --dry-run=client -o yaml -- sh c "echo liruilong"  > comm-pod.yaml  [root@vms81.liruilongs.github.io]-[~/ansible/k8s-pod-create]  $kubectl apply  -f comm-pod.yaml pod/comm-pod created  [root@vms81.liruilongs.github.io]-[~/ansible/k8s-pod-create]  $kubectl  delete  -f comm-pod.yaml pod "comm-pod" deleted
  批量创建pod
  通过 sed 更改 pod名字的方式:sed ‘s/demo/demo1/’ demo.yaml | kubectl apply -f -  [root@vms81.liruilongs.github.io]-[~/ansible/k8s-pod-create]  $sed "s/demo/demo1/" demo.yaml  | kubectl apply -f - pod/demo1 created  [root@vms81.liruilongs.github.io]-[~/ansible/k8s-pod-create]  $sed "s/demo/demo2/" demo.yaml  | kubectl create -f - pod/demo2 created  [root@vms81.liruilongs.github.io]-[~/ansible/k8s-pod-create]  $kubectl get pods -o wide NAME          READY   STATUS    RESTARTS   AGE     IP               NODE                         NOMINATED NODE   READINESS GATES demo1         1/1     Running   0          3m29s   10.244.70.32     vms83.liruilongs.github.io               demo2         1/1     Running   0          3m6s    10.244.70.33     vms83.liruilongs.github.io                [root@vms81.liruilongs.github.io]-[~/ansible/k8s-pod-create]  $
  容器共享pod的网络空间的。即使用同一个IP地址:pod IP  [root@vms81.liruilongs.github.io]-[~/ansible]  $ansible 192.168.26.83 -m shell  -a "docker ps | grep demo1" 192.168.26.83 | CHANGED | rc=0 >> 0d644ad550f5   87a94228f133                                          "/docker-entrypoint.…"   8 minutes ago    Up 8 minutes              k8s_demo1_demo1_liruilong-pod-create_b721b109-a656-4379-9d3c-26710dadbf70_0 0bcffe0f8e2d   registry.aliyuncs.com/google_containers/pause:3.4.1   "/pause"                 8 minutes ago    Up 8 minutes              k8s_POD_demo1_liruilong-pod-create_b721b109-a656-4379-9d3c-26710dadbf70_0  [root@vms81.liruilongs.github.io]-[~/ansible]  $ansible 192.168.26.83 -m shell  -a "docker inspect 0d644ad550f5 | grep -i ipaddress " 192.168.26.83 | CHANGED | rc=0 >>             "SecondaryIPAddresses": null,             "IPAddress": "", pod多容器创建
  一个pod内创建多个容器
  comm-pod.yaml 文件编写 apiVersion: v1 kind: Pod metadata:   creationTimestamp: null   labels:     run: comm-pod   name: comm-pod spec:   containers:   - args:     - sh     - -c     - echo liruilong;sleep 10000     image: nginx     imagePullPolicy: IfNotPresent     name: comm-pod0     resources: {}   - name: comm-pod1     image: nginx     imagePullPolicy: IfNotPresent   dnsPolicy: ClusterFirst   restartPolicy: Always status: {}
  创建 多容器pod   [root@vms81.liruilongs.github.io]-[~/ansible/k8s-pod-create]  $kubectl  apply  -f comm-pod.yaml pod/comm-pod created  [root@vms81.liruilongs.github.io]-[~/ansible/k8s-pod-create]  $kubectl  get pods NAME          READY   STATUS    RESTARTS   AGE comm-pod      2/2     Running   0          20s 镜像的下载策略
  --image-pull-policy  Always 每次都下载最新镜像 Never 只使用本地镜像,从不下载 IfNotPresent 本地没有才下载 pod的重启策略
  restartPolicy  –单个容器正常退出Always 总是重启 OnFailure 非正常退出才重启 Never 从不重启labels 标签
  k8s中每个资源对象都有标签  [root@vms81.liruilongs.github.io]-[~/ansible/k8s-pod-create]  $kubectl get nodes --show-labels NAME                         STATUS   ROLES                  AGE   VERSION   LABELS vms81.liruilongs.github.io   Ready    control-plane,master   8d    v1.21.1   beta.kubernetes.io/arch=amd64,beta.kubernetes.io/os=linux,kubernetes.io/arch=amd64,kubernetes.io/hostname=vms81.liruilongs.github.io,kubernetes.io/os=linux,node-role.kubernetes.io/control-plane=,node-role.kubernetes.io/master=,node.kubernetes.io/exclude-from-external-load-balancers= vms82.liruilongs.github.io   Ready                     8d    v1.21.1   beta.kubernetes.io/arch=amd64,beta.kubernetes.io/os=linux,kubernetes.io/arch=amd64,kubernetes.io/hostname=vms82.liruilongs.github.io,kubernetes.io/os=linux vms83.liruilongs.github.io   Ready                     8d    v1.21.1   beta.kubernetes.io/arch=amd64,beta.kubernetes.io/os=linux,kubernetes.io/arch=amd64,kubernetes.io/hostname=vms83.liruilongs.github.io,kubernetes.io/os=linux  [root@vms81.liruilongs.github.io]-[~/ansible/k8s-pod-create]  $kubectl get pods --show-labels NAME        READY   STATUS    RESTARTS   AGE   LABELS podcommon   1/1     Running   0          87s   name=liruilong
  查看标签  [root@vms81.liruilongs.github.io]-[~/ansible/k8s-pod-create]  $kubectl  get pods --show-labels NAME          READY   STATUS    RESTARTS   AGE     LABELS comm-pod      2/2     Running   0          4m43s   run=comm-pod mysql-577h7   1/1     Running   0          93m     app=mysql myweb-4xlc5   1/1     Running   0          92m     app=myweb myweb-ltqdt   1/1     Running   0          91m     app=myweb
  指定标签过滤  [root@vms81.liruilongs.github.io]-[~/ansible/k8s-pod-create]  $kubectl  get pods -l run=comm-pod NAME       READY   STATUS    RESTARTS   AGE comm-pod   2/2     Running   0          5m12s  [root@vms81.liruilongs.github.io]-[~/ansible/k8s-pod-create]  $ pod的状态
  pod的状态
  –
  Pending pod
  因为其他的原因导致pod准备开始创建 还没有创建(卡住了)
  Running pod
  已经被调度到节点上,且容器工作正常
  Completed pod
  里面所有容器正常退出
  error/CrashLoopBackOff
  创建的时候就出错,属于内部原因
  imagePullBackoff
  创建pod的时候,镜像下载失败
冷知识,在过去14年中,苹果iPhone的价格上涨超80Hello,这里是2亿iPhone用户都在用的爱思助手。根据一项针对iPhone的最新研究,自2007年推出以来,苹果iPhone的价格在全球范围内上涨了80以上。根据赛尔夫公司开滴滴司机发飙春节期间打车要给司机五元福利费,强迫用户多出钱,对比你怎么看?这两天滴滴群里说的最多的一句话就是过年了,上车加5元,虽然很久没出车了,但是看到群里的家伙们这个点还在外面奔波还是有一些感慨的!我开滴滴的时候,如果接到了乡下单,都会试探性的让乘客传闻中的Pixel623W无线充电支架和更多细节提前泄露Google即将推出的Pixel6的泄露图片,让我们最精确地看到了这家搜索巨头的下一款旗舰智能手机的新功能。这些图片是由埃文布拉斯(EvanBlass)泄露的,揭示了第二代Pixe加拿大很快将决定是否禁止华为参与5G建设?赵立坚加方应独立自主作出选择中国青年报客户端北京10月12日电(中青报中青网记者胡文利)在中国外交部今天的例行记者会上,有外媒记者提问据报道,在是否应该禁止华为参与加拿大的5G建设问题上,加拿大政府预计很快将华为自研手机操作系统是否威胁到锤子科技的行业地位?哈哈哈哈哈,原谅我看到这个问题实在忍不住笑了。华为锤子在手机行业的地位可谓一个天上一个地下,前者去年出货量超过2亿台,后者5年500万台销量都不到,二者根本就没可比性,更没有威胁一请问怎么样用手机在一张图片上加上想说的话呢?我最近用的一款特别好用的app叫图曰(yue),特别牛,不仅可以非常迅速的添加自己说的话,还可以自动识别图片,添加文字比如下面这张风景照我放到应用当中,它就自动识别图片给添加上文字耳朵听不到,配助听器有用吗?为什么?只要还有残余听力就可以配助听器,先检查,根据听力情况选配适合的助听器。耳朵听不到,不代表完全没有残余听力了,如果有残余听力是可以佩戴助听器的,但是效果是因人而异。如果是完全没有听力所有的银行卡密码和所有使用密码的软件都设置同一个密码安全吗?所有的银行卡密码和APP软件都使用同一个密码,答案只有一个,那就是非常不安全。但现实情况是有多少人会在不同的地方使用不同的密码呢?估计这种人会非常少,原因只有一个,谁能记住那么多的做个精致男人,追求新潮好物,你不妨来看看须眉剃须刀R2潮玩家剃须刀对于男士来说是每天必用的,理容整洁,才能更好地面对一天的工作与学习,也可让人显得更精神。而剃须刀品牌也是繁多,每一款都有自己的特色,对于大部分人来说,一款剃须刀的好坏还是主要HTC推出VR眼镜VIVEFLOW,支持与手机互通10月14日,HTC正式推出了全新形态的沉浸式眼镜VIVEFLOW。相较于之前常见的HTCVR眼镜来说,FLOW可谓是轻量级的存在。定位入门便携的VIVEFLOW通过无线连接的方式买部华为送老伴巜老伴换手机老伴古稀龄,仍玩智能机。买个外国板,还是用华为。不能打电话,只能上微信。多次找人修,结果都不行。又到华为店,洛瓦九更新。一看标价牌,卖价四千整。心里真喜欢,总又舍不得。
华为杀入支付战局,劲敌还是分羹?口嫌体正直,继美团支付滴滴支付多多支付字节支付后,曾说没有进入支付市场计划的华为也来了。4月5日,北京商报记者注意到,华为支付现身华为钱包App,并推出首绑及随机立减营销活动。华为华为再成立十大军团孟晚舟授旗据深圳商报,继去年成立首批五个军团后,华为内部论坛心声社区最新消息显示,3月30日,华为在深圳华为坂田基地K区举行第二批军团组建成立大会。华为董事CEO任正非和公司主要高管出席大会孟晚舟任华为轮值董事长,任正非曾说她不可能做接班人根据华为官网显示,华为首席财务官孟晚舟正式担任华为轮值董事长。轮值董事长在当值期间是华为公司最高领袖,主持公司董事会及董事会常务委员会。目前,华为的轮值董事长有3位,为徐直军胡厚崑杨元庆未来五年联想集团研发总投入将超1000亿人民币IT之家4月6日消息,今日联想集团董事长杨元庆在联想集团新财年(20222023财年)誓师大会上表示,到20232024财年结束的时候,联想集团的的研发投入将在20202021财年4月15日起,亚马逊美加站将征收这一费用近日,亚马逊发布公告称,从2022年4月15日开始,加州市场税征收(MTC)规则将增加新费用,包括受MTC限制的监管费用(例如,电子废物回收费等)。需要注意的是,此项监管费是针对买亚马逊为ProjectKuiper卫星互联网项目签订发射协议亚马逊公司(Amazon。comInc。,AMZN)周二表示,为ProjectKuiper争取到了未来五年最多83次的发射机会,该项目是一个低地轨道卫星系统,用于向全球没有服务和服vivo首款折叠屏XFold配置揭露集微网消息,vivo上月宣布,其将于4月11日举办新品发布会,正式推出旗下首款折叠屏手机vivoXFold,近日有网友晒出了该机的线下宣传物料,其亮点配置已经完全曝光。根据宣传图,iPhone13坚持用5年会卡吗?很多果粉都非常关心一个问题花6000元,买一台iPhone13,用五年可以吗?关于这个问题,其实没有唯一的答案,因为每个人的需求不同。有的人不追求拍照,也不怎么玩游戏,只要手机流畅竹叶青启动线上严打季,打击线上电商平台低价窜货等行为近日,山西杏花村竹叶青产业有限责任公司发布通报,决定于2022年46月开展线上严打季行动。公司已组织专门队伍,重点打击线上电商平台低价窜货等违规行为,特别是在5月1日以后仍然不收敛APP开发怎么才能受欢迎很多APP开发出来以后难以得到用户的喜爱,即使靠着初期的推广运营,进入客户的视线,用户也只是看看,难以留存,相信任何一个企业在APP开发的时候,都希望自己的产品能受到用户的喜爱,完理光发布GRIII和GRIIIx重量级固件更新理光发布GRIII和GRIIIx重量级固件更新理光公司正式发布了RICOHGRIII固件1。60版本和RICOHGRIIIx固件1。10版本。GRIII和GRIIIx更新内容功能扩