03 环境变量和标签
01 环境变量
01-1 传递单个环境变量
[root@master01 yaml]# cat 03-command-args.yaml
apiVersion: v1
kind: Pod
metadata: name: likexy
spec:hostNetwork: truecontainers:- name: a1image: registry.cn-hangzhou.aliyuncs.com/yinzhengjie-k8s/apps:v1command: ["tail"]args: ["-f","/etc/hosts"]
[root@master01 yaml]# kubectl get pods -o wide
NAME READY STATUS RESTARTS AGE IP NODE NOMINATED NODE READINESS GATES
likexy 1/1 Running 0 5m5s 172.2.25.52 node01 <none> <none>
01-2 传递多个环境变量
[root@master yaml]# cat 04-env.yaml
apiVersion: v1
kind: Pod
metadata:name: likexy
spec:hostNetwork: truecontainers:- name: a1image: registry.cn-hangzhou.aliyuncs.com/yinzhengjie-k8s/apps:v1env: - name: likevalue: xy- name: cityvalue: Dalian
# 查看环境变量
[root@master yaml]# kubectl exec -it likexy -- env
PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin
HOSTNAME=node01
TERM=xterm
like=xy
city=Dalian
KUBERNETES_SERVICE_HOST=172.125.0.1
KUBERNETES_SERVICE_PORT=443
KUBERNETES_SERVICE_PORT_HTTPS=443
KUBERNETES_PORT=tcp://172.125.0.1:443
KUBERNETES_PORT_443_TCP=tcp://172.125.0.1:443
KUBERNETES_PORT_443_TCP_PROTO=tcp
KUBERNETES_PORT_443_TCP_PORT=443
KUBERNETES_PORT_443_TCP_ADDR=172.125.0.1
NGINX_VERSION=1.20.1
NJS_VERSION=0.5.3
PKG_RELEASE=1
HOME=/root
02 指定Node
[root@master yaml]# cat 05-nodename.yaml
apiVersion: v1
kind: Pod
metadata:name: likexy
spec:nodeName: node01hostNetwork: truecontainers:- name: a1image: registry.cn-hangzhou.aliyuncs.com/yinzhengjie-k8s/apps:v1env:- name: likevalue: xy- name: Cityvalue: Dalian
[root@master yaml]# kubectl get pods -o wideNAME READY STATUS RESTARTS AGE IP NODE NOMINATED NODE READINESS GATES
likexy 1/1 Running 0 15s 172.2.25.51 node01 <none> <none>
03 镜像拉取策略
# 镜像的拉取策略:# - Never如果本地有镜像则尝试启动如果本地没有镜像则不会启动。# - Always:如果本地有镜像则将本地的摘要信息和远程仓库的信息进行比对,若相同则使用本地镜像缓存,若不同,则直接去远程仓库拉取。如果本地没有镜像则直接拉取镜像。# - IfNotPresent:如果本地有镜像则尝试启动。如果本地没有镜像,则会去远程仓库拉取镜像。# 默认策略:当镜像的TAG是latest时,则默认的镜像下载策略为Always,若镜像的TAG不是latest时,则镜像下载策略为IfNotPresent。
[root@master yaml]# cat 06-wordpress.yaml
apiVersion: v1
kind: Pod
metadata:name: likexy
spec:nodeName: node01hostNetwork: trueimagePullPolicy: containers:- name: sqlimage: mysql:8.0.36-oracleenv:- name: MYSQL_ALLOW_EMPTY_PASSWORDvalue: "yes"- name: MYSQL_USERvalue: "likexy"- name: MYSQL_PASSWORDvalue: "123123"- name: MYSQL_DATABASEvalue: "likexy"
---
apiVersion: v1
kind: Pod
metadata:name: xy
spec:nodeName: node01hostNetwork: truecontainers:- name: wpimage: wordpress:latestimagePullPolicy: IfNotPresentenv:- name: WORDPRESS_DB_HOSTvalue: "172.2.25.51"- name: WORDPRESS_DB_USERvalue: "likexy"- name: WORDPRESS_DB_PASSWORDvalue: "123123"- name: WORDPRESS_DB_NAMEvalue: "likexy"
04 声明式和响应式
04-1 声明式
# - 声明式:# 基于资源清单管理K8S集群资源。
[root@master yaml]# cat 04-env.yaml
apiVersion: v1
kind: Pod
metadata:name: likexy
spec:hostNetwork: truecontainers:- name: a1image: registry.cn-hangzhou.aliyuncs.com/yinzhengjie-k8s/apps:v1env: - name: likevalue: xy- name: cityvalue: Dalian
04-2 响应式
# - 响应式:# 不通过资源清单管理K8S集群资源,而是基于命令行的方式管理K8S集群资源。
[root@master231 pods]# kubectl run oldboyedu-xiuxian-v1 --image=registry.cn-hangzhou.aliyuncs.com/yinzhengjie-k8s/apps:v1 --env="SCHOOL=UCAS" --env="baby=xy"
04 排错
02-1 查看状态显示ContainerCreating
[root@master yaml]# kubectl describe pods likexy
...
Events:Type Reason Age From Message---- ------ ---- ---- -------Normal Scheduled 58s default-scheduler Successfully assigned default/likexy to node01Normal Pulling 57s kubelet Pulling image "registry.cn-hangzhou.aliyuncs.com/yinzhengjie-k8s/apps:v1"
[root@master yaml]# kubectl get pods -o wide
NAME READY STATUS RESTARTS AGE IP NODE NOMINATED NODE READINESS GATES
likexy 0/1 ContainerCreating 0 67s 172.2.25.51 node01 <none> <none>
02-2 字段不正确
# 应为
# spec:
# containers:
# - name: sql
[root@master yaml]# cat 06-wordpress.yaml
...
spec:nodeName: node01hostNetwork: trueimagePullPolicy: containers:name: sql
...
[root@master yaml]# kubectl apply -f 06-wordpress.yaml
error: error validating "06-wordpress.yaml": error validating data: ValidationError(Pod.spec.containers): invalid type for io.k8s.api.core.v1.PodSpec.containers: got "map", expected "array"; if you choose to ignore these errors, turn validation off with --validate=false
02-3 环境变量格式问题
# 错误的
[root@master yaml]# cat 06-wordpress.yaml
apiVersion: v1
kind: Pod
metadata:name: likexy
spec:nodeName: node01hostNetwork: trueimagePullPolicy: containers:- name: sqlimage: mysql:8.0.36-oracleenv:- name: MYSQL_ALLOW_EMPTY_PASSWORDvalue: "yes"- name: MYSQL_USERvalue: likexy- name: MYSQL_PASSWORDvalue: 123123- name: MYSQL_DATABASEvalue: likexy
---
apiVersion: v1
kind: Pod
metadata:name: xy
spec:nodeName: node01hostNetwork: truecontainers:- name: wpimage: wordpress:latestimagePullPolicy: IfNotPresentenv:- name: WORDPRESS_DB_HOSTvalue: 172.2.25.51- name: WORDPRESS_DB_USERvalue: likexy- name: WORDPRESS_DB_PASSWORDvalue: 123123- name: WORDPRESS_DB_NAMEvalue: likexy
[root@master yaml]# kubectl apply -f 06-wordpress.yaml
Error from server (BadRequest): error when creating "06-wordpress.yaml": Pod in version "v1" cannot be handled as a Pod: json: cannot unmarshal number into Go struct field EnvVar.spec.containers.env.value of type string
Error from server (BadRequest): error when creating "06-wordpress.yaml": Pod in version "v1" cannot be handled as a Pod: json: cannot unmarshal number into Go struct field EnvVar.spec.containers.env.value of type string