1. pod 管理
Pod是可以创建和管理Kubernetes计算的最小可部署单元,一个Pod代表着集群中运行的一个进程,每个pod都有一个唯一的ip。一个pod类似一个豌豆荚,包含一个或多个容器,多个容器间共享IPC、Network和UTC namespace。
手动管理
- 创建pod应用
集群内部任意节点可以访问Pod,但集群外部无法直接访问。
kubectl run demo --image=myapp:v1
kubectl get pod -o wide
- 删除pod节点
kubectl delete pod demo
kubectl get pod -o wide
使用控制器建立
- 使用控制器建立pod
kubectl create deployment demo --image=myapp:v1 --replicas=2
kubectl get pod -o wide
- 使用控制器删除pod
当控制器指定副本数量时,会锁定副本数目,此时手动删除pod时,控制器会另外新建一个pod。
需要使用控制器彻底删除
kubectl delete deployments.apps demo
- 控制pod组件集群 暴露端口
kubectl expose deployment demo --port=80 --target-port=80
kubectl get svc -o wide
默认提供RR策略的负载均衡:
- 扩容缩容
通过rs指定副本数量即可
kubectl scale --replicas=6 deployment demo
- 升级回滚
kubectl set image deployment demo myapp=myapp:v2 --record #--record表示记录此条记录的详细信息
kubectl rollout history deployment #查看升级的历史记录
2. 资源清单
示例文件:
apiVersion: v1
kind: Pod
metadata:
name: pod-example
spec:
#hostNetwork: true #使用host模式 直接使用宿主机网络
nodeName: server4 #指定部署在server4
#imagePullSecrets: #加密镜像拉取
containers:
- name: myapp
image: myapp:v1
imagePullPolicy: IfNotPresent #拉取镜像缓存
resources: #硬件资源限制
requests:
cpu: "100m"
memory: "50Mi"
limits:
cpu: "200m"
memory: "100Mi"
ports: #端口映射
- containerPort: 80
hostPort: 80
# - name: busybox # 支持多个成员镜像,编写规则与第一个相同
# image: busyboxplus:latest
# imagePullPolicy: IfNotPresent
# tty: true
# stdin: true
运行效果:
- 标签:
kubectl get pod --show-labels //查看标签
kubectl get pod -l app //过滤包含app的标签
kubectl get pod -L app
kubectl label pod demo version=v1 //打标签
kubectl label pod demo app=nginx --overwrite //更改标签
kubectl get nodes -l disktype //筛选标签