k8s_使用k8s部署博客系统svc、secret、configmap(三)
service
service是抽象Pod对外提供服务的地址,将其固化的作用;屏蔽因pod的创删以及扩缩容带来ip变化。service通过自身定义文件的selector的标签配置匹配到需要提供服务的对象。
下面是整个wordpress系统部署的service定义文件,其中的selector配置的label是选择符合该label的pod并对其提供对外访问的服务
#api版本号 apiVersion: v1 #资源类型 kind: Service metadata: #service自身的名称 name: mysql #service自身的标签 labels: app: mysql spec: ports: #service对外开放的端口 - port: 3306 #service关联资源对应container的端口,该端口与上面的port是绑定关系 targetPort: 3306 protocol: TCP #service通过选择器配置的两个label选择符合这两个标签的pod,为这些pod提供对外服务 selector: app: wordpress tier: mysql-pod #service类型,ClusterIp只对内部提供服务,nodePort类型可以对外提供服务 type: ClusterIP --- apiVersion: v1 kind: Service metadata: name: wordpress labels: app: wordpress spec: ports: - port: 80 nodePort: 30008 targetPort: 80 protocol: TCP selector: app: wordpress tier: frontend-pod type: NodePort
创建service服务
[root@k8s-01 ~]# kubectl create -f service_mysql_wp.yml
查询service
[root@k8s-01 ~]# kubectl get service -o wide
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE SELECTOR
kubernetes ClusterIP 10.1.0.1 <none> 443/TCP 62d <none>
mysql ClusterIP 10.1.103.194 <none> 3306/TCP 50d app=wordpress,tier=mysql-pod
wordpress NodePort 10.1.43.26 <none> 80:30008/TCP 50d app=wordpress,tier=frontend-pod
secret
secret资源是用来管理密码的,这里以管理mysql的密码为例进行演示
apiVersion: v1 kind: Secret metadata: name: mysql-pass type: Opaque #Opaque 隐藏,该类型使用kubectl的任何查看命令都看不到下面data部分定义的密码数据 data: #敏感数据通过base64编码处理echo -n $str | base64 #password: root password: cm9vdA== #可以设置多组数据 #创建secret对象 [root@k8s-01 ~]# kubectl create -f secret_mysql.yml #查看创建的secret资源 [root@k8s-01 ~]# kubectl get secret NAME TYPE DATA AGE default-token-c8jx9 kubernetes.io/service-account-token 3 62d mysql-pass Opaque 1 50d [root@k8s-01 ~]# kubectl describe secret mysql-pass Name: mysql-pass Namespace: default Labels: <none> Annotations: <none> Type: Opaque Data ==== password: 4 bytes
configmap
用于将系统的环境变量、配置参数使用资源对象交由k8s集群进行管理
配置文件解析即资源的创建和查看,整个wordpress系统中mysql需要设置dbname信息,这里以该参数配置为例
apiVersion: v1 kind: ConfigMap metadata: name: mysql-config data: db-name: wordpress #可以设置多组数据,数值类型一定要使用""引起来,否则会报错 userage: "18" dbuser: root #创建configmap [root@k8s-01 ~]# kubectl create -f mysql_configmap.yml #查询创建的资源 [root@k8s-01 ~]# kubectl get configmap -o wide NAME DATA AGE mysql-config 3 50d [root@k8s-01 ~]# kubectl describe configmap mysql-config Name: mysql-config Namespace: default Labels: <none> Annotations: kubectl.kubernetes.io/last-applied-configuration: {"apiVersion":"v1","data":{"db-name":"wordpress","dbuser":"root","userage":"18"},"kind":"ConfigMap","metadata":{"annotations":{},"name":"m... Data ==== db-name: ---- wordpress dbuser: ---- root userage: ---- 18 Events: <none>