前面的课程我们学习了如何给pod打标签及修改pod的标签值。在某些特殊情况下,需要将某些服务固定在一台宿主机上, k8s可以使用label给node节点打上标签来满足这种需求。
添加label语法
kubectl label nodes <node-name> <label-key>=<label-value>
为k8s-node01节点打标签
kubectl label nodes k8s-node01 mariadb=mariadb
查看node节点label值
kubectl get nodes --show-labels
修改Label的值
语法: 需要加上 --overwrite 参数
kubectl label nodes <node-name> <label-key>=<label-value> --overwrite
修改k8s-node01节点label值
kubectl label nodes k8s-node01 mariadb=mariadb10.5 --overwrite
查看node节点label值
kubectl get nodes --show-labels
删除label语法
注意事项:label的可以后边要增加"-"
kubectl label nodes <node-name> <label-key>-
删除k8s-node01节点mariadb的label
kubectl label nodes k8s-node01 mariadb-
查看node节点label值
kubectl get nodes --show-labels
mariaDB部署
通过指定node节点label,将mariaDB部署到指定节点。方便演示volume的各种方式。
指定node
kubectl label nodes k8s-node01 mariadb=mariadb
查看node节点label值
kubectl get nodes --show-labels
service部署
在spec.template.spec属性下增加nodeSelector属性。
spec:
nodeSelector: #根据label设置,配置节点选择器
mariadb: mariadb #语法规则: key: value
containers:
全部资源文件清单
labels/mariadbsecret.yml
apiVersion: v1
kind: Secret
metadata:
name: mariadbsecret
type: Opaque
data:
password: YWRtaW4=
labels/mariadb.yml
apiVersion: apps/v1
kind: Deployment
metadata:
name: mariadb-deploy
labels:
app: mariadb-deploy
spec:
replicas: 1
template:
metadata:
name: mariadb-deploy
labels:
app: mariadb-deploy
spec:
nodeSelector:
mariadb: mariadb
imagePullSecrets:
- name: lagouharbor
containers:
- name: mariadb-deploy
image: 192.168.198.155:5000/lagouedu/mariadb:10.5.2
imagePullPolicy: IfNotPresent
ports:
- containerPort: 3307
env:
- name: MYSQL_ROOT_PASSWORD
#这是mysqlroot用户的密码
valueFrom:
secretKeyRef:
key: password
name: mariadbsecret
- name: TZ
value: Asia/Shanghai
args:
- "--character-set-server=utf8mb4"
- "--collation-server=utf8mb4_unicode_ci"
volumeMounts:
- mountPath: /etc/mysql/mariadb.conf.d/ #容器内的挂载目录
name: lagoumariadb #随便给一个名字,这个名字必须与volumes.name一致
restartPolicy: Always
volumes:
- name: lagoumariadb
configMap:
name: mariadbconfigmap
selector:
matchLabels:
app: mariadb-deploy
---
apiVersion: v1
kind: Service
metadata:
name: mariadb-svc
spec:
selector:
app: mariadb-deploy
ports:
- port: 3307
targetPort: 3307
nodePort: 30036
type: NodePort
labels/mariadbconfigmap.yml
apiVersion: v1
data:
my.cnf: "省略中间数据部分,请各位同学前面章节"
kind: ConfigMap
metadata:
name: mariadbconfigmap
客户端测试
IP:192.168.198.157
username:root
password:admin
prot: 30036











网友评论