容器化相关

2020-10-16
3分钟阅读时长

容器化相关

参考文献

安装k8s

———————————— 命令:context 相关 ————————————

集群用户和上下文:

kubectl config –kubeconfig=minikueb view

kubectl config use-context xxxx // 切换多集群中的一个

命令 namespace 相关:

kubectl get namespace

kubectl cluster-info kubectl get nodes kubectl describe node

kubectl create namespace adhoc //namespace 相当于作用域 kubectl get namespaces

kubectl get pods –namespace kube-system 看看状态是否running

k8s:

管理多个主机的容器化的应用

———————————— 概览 ————————————

所有的容器都在pod中: 同一个pod中的容器会部署在同一个物理机器上,并且能够共享资源

  • 服务发现和负载均衡
  • 存储编排
  • 自动化部署和回滚
  • 自我修复
  • 密钥与配置管理
组件
  • 控制面板组件(对集群做出全局决策)

    • kube-apiserver
    • etcd
    • kube-scheduler
    • kube-controller-manager 控制器(内置):Deployment 控制器和 Job 控制器是 Kubernetes 内置控制器的典型例子
  • Node组件(节点组件)

    • kubelet PodSpecs Node 端 保证 容器 运行 在 pod 中 (kubelet 不会管理不是由kubernetes创建的容器)
    • kube-proxy 运行在Node上的网络代理,实现kubernetes服务(service)的一部分
    • Container Runtime 容器运行时 Kubernetes 支持容器运行环境: docker

    容器 - pod - 节点 - 集群 注册:节点上的 kubelet 自注册,json对象

    {
        "kind": "Node",
        "apiVersion": "v1",
        "metadata": {
            "name": "10.240.79.157",
            "labels": {
            "name": "my-first-k8s-node"
            }
        }
    }
    
    #常用命令
    kubectl describe node
    
  • 插件

    插件使用 Kubernetes 资源 实现集群功能,以为这些插件提供集群级别功能。插件中命名空间域的资源属于 kube-system 命名空间

    • DNS
    • Dashboa
    • 容器资源监控
    • 集群层面日志
  • 理解Kubernetes 对象

    实体 表现 集群

    1. 哪些容器化应用在运行
    2. 可以被应用使用的资源
    3. 策略:重启,升级,容错

    对象约束 状态 Spec Status Spec 期望值 Status

    kubectl apply -f
    kubectl run xxx #创建Deployment运行容器
    

如何理解一个工程:

  • Job: .spec.template 为必填字端

———————————— 命令相关 ————————————

kubelet

kubelete 作为节点代理,每个节点都有kubelete金川,处理master下发的任务(Podspec:yaml => pod)

容器检测 && 容器健康管理

kukbeadm

用来部署 kubernetes 集群 组件间访问授权,健康检查

备注:

Pod 可以容纳多个容器 相同的pod中的任何容器共享相同名称空间和本地网络

pod 由 deployment(部署) 来进行管理 : 声明一个pd应该同时运行多个副本 不必手动处理pod,只需声明系统的期望状态

尝试使用kubernete 对象


$ kubectl config use-context docker-desktop



$ goctl kube deploy -name nodejs -namespace keepfe -image ccr.ccs.tencentyun.com/keep/nodejs-build -o nodejs.yaml -port 6379
$ kubectl create namespace keepfe
$ kubectl apply -f nodejs.yaml
$ kubectl get all -n nodejs
$ kubectl run -i --tty --rm cli --image=nodejs -n keepfe -- sh
$ kubectl get pods -n keepfe
$ kubectl get pods -n keepfe -o yaml 
$ kubectl exec -it cli -n keepfe /bin/sh  #执行pod里面的 容器
$ kubectl exec -ti <your-pod-name>  -n <your-namespace>  -- /bin/sh
$ kubectl delete pod nodejs-577ccc9697-869j4 -n keepfe
$ kubectl get deployment -n keepfe
$ kubectl delete deployment nodejs -n keepfe


# 查看日志
$ kubectl -n default logs -f goweb

minikube 参照链接

$ minikube ssh
  #docker ps | awk '{print $2F}'
$ kubectl config view
$ kubectl get node -o wide
  # 相当于用yaml 创建 pod
$ kubectl run goweb --image=hello  --port=8888 --replicas=3
$ kubectl create deployment goweb --image=192.168.3.85:5000/netkiller/welcome:latest
$ kubectl expose deployment goweb --port=8888 --target-port=8888 --type=NodePort
$ minikube service welcome --url
$ curl http://192.168.64.5:30257/from/you

# 报错指南
进入node节点去看

集群 节点 pod 服务

宿主本地源

{
  "insecure-registries" : [
    "10.21.71.237:5000"
  ],
  "debug" : true
}
$ docker pull registry
$ docker run -d -p 5000:5000 -v $(pwd):/var/lib/registry --restart always --name registry registry:2
$ docker tag hello:v1 10.2.17.5:5000/hello-local

minikube delete && minikube start --cpus=2 --memory=4096 --disk-size=10g \
  --driver=hyperkit \
  # --docker-env http_proxy=10.2.17.5:1087 \
  # --docker-env https_proxy=10.2.17.5:1087 \
  # --docker-env no_proxy=192.168.99.0/24 \
  --registry-mirror=https://registry.docker-cn.com \
  --insecure-registry=10.2.17.5:5000 \
  --service-cluster-ip-range='10.10.0.0/24'

#https://zhuanlan.zhihu.com/p/261722859

———————————— helm 相关:————————————

  • helm 相当于 k8s 的包管理工具:

  • helm repo add stable xxxxxxx ## 添加源

  • helm install stable/redis –generate-name

  • helm install -f values.yaml bitnami/wordpress –generate-name

  • helm template sentry/sentry > resource.yaml

  • kubectl run –namespace infra redis-1619522403-client –rm –tty -i –restart=‘Never’ –env REDIS_PASSWORD=AAerZRT8gv% –image docker.io/bitnami/redis:5.0.7-debian-10-r32 – bash

—————————- k8s king 类型 —————————————-

  • config 配置文件
  • deployment 部署文件
  • service 服务
  • Ingress
  • job 任务 k8s 配置文件事例
apiVersion: v1 # 指定api版本,kubectl apiversion
kind: pod
metadata: #资源元属性
  name: test-pod #资源的名字
  labels: #设定资源的标签
  annotations:自定义注解列表
specs: #指定该资源的内容
  replicas: 3 #定义有多少个pod
  restartPolicy: # 退出重启
  nodeSelector:#节点选择(节点归类,ssd)
  containers: #容器
  - name
volumes:#定义一组挂载设备
- name: 设备名称

kubectl get service keep-admin-webapp -o yaml

上一页 go大纲
下一页 容器化相关