k8s 中pod 区分多replicas和 istio等服务网格

问题描述

当发现pod 出现2/2 觉得是副本数变成了2,并且kubectl logs podname 没法查看
[root@master49 ~]# kubectl get pod
NAME                                                              READY   STATUS    RESTARTS   AGE
dev-elastic-job-lite-profile-a-5fc7b6c67d-wdrg8                   2/2     Running   0          35d


[root@master49 ~]# kubectl logs dev-elastic-job-lite-profile-a-5fc7b6c67d-wdrg8
error: a container name must be specified for pod dev-elastic-job-lite-profile-a-5fc7b6c67d-wdrg8, choose one of: [dev-elastic-job-lite-profile-a istio-proxy] or one of the init containers: [istio-init]
查看deployment 信息 发现只有一个副本数
[root@master49 ~]# kubectl get deployments.apps| grep dev-elastic-job-lite-profile-a
dev-elastic-job-lite-profile-a                    1/1     1            1           56d

image.png

查看是安装了服务网格istio

Serivce Mesh 能够看做是一个位于 TCP/IP 之上的网络模型,抽象了服务间可靠通讯的机制。
但与 TCP 不一样,它是面向应用的,为应用提供了统一的可视化和控制。web

如下是 Istio 的核心功能:安全

  • HTTP、gRPC、WebSocket 和 TCP 流量的自动负载均衡。
  • 屏蔽分布式系统通讯的复杂性 服务只用关注业务逻辑。经过丰富的路由规则、重试、故障转移和故障注入,能够对流量行为进行细粒度控制。
  • 对应用透明,Service Mesh 组件能够单独升级。
  • 可插入的策略层和配置 API,支持访问控制、速率限制和配额。
  • 对出入集群入口和出口中全部流量的自动度量指标、日志记录和追踪。
  • 经过强大的基于身份的验证和受权,在集群中实现安全的服务间通讯

最实用的就是日志功能,当pod启动失败时你很难看到日志,当出现 1/2时表明pod未启动成功
[root@master49 ~]# kubectl get pod --all-namespaces | grep 1/2
default          test-htjfweb-marketing-web-profile-a-6866876546-j2x9z             1/2     Running            0          35d
[root@master49 ~]# 
[root@master49 ~]# kubectl logs -f --tail=20 test-htjfweb-marketing-web-profile-a-6866876546-j2x9z test-htjfweb-marketing-web-profile-a
2021-05-16 05:34:02.651 TID:N/A  [Apollo-RemoteConfigRepository-1] [] WARN  c.c.f.apollo.internals.AbstractConfigRepository:26

k8s机器deployment 的副本数设置命令

[root@master49 ~]# kubectl scale deployment dev-elastic-job-lite-profile-a --replicas=3
deployment.apps/dev-elastic-job-lite-profile-a scaled
[root@master49 ~]# 
[root@master49 ~]# 
[root@master49 ~]# kubectl get deployments.apps | grep dev-elastic-job-lite-profile-a
dev-elastic-job-lite-profile-a                    1/3     3            1           56d
[root@master49 ~]# 
[root@master49 ~]# 
[root@master49 ~]# kubectl get deployments.apps | grep dev-elastic-job-lite-profile-a
dev-elastic-job-lite-profile-a                    3/3     3            1           56d
[root@master49 ~]# 
[root@master49 ~]# kubectl get pod | grep dev-elastic-job-lite-profile-a
dev-elastic-job-lite-profile-a-5fc7b6c67d-784sn                   2/2     Running   0          36s
dev-elastic-job-lite-profile-a-5fc7b6c67d-dw9qm                   2/2     Running   0          36s
dev-elastic-job-lite-profile-a-5fc7b6c67d-wdrg8                   2/2     Running   0          35d

部署在服务网格istio中的pod 日志查看命令

[root@master49 ~]# kubectl logs dev-elastic-job-lite-profile-a-5fc7b6c67d-wdrg8 dev-elastic-job-lite-profile-a