kubernetes实战入门

1.资源创建方式

  • 命令行
  • YAML

2.Namespace

名称空间用来隔离资源

#命令行  
kubectl get ns  
kubectl get pods –A  
kubectl get pod –n kubernetes-dashboards #打印命名空间下部署的应用 
kubectl create ns hello  
kubectl delete ns hello  
#YAML  
apiVersion:v1  
kind:Namespace  
metadata:  
  name:hello  
  
kubectl apply –f hello.yaml  
kubectl get ns  
kubectl delte –f hello.yaml  

3.Pod

一个Pod代表着集群中运行的一个进程

#命令行  
kubectl run mynginx --image=nginx  
kubectl get pod #查看default名称空间的pod  
kubectl describe pod mynginx #查看底层处理情况  
docker ps|grep mynginx #在分配的节点处查看   
kubectl delete pod mynginx  
#YAML  
apiVersion:v1  
kind:Pod  
metadata:  
 labels:  
  run:mynginx  
   name:mynginx  
spec:  
 containers:  
-	image:nginx  
  name:mynginx  

kubectl apply –f pod.yaml  
kubectl get pod  
kubectl describe pod mynginx  
kubectl delete –f pod.yaml  

kubectl logs mynginx –f #打印日志 –f追踪  
kubectl get pod –o wide #每个Pod-k8s都会分配一个IP  
curl IP:端口 #Pod的ip+pod运行容器的端口  
kubectl exec –it mynginx -- /bin/bash #kubectl exec -it podName  -c  containerName -n namespace -- shell comand
vi /usr/share/nginx/html/index.html  
123  
curl IP:端口
#多容器 YAML脚本  
apiVersion: v1  
kind: Pod  
metadata:  
  labels:  
    run: myapp  
  name: myapp  
spec:  
  containers:  
  - image: nginx  
    name: nginx  
  - image: tomcat:8.5.68  
name: tomcat  

kubectl apply –f pod.yaml  
watch –n 1 kubectl get pod  

4.Deployment(工作负载)

清除所有Pod,比较下面两个命令有何不同效果?

kubectl run mynginx --image=nginx  
kubectl create deployment mytomcat --image=tomcat:8.5.68
#自愈能力  
kubectl delete pod xx    
kubectl get deploy  
kubectl get mytomcat   
kubectl delete deploy mytomcat   
①多副本
#命令行
kubectl create deployment my-dep --image=nginx --replicas=3   
#YAML
apiVersion: apps/v1  
kind: Deployment  
metadata:  
  labels:  
    app: my-dep  
  name: my-dep  
spec:   
  replicas: 3  
  selector:  
    matchLabels:  
      app: my-dep  
  template:  
    metadata:  
      labels:  
        app: my-dep  
    spec:  
      containers:  
      - image: nginx  
        name: nginx  
② 扩缩容
#方式一
kubectl scale deploy/my-dep --replicas=5  
kubectl scale deploy/my-dep --replicas=2  
#方式二
kubectl edit deploy my-dep #修改 replicas  
③ 自愈以及故障转移
docker stop xx #模拟容器停机,模拟 node停机  
watch –n 1 kubectl get pod  
kubectl get pod –w #监控  
④ 滚动更新
kubectl get deploy my-dep –o yaml #查看版本  
kubectl set image nginx=nginx:1.16.1 deploy/my-dep –record #更新版本  
kubectl rollout status deployment/my-dep   #查看资源状态  
⑤ 版本回退
kubectl rollout history deployment/my-dep #查看历史状态  
kubectl rollout history deployment/my-dep --revision=2 #查看某个历史详情  
kubectl rollout undo deployment/my-dep #回滚(回到上次)  
kubectl rollout undo deploy/my-dep --to-revision=1 #回退指定版本  
kubectl get pod –w  
kubectl get deploy/my-dep –o yaml|grep image #进入deployment(mytomcat)的 yaml文件并且查找关键字 image

更多:
除了Deployment,k8s还有 StatefulSet 、DaemonSet 、Job 等类型资源。我们都称为工作负载。有状态应用使用 StatefulSet 部署,无状态应用使用 Deployment 部署.
工作负载资源

5.Service

Pod的服务发现与负载均衡

①集群内
kubectl delete service my-dep  
kubectl expose deploy my-dep –port=8000 –target-port=80 –type=ClusterIP #集群内使用 service的ip:端口就可以负载均衡的访问
kubectl get service
kubectl get pod -l app=my-dep #使用标签检索Pod
curl ip:8000
curl 域名:服务名.所在名称空间.svc
②外网
kubectl delete service my-dep
kubectl expose deploy my-dep --port=8000 --target-port=80 --type=ClusterIP –type=NodePort

6.Ingress

service的统一网关入口

① 安装

NGINX Ingress Controller

#使用 YAML安装
wget https://raw.githubusercontent.com/kubernetes/ingress-nginx/controller-v0.47.0/deploy/static/provider/baremetal/deploy.yaml
kubectl apply –f deploy.yaml  
#检查安装的结果
kubectl get pod,svc -n ingress-nginx  
#最后别忘记把svc暴露的端口要放行
Ingress的使用
posted @ 2022-08-17 11:07  战人  阅读(87)  评论(0)    收藏  举报