Kubernetes 笔记-001

组件协作:
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学习笔记与资源 #### 关于Kubernetes的基础概念 Kubernetes是一个开源平台,用于自动化部署、扩展以及管理容器化应用。它能够管理和编排跨多台主机的容器化应用程序集群[^1]。 #### 修改`kube-proxy`配置的例子 对于希望深入了解实际操作的同学来说,可以通过编辑`kube-proxy`ConfigMap来了解如何调整Kubernetes组件的行为。例如,在master节点上通过执行命令`kubectl edit configmap kube-proxy -n kube-system`可以将代理模式更改为IPVS。 #### 获取ConfigMap详情的方法 想要查看特定ConfigMap的内容结构,比如名为`redis-conf`的配置映射,可利用命令`kubectl get cm redis-conf -o yaml`获取其YAML格式的具体定义[^2]。 #### 使用`kubectl`交互API对象 `kubectl`作为Kubernetes的主要命令行工具,提供了丰富的子命令支持多种操作需求。其中`command`参数用来指示具体动作如创建(create)、检索(get)、描述(describe)或是删除(delete),而`TYPE`则指定了目标资源种类,接受多种形式书写而不影响识别效果[^3]。 ```bash # 示例:列出所有命名空间下的pod kubectl get pods --all-namespaces ``` 为了更好地掌握Kubernetes技术栈,建议从官方文档入手,那里不仅有详尽的概念解释还有实践指南;另外GitHub上有许多优质的项目案例可供参考;最后加入社区交流群组也是不错的选择,能及时获得帮助并紧跟最新动态。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值