• kubernetes intro


    kubernetes

    http://docs.kubernetes.org.cn/227.html

    https://www.kubernetes.org.cn/k8s

    https://mp.weixin.qq.com/s/zrpaBCa-gNuu99nHCeBLXQ

    Kubernetes是容器集群管理系统,是一个开源的平台,可以实现容器集群的自动化部署、自动扩缩容、维护等功能。

    通过Kubernetes你可以:

    • 快速部署应用
    • 快速扩展应用
    • 无缝对接新的应用功能
    • 节省资源,优化硬件资源的使用
    • 可移植: 支持公有云,私有云,混合云,多重云(multi-cloud)
    • 可扩展: 模块化, 插件化, 可挂载, 可组合
    • 自动化: 自动部署,自动重启,自动复制,自动伸缩/扩展

    基础概念

    http://docs.kubernetes.org.cn/92.html

    对集群 Nodes Service Pod Deployment讲述的非常清楚,有图画形式,非常形象。

    基本命令

    http://docs.kubernetes.org.cn/683.html

    https://www.cnblogs.com/klvchen/p/9585746.html

    # 查看所有 pod 列表,  -n 后跟 namespace, 查看指定的命名空间
    kubectl get pod
    kubectl get pod -n kube  
    kubectl get pod -o wide
    
    
    # 查看 RC 和 service 列表, -o wide 查看详细信息
    kubectl get rc,svc
    kubectl get pod,svc -o wide  
    kubectl get pod <pod-name> -o yaml
    
    
    # 显示 Node 的详细信息
    kubectl describe node 192.168.0.212
    
    
    # 显示 Pod 的详细信息, 特别是查看 pod 无法创建的时候的日志
    kubectl describe pod <pod-name>
    eg:
    kubectl describe pod redis-master-tqds9
    
    
    # 根据 yaml 创建资源, apply 可以重复执行,create 不行
    kubectl create -f pod.yaml
    kubectl apply -f pod.yaml
    
    
    # 基于 pod.yaml 定义的名称删除 pod 
    kubectl delete -f pod.yaml 
    
    
    # 删除所有包含某个 label 的pod 和 service
    kubectl delete pod,svc -l name=<label-name>
    
    
    # 删除所有 Pod
    kubectl delete pod --all
    
    
    # 查看 endpoint 列表
    kubectl get endpoints
    
    
    # 执行 pod 的 date 命令
    kubectl exec <pod-name> -- date
    kubectl exec <pod-name> -- bash
    kubectl exec <pod-name> -- ping 10.24.51.9
    
    
    # 通过bash获得 pod 中某个容器的TTY,相当于登录容器
    kubectl exec -it <pod-name> -c <container-name> -- bash
    eg:
    kubectl exec -it redis-master-cln81 -- bash
    
    
    # 查看容器的日志
    kubectl logs <pod-name>
    kubectl logs -f <pod-name> # 实时查看日志
    kubectl log  <pod-name>  -c <container_name> # 若 pod 只有一个容器,可以不加 -c 
    
    
    # 查看注释
    kubectl explain pod
    kubectl explain pod.apiVersion

    Service的形态

    http://www.dockone.io/article/4884

     

    Job作用

    https://www.cnblogs.com/benjamin77/p/9903280.html

    容器按照持续运行的时间可分为两类:

    服务类容器

    服务类容器通常持续提供服务,需要一直运行,比如 http server,daemon 等。

    工作类容器

    工作类容器则是一次性任务,比如批处理程序,完成后容器就退出。

    Kubernetes 的 Deployment、ReplicaSet 和 DaemonSet 都用于管理服务类容器;对于工作类容器,我们用 Job。

    https://www.jianshu.com/p/bd6cd1b4e076

    Job对象通常用于运行那些仅需要执行一次的任务(例如数据库迁移,批处理脚本等等)。通过Job对象创建运行的Pod具有高可靠性,因为Job Controller会自动重启运行失败的Pod(例如Pod所在Node重启或宕机)。

    Job的本质是确保一个或多个Pod健康地运行直至运行完毕。

    在WIN10的WSL环境下使用Kubenetes

    Running Kubernetes CLI on Windows Subsystem for Linux (WSL)

    https://devkimchi.com/2018/06/05/running-kubernetes-on-wsl/

    其中最主要的是配置的拷贝。

    Copying Kubernetes Config from Windows

    Even though kubectl has been installed, we can't use this until configuration is copied over. Enter the following command in the Bash prompt.

     cp /mnt/c/Users/[USERNAME]/.kube/config ~/.kube

    If you have already completed this, you don't need /mnt bit any longer. Just use /c/Users/... instead.

    And let kubectl know to use the Docker for Windows context.

    kubectl in WSL should be working as expected. Enter the following command.
    kubectl cluster-info

    动动手

    https://github.com/fanqingsong/code-snippet/blob/master/kubenetes/nginx-deployment.yaml

    创建一个nginx服务,yml如下。

    apiVersion: v1
    kind: Service
    metadata:
      name: nginx-service
      labels:
        app: nginx-service
    spec:
      ports:
        - port: 8080
          targetPort: 80
          nodePort: 30000
      selector:
        app: nginx
      type: NodePort
    ---
    apiVersion: apps/v1
    kind: Deployment
    metadata:
      name: nginx-deployment
      labels:
        app: nginx
    spec:
      replicas: 3
      selector:
        matchLabels:
          app: nginx
      template:
        metadata:
          labels:
            app: nginx
        spec:
          containers:
          - name: nginx
            image: nginx:1.7.9
            ports:
            - containerPort: 80

    root@CN-00015440:~/win10/mine/kubenetes# kubectl apply -f nginx-deployment.yaml
    service/nginx-service unchanged
    deployment.apps/nginx-deployment unchanged
    root@CN-00015440:~/win10/mine/kubenetes#

    root@CN-00015440:~/win10/mine/kubenetes# kubectl get all
    NAME                                    READY   STATUS    RESTARTS   AGE
    pod/nginx-deployment-75675f5897-kglwz   1/1     Running   0          3h
    pod/nginx-deployment-75675f5897-kgmnd   1/1     Running   0          3h
    pod/nginx-deployment-75675f5897-pwv2g   1/1     Running   0          3h

    NAME                    TYPE        CLUSTER-IP       EXTERNAL-IP   PORT(S)          AGE
    service/kubernetes      ClusterIP   10.96.0.1        <none>        443/TCP          9h
    service/nginx-service   NodePort    10.100.109.145   <none>        8080:30000/TCP   3h

    NAME                               DESIRED   CURRENT   UP-TO-DATE   AVAILABLE   AGE
    deployment.apps/nginx-deployment   3         3         3            3           3h

    NAME                                          DESIRED   CURRENT   READY   AGE
    replicaset.apps/nginx-deployment-75675f5897   3         3         3       3h
    root@CN-00015440:~/win10/mine/kubenetes#

    root@CN-00015440:~/win10/mine/kubenetes# kubectl delete -f nginx-deployment.yaml
    service "nginx-service" deleted
    deployment.apps "nginx-deployment" deleted
    root@CN-00015440:~/win10/mine/kubenetes#
    root@CN-00015440:~/win10/mine/kubenetes#
    root@CN-00015440:~/win10/mine/kubenetes# kubectl get all
    NAME                                    READY   STATUS        RESTARTS   AGE
    pod/nginx-deployment-75675f5897-pwv2g   0/1     Terminating   0          3h

    NAME                 TYPE        CLUSTER-IP   EXTERNAL-IP   PORT(S)   AGE
    service/kubernetes   ClusterIP   10.96.0.1    <none>        443/TCP   9h
    root@CN-00015440:~/win10/mine/kubenetes#
    root@CN-00015440:~/win10/mine/kubenetes#
    root@CN-00015440:~/win10/mine/kubenetes# kubectl get all
    NAME                 TYPE        CLUSTER-IP   EXTERNAL-IP   PORT(S)   AGE
    service/kubernetes   ClusterIP   10.96.0.1    <none>        443/TCP   9h
    root@CN-00015440:~/win10/mine/kubenetes#

    其他推荐的教程

    https://blog.csdn.net/wucong60/article/details/81699196

    中文讲解的详细,适合起步。

    https://github.com/rinormaloku/k8s-mastery

    Learn Kubernetes in Under 3 Hours”,英文系列教程。

    https://baijiahao.baidu.com/s?id=1602795888204860650&wfr=spider&for=pc

    应该是上文的中文翻译。

    configMap解决镜像配置变化问题

    https://www.cnblogs.com/peitianwang/p/11498896.html

  • 相关阅读:
    将一个全是字母的字符串转化为大写
    将一个全是字母,以0结尾的字符串,转化为大写
    call指令和ret指令的配合使用
    将一个全是字母,以0结尾的字符串,转化为大写
    《那些年啊,那些事——一个程序员的奋斗史》——45
    《那些年啊,那些事——一个程序员的奋斗史》——46
    《那些年啊,那些事——一个程序员的奋斗史》——44
    《那些年啊,那些事——一个程序员的奋斗史》——44
    《那些年啊,那些事——一个程序员的奋斗史》——44
    《那些年啊,那些事——一个程序员的奋斗史》——43
  • 原文地址:https://www.cnblogs.com/lightsong/p/12596123.html
Copyright © 2020-2023  润新知