1/21

第十三章:了解 Kubernetes 配置

  • 更新镜像

在 client-pod.yaml 中,我们更改 image 为 stephengrider/multi-worker

# Kubernetes API 的版本
apiVersion: v1
# 这个配置文件生成的对象类型
kind: Pod
# 唯一标识对象的一些数据
metadata:
name: client-pod
labels:
  component: web
# 对象的状态
spec:
containers:
     # 容器名,任意取
  - name: client
     # 使用的镜像,镜像必须发布在 Docker Hub 上才能用
    image: stephengrider/multi-worker
     # 暴露的端口
    ports:
      - containerPort: 3000

随后在命令行使用 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: apps/v1
kind: Deployment
metadata:
name: client-deployment
spec:
 # Pod 数量
replicas: 1
 # Pod 选择器
selector:
  matchLabels:
    component: web
template:
   # Pod
  metadata:
    labels:
      component: web
  spec:
    containers:
      - name: client
        image: stephengrider/multi-client
        ports:
          - containerPort: 3000

完成配之后,我们先删除之前创建的 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 %
 
posted @ 2025-01-21 20:25  Hbro  阅读(2)  评论(0)    收藏  举报