一、增删改查

root@master:~# kubectl run ninig-deploy --image=nginx:1.14-alpine --port=80 --replicas=1 --dry-run=true  #创建一个容器;run已被弃用

  --image:指定镜像

  --port:暴露的端口

  --replicas=1:指定创建的数量

  --dry-run:干跑模式

root@master:~# kubectl create --help  #运行kubectl run 查看帮助,有示例
root@master:~# kubectl create deployment nginx-deploy --image=nginx --replicas=1 --port=80 #创建一个pod,运行的容器为nginx
root@master:~# kubectl delete pod nginx-deploy #删除一个容器

如发现创建后一直示运行可能过:root@master:~# kubectl describe pod nginx-app-6f7d8d4d55-m9sh8  #查看报错

出现如下错误提示:

  network: open /run/flannel/subnet.env: no such file or directory  #需要检查该目录下是否有该文件,如果没有该文件,需要重初始化环境,初始化时必须加上:--pod-network-cidr 10.244.0.0/16 \参数即可

root@master:~# kubectl get pods -o wide    #查看该pod运行的详细信息
root@master:~# kubectl expose deployment nginx-app --port=80 --target-port=80 --name=nginx-http #创建端口服务,只能在集群内部可以访问,用来被pod客户端访问,pod间可直接通过nginx-http访问
root@master:~# kubectl exec client-644bb55ffc-6kk58 -it -- bash #进入指定pod
root@client-644bb55ffc-6kk58:/# curl nginx-http #pod间直接通过NAME访问
root@master:~# kubectl get pods --show-labels #查看POD标签
root@master:~# kubectl describe service nginx-http #查看service详细标签

创建两个pod,一个service实现访问固定service,后端访问两个pod的内容

kubectl create deployment myapp --image=ikubernetes/myapp:v1 --replicas=2 --port=80
kubectl expose deployment myapp --name=myapp --port=80 --target-port=80 --protocol=TCP
root@master:~# kubectl exec client-644bb55ffc-6kk58 -it -- bash
root@client-644bb55ffc-6kk58:/# curl myapp/hostname.html

修改deployment内pod的数量--pod扩展

root@master:~# kubectl scale --replicas=5 deployment myapp    #将myapp的pod数量改为5
root@master:~# kubectl scale deployment demoapp --replicas=5 #将myapp的pod数量改为5

修改deployment内pod的数量--pod缩减

root@master:~# kubectl scale --replicas=3 deployment myapp    #缩减命令与扩展命令一至,只是数量区别

修改pod使用的镜像

root@master:~# kubectl set image deployment myapp myapp=ikubernetes/myapp:v2    #myapp是容器的名称,需要通过describe查看得知
root@master:~# kubectl rollout status deployment myapp #显示更新过程,
root@master:~# kubectl rollout undo deployment myapp #回滚,默认回滚到上一版本,也可以指定回滚的版本

修改seriver配置使得可以外部访问

root@master:~# kubectl edit service myapp
type: NodePort
root@master:~# kubectl create service nodeport demoapp --tcp=80 #将pod的80端口暴露到外部可访问,外部端口随机使用,可通过--tcp=<port>[:<targetPort>]指定外部端口

创建一个client,并测试pod间可直接通过Service Name进行互相访问

root@master:~# kubectl run client-pod --image="ikubernetes/admin-toolbox:v1.0" --rm -it --command -- bash    #自动进入pod内,使用完成退出后自动删除
[root@client-pod /]$ nslookup --query=A demoapp.default.svc.cluster.local
[root@client-pod /]$ curl http://demoapp.default #测试通过ServiceName进行互相访问,可直接使用demoapp,不加default

查询看容器

root@master:~# kubectl get pods -l app=demoapp    #查看标签为demoapp的pod
root@master:~# kubectl get pods #查看所有pod

删除名称空间的所有的pod

root@master:~# kubectl delete deployment --all    #将deployment名称空间下的所有pod全部删除

总结:

kubeadm是由Kubernetes原生提供的集群部署工具,支持高可用控制平面;kubeadm init可快速拉起一个控制平面,而kubeadm join则用于将节点加入集群之中。

Pod是运行容器化应用及调度的原子单元,同一个Pod中可同时运行多个容器,这些容器共享Mount、UTS及Network等Linux内核名称空间,并能够访问同一组存储卷。

Deployment是最常用的无状态应用控制器,它支持应用的扩缩容、滚动更新等操作,为容器化应用赋予了极具弹性的功能。

Service为弹性变动且存在生命周期的Pod对象提供了一个固定的访问接口,用于服务发现和服务访问。

kubectl是Kubernetes API Server最常用的客户端程序之一,它功能强大、特性丰富,几乎能完成除了安装部署之外的所有管理操作。

最新文章

  1. 【从html到算法框架】科技白学习计划书
  2. 利用activeX控件在网页里自动登录WIN2003远程桌面并实时控制
  3. linux系统文件说明
  4. PHP语法基础
  5. Crystal Reports 2008(水晶报表) JDBC连接mysql数据库
  6. CoreAnimation-08-CATransition
  7. Django session 详解-part II-session
  8. BASH小脚本
  9. SharpDevelop with Silverlight
  10. YII2 Gridview
  11. php 简易验证码(GD库)
  12. java web Servlet学习笔记-2 请求重定向和请求转发的区别
  13. dat.gui stats.js 通用参数配置及图像统计工具
  14. GRUB 的配置文件解析
  15. IOT
  16. 最近的linux工作记录
  17. myCat知识笔记
  18. Hive UDF作业
  19. cookie和localstorage sessionStorage的概念、区别、使用场景
  20. Entity Framework技术系列

热门文章

  1. LSB隐写术
  2. [Python]-pdb模块-单步调试
  3. 【C++】GoogleTest入门指南
  4. Django ORM 实现数据的单表 增删改查
  5. harbor高可用部署
  6. 12.第十一篇 安装docker引擎
  7. 如何从Django项目中删除或隐藏应用
  8. 在k8s中部署前后端分离项目进行访问的两种配置方式
  9. MongoDB 副本集故障情况描述
  10. java基础二、类与继承