kubectl命令以及yaml文件格式

本文详细介绍了kubectl命令的使用方法,包括查看版本、资源操作、命名空间管理、副本控制器部署与更新、yaml文件格式以及如何创建和管理Service。展示了Kubernetes资源的创建和维护过程。
摘要由CSDN通过智能技术生成

目录

一、kubectl命令

二、yaml文件格式

 三、写一个yaml文件demo


一、kubectl命令

//查看版本信息

kubectl version

//查看资源对象简写

kubectl api-resources

//查看集群信息 

kubectl cluster-info

//配置kubectl自动补全

source <(kubectl completion bash)

//node节点查看日志

journalctl -u kubelet -f

//查看 master 节点状态

//查看命令空间

kubectl get namespace
kubectl get ns


//命令空间的作用:用于允许不同 命令空间 的 相同类型 的资源 重名的

//查看default命名空间的所有资源

kubectl get all [-n default]

//创建命名空间app

kubectl create ns app
kubectl get ns

//删除命名空间app

kubectl delete namespace app
kubectl get ns  

//在命名空间kube-public 创建副本控制器(deployment)来启动Pod(nginx-wl)

kubectl create deployment nginx-wl --image=nginx  -n kube-public 

//描述某个资源的详细信息

kubectl describe deployment nginx-wl -n kube-public
kubectl describe pod nginx-wl-d47f99cb6-hv6gz -n kube-public

//查看命名空间kube-public 中的pod 信息

kubectl get pods -n kube-public

//kubectl exec可以跨主机登录容器,docker exec 只能在容器所在主机上登录

kubectl exec -it nginx-wl-d47f99cb6-hv6gz bash -n kube-public

//删除(重启)pod资源,由于存在deployment/rc之类的副本控制器,删除pod也会重新拉起来

kubectl delete pod nginx-wl-d47f99cb6-hv6gz -n kube-public

//若pod无法删除,总是处于terminate状态,则要强行删除pod

kubectl delete pod <pod-name> -n <namespace> --force --grace-period=0

#grace-period表示过渡存活期,默认30s,在删除pod之前允许POD慢慢终止其上的容器进程,从而优雅退出,0表示立即终止pod

//扩缩容

kubectl scale deployment nginx-wl --replicas=2 -n kube-public    # 扩容
kubectl scale deployment nginx-wl --replicas=1 -n kube-public    # 缩容

//删除副本控制器

kubectl delete deployment nginx-wl -n kube-public
kubectl delete deployment/nginx-wl -n kube-public

//创建并运行一个或多个容器镜像。
//创建一个deployment 或job 来管理容器。

kubectl create --help

//启动 nginx 实例,暴露容器端口 80,设置副本数 3

kubectl create deployment nginx --image=nginx:1.14 --port=80 --replicas=3

//发布    kubectl expose命令
//将资源暴露为新的 Service。

kubectl expose --help

//查看pod网络状态详细信息和 Service暴露的端口

kubectl get pods,svc -o wide

//查看关联后端的节点

kubectl get endpoints

//查看 service 的描述信息

kubectl describe svc nginx

//在 node01 节点上操作,查看负载均衡端口

yum install ipvsadm -y
ipvsadm -Ln

//在 node02 节点上操作,同样方式查看负载均衡端口

yum install ipvsadm -y
ipvsadm -Ln

//在master01操作 查看访问日志

kubectl logs nginx-cdb6b5b95-fjm2x
kubectl logs nginx-cdb6b5b95-g28wz
kubectl logs nginx-cdb6b5b95-x4m24

//更改现有应用资源一些信息。

kubectl set --help

//获取修改模板

kubectl set image --help

//查看当前 nginx 的版本号

curl -I http://192.168.246.11:44847
curl -I http://192.168.246.12:44847

//将nginx 版本更新为 1.15 版本

kubectl set image deployment/nginx nginx=nginx:1.15

