kubectl的使用以及创建deployment

  • kubectl的使用

    • 常见概念

    • kubectl管理命令概要

  • 管理和使用deployment

    • 基于deployment创建nginx pod,有一个副本

    • 查看k8s对象状态

    • 发布应用

    • 服务伸缩

    • 滚动更新

kubectl的使用

常见概念

  • devops 开发和运维
    实现的方式有:python,docker+k8s,git+Jenkins

  • k8s
    k8s集成了docker三剑客(compose,swam,machine)的功能。

  • pod与pod控制器
    一个pod是一个或者多个容器。
    pod控制器是用来控制、管理pod的数量,状态。

  • service
    由于pod的地址会发生改变,通过service可以为pod提供一个统一的访问入口

kubectl管理命令概要

10c8723299c851ef66d0bd29ee9492cc.pnge6480e3974d38180c048c4eec0d85835.png

kubectl create -h
kubectl create deployment -h

管理和使用deployment

deployment的作用:

  • 创建指定数量的pod

  • 检查pod健康状态和数量

基于deployment创建nginx pod,有一个副本

  • 方法一

kubectl run nginx-dep1 --image=nginx:1.8 --replicas=1
kubectl get deployment
kubectl get pods
kubectl get pods -o wide
free -m

f96f1a051c5d8371b1bccb78ad34e7e2.png

  • 方法二:通过kuboard创建podbb1cdc0b545087d283a0f5a057a11fa7.png19c83768aa2e8b2782635b07de61c88d.png25bf348048f6bb0d093f38125b321698.png77bb37fb750f934814b3b2dcd31b2003.png

  • 方法三:创建yaml文件

## 创建yaml文件
vim ngx-dep.yaml
## yaml文件内容
apiVersion: apps/v1
kind: Deployment
metadata:
name: ngx-dep3
labels:
app: ngx
type: webservice
spec:
replicas: 1
selector:
matchLabels:
app: ngx
template:
metadata:
labels:
app: ngx
spec:
containers:
- name: nginx
image: nginx:1.8
## 执行yaml文件
kubectl apply -f ngx-dep.yaml

2fcb2d0b321386aa5033b202f70b678e.png

查看k8s对象状态

kubectl get 资源类型
kubectl get pod
kubectl get pod -o wide
kubectl get deployment
kubectl get deployment -o wide
kubectl get namespace
# 指定查看某个命名空间下的pod
kubectl get pod -n kube-system
# 查看所有命名空间下的pod
kubectl get pod -A -o wide


kubectl describe 资源类型
kubectl describe pod
kubectl describe pod web-nginx-dep2-5f4fbd5bfb-jqw9z
kubectl describe pod -o wide
kubectl describe deployment
kubectl describe deployment -o wide
kubectl describe namespace
# 指定查看某个命名空间下的pod
kubectl describe pod -n kube-system
# 查看所有命名空间下的pod
kubectl describe pod -A -o wide

kubectl logs 显示pod中的容器中运行过程中产生的日志信息
kubectl logs ngx-dep3-64cfcc9ddc-92x9s

kubectl run bx --image=busybox
kubectl exec -it nginx-dep1-6dd5d75f8b-mgndd /bin/bash
kubectl exec -it pod对象 /bin/bash

资源类型:
node
pod
service
deployment
namespacec11615ce1b30c8f0366497abc9bd8a87.png48ac897c0171052f052dbbff1d906920.png5ee101f8308c1bb679aa422a0c0a05ae.png

发布应用

用service来发布服务

首先创建yaml

apiVersion: v1
kind: Service
metadata:
name: ngx-svc
labels:
app: ngx
spec:
selector:
app: ngx
ports:
- name: nginx-ports
protocol: TCP
port: 80
nodePort: 32002
targetPort: 80
type: NodePort
## 执行yaml文件
kubectl apply -f ngx_svc.yaml
#查看service的端口映射信息
kubectl get svc
#此时,可以访问集群中的任意一个node节点,来访问web页面
curl http://192.168.31.66:32002

6eb7205208dd26450ef6ce42bf4492bb.png64fde2a682dab6116bf7cf44a09dea4d.png63a8a3951eae0b05c4975b811fc854f2.png

服务伸缩

根据客户端的请求流量实现弹性管理c41ff594cde14aacd9067f0704c7fc35.png73114eaaec5f9a22d966f0131e97ca81.png

滚动更新

## 将1.8修改成1.7.9
vim ngx-dep.yaml
kubectl apply -f ngx-de
kubectl apply -f ngx-dep.yaml
watch kubectl get pods -l app=ngx
kubectl get pods -l app=ngx
kubectl describe pod ngx-dep3-5f55b87775-6lpjj

d2e6987692d7de259a8d80cb77ccaaa6.png

Logo

K8S/Kubernetes社区为您提供最前沿的新闻资讯和知识内容

更多推荐