kubernetes实战入门

Ushiromiya·2022-08-17 11:07·78 次阅读

kubernetes实战入门

1.资源创建方式#

  • 命令行
  • YAML

2.Namespace#

名称空间用来隔离资源

Copy
#命令行 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代表着集群中运行的一个进程

Copy
#命令行 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,比较下面两个命令有何不同效果?

Copy
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
①多副本
Copy
#命令行 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
② 扩缩容
Copy
#方式一 kubectl scale deploy/my-dep --replicas=5 kubectl scale deploy/my-dep --replicas=2 #方式二 kubectl edit deploy my-dep #修改 replicas
③ 自愈以及故障转移
Copy
docker stop xx #模拟容器停机,模拟 node停机 watch –n 1 kubectl get pod kubectl get pod –w #监控
④ 滚动更新
Copy
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 #查看资源状态
⑤ 版本回退
Copy
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的服务发现与负载均衡

①集群内
Copy
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
②外网
Copy
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

Copy
#使用 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 @   战人  阅读(78)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 【自荐】一款简洁、开源的在线白板工具 Drawnix
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY
· Docker 太简单,K8s 太复杂?w7panel 让容器管理更轻松!
点击右上角即可分享
微信分享提示
目录