//处于动态监听 pod 状态,由于使用的是滚动更新方式,所以会先生成一个新的pod,然后删除一个旧的pod,往后依次类推

kubectl get pods -w

//再看更新好后的 Pod 的 ip 会改变

kubectl get pods -o wide

//再看 nginx 的版本号

curl -I http://192.168.246.11:44847
curl -I http://192.168.246.12:44847

//对资源进行回滚管理

kubectl rollout --help

//查看历史版本

kubectl rollout history deployment/nginx 

//执行回滚到上一个版本

kubectl rollout undo deployment/nginx

//执行回滚到指定版本

kubectl rollout undo deployment/nginx --to-revision=1

//检查回滚状态
 

kubectl rollout status deployment/nginx

//删除副本控制器

kubectl delete deployment/nginx

//删除service

kubectl delete svc/nginx-service

kubectl get all

二、yaml文件格式

Kubernetes 支持 YAML 和 JSON 格式管理资源对象
JSON 格式:主要用于 api 接口之间消息的传递
YAML 格式:用于配置和管理,YAML 是一种简洁的非标记性语言,内容格式人性化,较易读

YAML 语法格式:
1、大小写敏感
2、使用缩进表示层级关系
3、不支持Tab键制表符缩进,只使用空格缩进
4、缩进的空格数目不重要,只要相同层级的元素左侧对齐即可,通常开头缩进两个空格
5、符号字符后缩进一个空格,如冒号,逗号,短横杆(-)等
6、“---”表示YAML格式,一个文件的开始,用于分隔文件间
7、“#”表示注释

 
三、写一个yaml文件demo

mkdir /opt/demo
cd demo/

vim nginx-deployment.yaml
apiVersion: apps/v1        #指定api版本标签
kind: Deployment        #定义资源的类型/角色,deployment为副本控制器,此处资源类型可以是Deployment、Job、Ingress、Service等
metadata:                    #定义资源的元数据信息,比如资源的名称、namespace、标签等信息
  name: nginx-deployment    #定义资源的名称,在同一个namespace空间中必须是唯一的
  labels:                #定义Deployment资源标签
    app: nginx    
spec:                    #定义deployment资源需要的参数属性,诸如是否在容器失败时重新启动容器的属性
  replicas: 3            #定义副本数量
  selector:                #定义标签选择器
    matchLabels:        #定义匹配标签
      app: nginx        #需与 .spec.template.metadata.labels 定义的标签保持一致
  template:                #定义业务模板,如果有多个副本,所有副本的属性会按照模板的相关配置进行匹配
    metadata:
      labels:           #定义Pod副本将使用的标签,需与 .spec.selector.matchLabels 定义的标签保持一致
        app: nginx
    spec:
      containers:                #定义容器属性
      - name: nginx                #定义一个容器名,一个 - name: 定义一个容器
        image: nginx:1.15.4        #定义容器使用的镜像以及版本
        ports:
        - containerPort: 80        #定义容器的对外的端口

//创建资源对象

kubectl create -f nginx-deployment.yaml

//查看创建的pod资源

kubectl get pods -o wide
//看看是否都为running状态

//创建service服务对外提供访问并测试

vim nginx-service.yaml
apiVersion: v1  
kind: Service  
metadata:
  name: nginx-service
  labels:
    app: nginx  
spec:
  type: NodePort  
  ports:
  - port: 80
    targetPort: 80  
  selector:
    app: nginx

//创建资源对象

kubectl create -f nginx-service.yaml 

//查看创建的service

kubectl get svc
NAME            TYPE        CLUSTER-IP   EXTERNAL-IP   PORT(S)        AGE
kubernetes      ClusterIP   10.0.0.1     <none>        443/TCP        16d
nginx-service   NodePort    10.0.0.119   <none>        80:35680/TCP   14s

//在浏览器输入 nodeIP:nodePort 即可访问

http://192.168.246.11:35680
http://192.168.246.12:35680

  • 16
    点赞
  • 13
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值