负责master和节点(node)之间的通讯、交互和数据上报 到master的apiservernode
总体来说 的职责是
一、Node管理
二、pod管理
三、容器健康检查
四、容器监控
五、资源清理
六、和容器运行时交互(docker 、rkt、Virtlet等等)nginx
通常状况下kubectl会暴露 10250端口 用于和apiserver 交互
经常使用的查询API
GET
/pods
/stats/summary
/metrics
/healthzweb
访问方式:
docker exec -it kubelet curl -k https://localhost:10250/healthz --header "Authorization: Bearer kubeconfig-user-mtxnk.c-gfv2c:h86t2zzpjcq8lksd82l24l6ld7pkdwsh4264thvbfxldntkmdmf2c8" docker
外部经过NodePort、ClusterIP等方式访问服务。api
kube-proxy 运行在每一个Node 上,负责Pod网络代理, 维护网络规则和四层负载均衡工做 网络
在master中。
kube-controller-manager负责节点管理、pod复制和endpoint建立.
监控集群中各类资源的状态使之和定义的状态保持一致,.app
如:
节点控制器(Node Controller): 负责在节点出现故障时进行通知和响应。负载均衡
副本控制器(Replication Controller): 负责为系统中的每一个副本控制器对象维护正
确数量的 Pod。(如今是Deployment Controller+Replication Set)curl
apiVersion: apps/v1 kind: Deployment metadata: name: myngx namespace: myweb spec: selector: matchLabels: app: nginx replicas: 1 template: metadata: labels: app: nginx spec: containers: - name: nginxtest image: nginx:1.18-alpine # 只有镜像不存在时进行镜像拉取 imagePullPolicy: IfNotPresent ports: # Pod 端口 - containerPort: 80
kubectl create -f ngx.yamlurl
apiVersion: apps/v1 kind: Deployment metadata: #元数据 name: myngx namespace: myweb spec: selector: #标签选择器 matchLabels: app: nginx #自定义标签 replicas: 1 template: #定义模板 metadata: labels: app: nginx #和上面matchLables的app对应 spec: #定义容器 containers: - name: nginxtest image: nginx:1.18-alpine # 只有镜像不存在时进行镜像拉取 imagePullPolicy: IfNotPresent ports: # Pod 端口 - containerPort
查看deployment
kubectl get deployment -n myweb
删除deployment
kubectl delete deployment myngx -n myweb
建立service
apiVersion: v1 kind: Service metadata: name: myngx-service spec: selector: app: nginx #这个和前面的app也是对应 ports: - protocol: TCP port: 80 targetPort: 80 type: ClusterIP #ClusterIP、NodePort和LoadBalancer
指定主机名称的方式
一、直接添加 nodeName : xxxx
二、根据标签
kubectl get node --show-labels
添加标签:
kubectl label nodes <node-name> <label-key>=<label-value>
kubectl label nodes dsjs name=a1
kubectl label nodes dsjs2 name=a2
删除标签:
kubectl label nodes <node-name> <label-key>-
kubectl label nodes dsjs name-
修改标签:kubectl label nodes <node-name> <label-key>=<label-value> --overwrite