kubectl
负责 master 和节点(node)之间的通信、交互和数据上报 到 master 的 apiserver
整体来讲 的职责是
1、Node 治理
2、pod 治理
3、容器健康检查
4、容器监控
5、资源清理
6、和容器运行时交互(docker、rkt、Virtlet 等等)
个别状况下 kubectl 会裸露 10250 端口 用于和 apiserver 交互
罕用的查问 API
GET
/pods
/stats/summary
/metrics
/healthz
拜访形式:
docker exec -it kubelet curl -k https://localhost:10250/healthz –header “Authorization: Bearer kubeconfig-user-mtxnk.c-gfv2c:h86t2zzpjcq8lksd82l24l6ld7pkdwsh4264thvbfxldntkmdmf2c8”
kube-proxy
内部通过 NodePort、ClusterIP 等形式拜访服务。
kube-proxy 运行在每个 Node 上,负责 Pod 网络代理, 保护网络规定和四层负载平衡工作
kube-controller-manager
在 master 中。
kube-controller-manager 负责节点治理、pod 复制和 endpoint 创立.
监控集群中各种资源的状态使之和定义的状态保持一致,.
如:
节点控制器(Node Controller): 负责在节点呈现故障时进行告诉和响应。
正本控制器(Replication Controller): 负责为零碎中的每个正本控制器对象保护正
确数量的 Pod。(当初是 Deployment Controller+Replication Set)
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.yaml
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 和 nodeSelector
指定主机名称的形式
1、间接增加 nodeName : xxxx
2、依据标签
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