组件协作:
kubectl run httpd-app --image=httpd --replicas=2
kubectl get deployment
过程:
1、kubectl发送部署请求到api server
2、api server通知controller manager创建要给deployment资源
3、scheduler执行调度任务,将两个副本pod分发到node1和node2
4、node1和node2上的kubectl在各自的节点上创建并运行Pod
注意:
1)应用的配置和当前状态信息保存在etcd中
kubectl get pod
kubectl describe pod podname1
1)用户通过kubectl创建Deployment
2)Deployment创建ReplicaSet
3)ReplicaSet创建Pod
Kubernetes支持两种创建资源的方式:
1)用kubectl命令直接创建
如:kubectl run nginx-deployment --image=nginx --replicas=2
在命令行中通过参数指定资源的属性
2)通过配置文件和kubectl apply 创建
如:kubectl apply -f nginx.yml
apiVersion: extensions/v1beta1 #当前配置格式的版本
kind: Deployment #要创建的资源类型
metadata: #该资源的元数据
name: nginx-deployment #name是必须的元数据项
spec: #该Deployment的规格说明
replicas: #指明副本数量,默认为1
template: #定义Pod的模板,这是配置文件的重要部分
metadata: #Pod的元数据
labels: #至少定义一个label
app: web_server #label的key和value可以任意指定
spec: #描述Pod的规格,定义Pod中每一个容器的属性
containers:
- name: nginx-deployment #必填
image: nginx:1.7.9 #必填
kubectl apply -f nginx.yml --validate=false
kubectl get deployment
kubectl get replicaset
删除资源
kubectl delete deployment nginx-deployment
kubectl delete -f nginx.yml
处于安全考虑,默认配置下,kubernetes不会将pod调度到master节点,如果希望将主节点也当作Node使用,可以执行以下命令:
kubectl taint node k8s-master node-role.kubernetes.io/master-
如果要恢复Master Only状态,执行如下命令:
kubectl taint node k8s-master node-role.kubernetes.io/master="":NoSchedule
Failover
1、其中一个节点故障,kubernetes会检查到该节点不可用,将节点上的Pod标记为Unknow状态,并且在其他的节点创建两个Pod
维持总副本数
2、当故障节点恢复后,Unknow的Pod会被删除,已经运行的Pod不会重新调度回原节点
用label控制Pod的位置
1、默认配置下,Schedule会将Pod调度到所有可用的Node,Kubernetes通过label来指定Pod部署到指定的Node
kubectl label node k8s-node1 disktype=ssd #标注k8s配置了ssd的节点
kubectl get node --show-labels
disktype=ssd 已经成功添加到k8s-node1,除了disktype,Node还有几个kubernetes自己维护的label
2、有了disktype这个自定义的label,接下来就是可以指定将Pod部署到k8s-node1,如下:
apiVersion: extensions/v1beta1 #当前配置格式的版本
kind: Deployment #要创建的资源类型
metadata: #该资源的元数据
name: nginx-deployment #name是必须的元数据项
spec: #该Deployment的规格说明
replicas: #指明副本数量,默认为1
template: #定义Pod的模板,这是配置文件的重要部分
metadata: #Pod的元数据
labels: #至少定义一个label
app: web_server #label的key和value可以任意指定
spec: #描述Pod的规格,定义Pod中每一个容器的属性
containers:
- name: nginx-deployment #必填
image: nginx:1.7.9 #必填
nodeSelector:
disktype: ssd
Kubernetes 笔记-001
最新推荐文章于 2022-04-28 13:24:06 发布