1/21
第十三章:了解 Kubernetes 配置
-
更新镜像
在 client-pod.yaml 中,我们更改 image 为 stephengrider/multi-worker:
# Kubernetes API 的版本
apiVersion
随后在命令行使用 kubectl apply 命令更新配置:
wuxianmimi kubernetes-simplek8s % kubectl apply -f ./client-pod.yaml
pod/client-pod configured
过一会儿使用 kubectl get pods 查看 pod 状态,发现已经重启了:
wuxianmimi kubernetes-simplek8s % kubectl get pods
NAME READY STATUS RESTARTS AGE
client-pod 1/1 Running 1 (58s ago) 19h
如果需要详细的资源情况,可以使用 kubectl describe 命令来获取:
kubectl describe (-f FILENAME | TYPE [NAME_PREFIX | /NAME | -l label]) [flags]
获取 client-pod 详情:
wuxianmimi kubernetes-simplek8s % kubectl describe pod client-pod
Name: client-pod
Namespace: default
Priority: 0
Service Account: default
Node: minikube/192.168.49.2
Start Time: Thu, 12 Jan 2023 16:33:36 +0800
Labels: component=web
Annotations: <none>
Status: Running
IP: 172.17.0.3
IPs:
IP: 172.17.0.3
Containers:
client:
Container ID: docker://e99f30ff3b6fc654849e44e79c2ee74c5cc084271b1d4f66c9443e2a715bce0e
Image: stephengrider/multi-worker
Image ID: docker-pullable://stephengrider/multi-worker@sha256:5fbab5f86e6a4d499926349a5f0ec032c42e7f7450acc98b053791df26dc4d2b
Port: 3000/TCP
Host Port: 0/TCP
State: Running
Started: Fri, 13 Jan 2023 11:33:44 +0800
Last State: Terminated
Reason: Completed
Exit Code: 0
Started: Thu, 12 Jan 2023 16:34:00 +0800
Finished: Fri, 13 Jan 2023 11:33:00 +0800
Ready: True
Restart Count: 1
Environment: <none>
Mounts:
/var/run/secrets/kubernetes.io/serviceaccount from kube-api-access-7797r (ro)
Conditions:
Type Status
Initialized True
Ready True
ContainersReady True
PodScheduled True
Volumes:
kube-api-access-7797r:
Type: Projected (a volume that contains injected data from multiple sources)
TokenExpirationSeconds: 3607
ConfigMapName: kube-root-ca.crt
ConfigMapOptional: <nil>
DownwardAPI: true
QoS Class: BestEffort
Node-Selectors: <none>
Tolerations: node.kubernetes.io/not-ready:NoExecute op=Exists for 300s
node.kubernetes.io/unreachable:NoExecute op=Exists for 300s
Events:
Type Reason Age From Message
---- ------ ---- ---- -------
Normal Killing 4m8s kubelet Container client definition changed, will be restarted
Normal Pulling 4m8s kubelet Pulling image "stephengrider/multi-worker"
Normal Created 3m24s (x2 over 19h) kubelet Created container client
Normal Started 3m24s (x2 over 19h) kubelet Started container client
Normal Pulled 3m24s kubelet Successfully pulled image "stephengrider/multi-worker" in 43.695453104s
wuxianmimi kubernetes-simplek8s %
输出的信息尾部可以看到有拉取"stephengrider/multi-worker"镜像的记录。
-
Deployment
刚刚我们更新 image 成功了,但是如果使用这种方法更新端口,你会发现无法更新,在 kubectl apply 时会报错。
当对象配置 kind 为 Pod 时,我们只能更新部分字段,其中不包括端口,而如果要更全面的声明式更新能力,我们需要使用 Deployment。
在文件夹内创建 client-deployment.yaml:
apiVersion
完成配之后,我们先删除之前创建的 Pod,使用命令 kubectl delete 来完成删除工作:
kubectl delete (-f FILENAME | TYPE [NAME | /NAME | -l label | --all]) [flags]
删除 client-pod.yaml 的相关配置:
wuxianmimi kubernetes-simplek8s % kubectl delete -f ./client-pod.yaml
pod "client-pod" deleted
wuxianmimi kubernetes-simplek8s % kubectl get pods
No resources found in default namespace.
wuxianmimi kubernetes-simplek8s %
删除后,我们应用新的配置:
wuxianmimi kubernetes-simplek8s % kubectl apply -f ./client-deployment.yaml
deployment.apps/client-deployment created
wuxianmimi kubernetes-simplek8s % kubectl get deployments
NAME READY UP-TO-DATE AVAILABLE AGE
client-deployment 1/1 1 1 21s
wuxianmimi kubernetes-simplek8s %
接下来更改 client-deployment.yaml 中 containerPort 后,再应用配置就不会报错了。
-
更新镜像版本
如果要更新镜像版本,可以使用:
kubectl set image [object类型]/[object name] [容器 name]=[新镜像版本]
-
切换 Docker-client 请求指向
使用 eval $(minikube docker-env) 命令,可以将 docker-cli 指向的 docker-server 变成 minikube 创建的虚拟机中,可以方便我们调试:
wuxianmimi kubernetes-simplek8s % eval $(minikube docker-env)
wuxianmimi kubernetes-simplek8s % docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
bff39aba4d5b 6d3ffc2696ac "/coredns -conf /etc…" 8 minutes ago Up 8 minutes k8s_coredns_coredns-78fcd69978-x84sp_kube-system_b16c591f-cd49-4967-9489-f4654834f8aa_0
5f2dc9090d50 d9fa9053808e "/usr/local/bin/kube…" 8 minutes ago Up 8 minutes k8s_kube-proxy_kube-proxy-9bdkr_kube-system_c8cae802-b82a-455b-a44f-791f1541bb0b_0
f591feca3db1 k8s.gcr.io/pause:3.5 "/pause" 8 minutes ago Up 8 minutes k8s_POD_coredns-78fcd69978-x84sp_kube-system_b16c591f-cd49-4967-9489-f4654834f8aa_0
3d4d77d0ecbc k8s.gcr.io/pause:3.5 "/pause" 8 minutes ago Up 8 minutes k8s_POD_kube-proxy-9bdkr_kube-system_c8cae802-b82a-455b-a44f-791f1541bb0b_0
428446d5c4cc ba04bb24b957 "/storage-provisioner" 8 minutes ago Up 8 minutes k8s_storage-provisioner_storage-provisioner_kube-system_785bb891-8438-45f8-95ea-2fb7511af55a_0
5611755fac61 k8s.gcr.io/pause:3.5 "/pause" 8 minutes ago Up 8 minutes k8s_POD_storage-provisioner_kube-system_785bb891-8438-45f8-95ea-2fb7511af55a_0
fe491e1de92c 4641e56315a2 "kube-scheduler --au…" 9 minutes ago Up 9 minutes k8s_kube-scheduler_kube-scheduler-minikube_kube-system_6fd078a966e479e33d7689b1955afaa5_0
87aac0b31bd5 d5504eacf2d7 "kube-controller-man…" 9 minutes ago Up 9 minutes k8s_kube-controller-manager_kube-controller-manager-minikube_kube-system_f8d2ab48618562b3a50d40a37281e35e_0
86681a2dabf7 7605412e3e07 "kube-apiserver --ad…" 9 minutes ago Up 9 minutes k8s_kube-apiserver_kube-apiserver-minikube_kube-system_cf344d9adbf2feb59a7c63da2c6283f8_0
1ae60d767e22 2252d5eb703b "etcd --advertise-cl…" 9 minutes ago Up 9 minutes k8s_etcd_etcd-minikube_kube-system_cc51499f38934c109ed290475d9492d0_0
ed08b7a7550c k8s.gcr.io/pause:3.5 "/pause" 9 minutes ago Up 9 minutes k8s_POD_kube-scheduler-minikube_kube-system_6fd078a966e479e33d7689b1955afaa5_0
ce7d76aff58a k8s.gcr.io/pause:3.5 "/pause" 9 minutes ago Up 9 minutes k8s_POD_kube-controller-manager-minikube_kube-system_f8d2ab48618562b3a50d40a37281e35e_0
9f42fd98a0f2 k8s.gcr.io/pause:3.5 "/pause" 9 minutes ago Up 9 minutes k8s_POD_kube-apiserver-minikube_kube-system_cf344d9adbf2feb59a7c63da2c6283f8_0
d17349c2242c k8s.gcr.io/pause:3.5 "/pause" 9 minutes ago Up 9 minutes k8s_POD_etcd-minikube_kube-system_cc51499f38934c109ed290475d9492d0_0
wuxianmimi kubernetes-simplek8s %

浙公网安备 33010602011771号