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的统一网关入口
① 安装
#使用 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暴露的端口要放行
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 【自荐】一款简洁、开源的在线白板工具 Drawnix
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY
· Docker 太简单,K8s 太复杂?w7panel 让容器管理更轻松!