当前位置: 首页 > news >正文

k8s常用操作 (一) ---根据上一篇文章用到写的 不全

k8s常用操作 (一)

---------------------------------上一篇文章用到的 地址就是这个-------------------
---------------------------------上一篇文章用到的 地址就是这个-------------------
---------------------------------上一篇文章用到的 地址就是这个-------------------

配置文件参数

[root@k8s-master01 ~]# vim /root/kubeadm-config.yaml
---
apiVersion: kubeadm.k8s.io/v1beta3
bootstrapTokens:
- groups:
  - system:bootstrappers:kubeadm:default-node-token
  token: 7t2weq.bjbawausm0jaxury
  ttl: 24h0m0s
  usages:
  - signing
  - authentication
kind: InitConfiguration
localAPIEndpoint:           #在此节点上要部署的 API 服务器的端点
  advertiseAddress: 192.168.28.130    # Master01 的ip地址
  bindPort: 6443     #本来两个端口应该都是16443,但是负载均衡+高可用占用了,这里用6443进行端口转发。 
nodeRegistration:
  criSocket: unix:///var/run/cri-dockerd.sock  # 如果使用的是默认的 Docker CRI,路径应该是 unix:///var/run/docker.sock。必须确定使用了 cri-dockerd,则需要确保它已正确安装并启动。 使用vim /etc/systemd/system/cri-docker.socket 查看自定义配置是否为ListenStream=/var/run/cri-dockerd.sock
  name: k8s-master01    # Master01 的主机名
  taints:
  - effect: NoSchedule
    key: node-role.kubernetes.io/control-plane
---
apiServer:
  certSANs:
  - 192.168.28.199      # VIP ip地址   
  timeoutForControlPlane: 4m0s
apiVersion: kubeadm.k8s.io/v1beta3
certificatesDir: /etc/kubernetes/pki
clusterName: kubernetes
controlPlaneEndpoint: 192.168.28.199:16443   # VIP ip地址:端口
controllerManager: {}
etcd:
  local:
    dataDir: /var/lib/etcd
imageRepository: registry.cn-hangzhou.aliyuncs.com/google_containers  #镜像仓库地址(阿里)
kind: ClusterConfiguration
kubernetesVersion: v1.28.15      # kubernetes的版本号
networking:                      # VIP ip地址:端口
  dnsDomain: cluster.local       # kubernetes的版本号
  podSubnet: 172.16.0.0/16       # Pod 的网段地址
  serviceSubnet: 10.96.0.0/16    # service 的网段地址 
scheduler: {}
将kubelet配置成systemd作为cgroug驱动?
Kubernetes默认设置cgroup驱动(cgroupdriver) 为“systemd”,而Docker服务的cgroup驱动默认值为“cgroupfs”,建议将其修改为“systemd”,与Kubernetes保持一致。
`controlPlaneEndpoint` 用于为节点设置一个稳定的 IP 地址或 DNS 名称,它通常用于配置 API 服务器的访问信息,其实就相当于控制台后台控制面板,可以看整个集群的状态,内存CPU等,我使用Keepalived设置了高可用VIP形式 ip地址:端口一旦主节点挂掉就VIP漂移控制台漂移到从节点。`controlPlaneEndpoint` 的格式可以是一个合法的 IP 地址或者 RFC-1123 形式的 DNS 子域名,二者均可以带一个可选的 TCP 端口号。
    如果没有设置 `controlPlaneEndpoint`,则使用 `advertiseAddress + bindPort`。如果设置了 `controlPlaneEndpoint`,但未指定 TCP 端口号,则使用 `bindPort
`localAPIEndpoint` 代表的是在此节点上要部署的 API 服务器的端点。它允许您定制本地 API 服务器所公布的、可访问的 IP/DNS 名称和端口。在高可用(HA)配置中,此字段与` ClusterConfiguration.controlPlaneEndpoint `的取值不同:后者代表的是整个集群的全局端点,该端点上的请求会被负载均衡到每个 API 服务器。
我的目前网段,而且我计划使用calico 
ens33 是我的主要网络接口,IP 地址为 192.168.28.131/24,网关是 192.168.28.2
docker0 是 Docker 自动创建的虚拟网络接口,使用了 172.17.0.0/16 网段。
计划使用 Calico 作为 CNI 插件,Calico 默认使用 192.168.0.0/16 网段。但这个网段可能会与宿主机网络(192.168.28.0/24)冲突。为了避免冲突,我直接重新规划 Pod 网络为172.16网段,172.16.0.0/16  其实也可以用10.244.x.x ,网段10.244.0.0/16(这是 Flannel 默认使用的网段,也可以用于 Calico)。

podSubnet: 172.16.0.0/16 # Pod 的网段地址
serviceSubnet: 10.96.0.0/16 # service 的网段地址

检查k8s版本
 kubeadm version
校准时间并且加到开机自启
`校准时间并且加到开机自启`

echo "*/5 * * * *        ntpdate -b ntp.aliyun.com" >>/var/spool/cron/root

`修改上海时区`
$ ln -sf /usr/share/zoneinfo/Asia/Shanghai  /etc/localtime
$ echo 'ASia/Shanghai' > /etc/timezone

uname -r 查看内核版本

检查各节点状态
[root@k8s-master01 ~]# kubectl get nodes
NAME           STATUS   ROLES           AGE     VERSION
k8s-master01   Ready    control-plane   2d13h   v1.28.15
k8s-master02   Ready    control-plane   2d13h   v1.28.15
k8s-master03   Ready    control-plane   2d13h   v1.28.15
k8s-node01     Ready    <none>          2d13h   v1.28.15
k8s-node02     Ready    <none>          2d13h   v1.28.15
应用某个yaml配置文件
kubectl apply -f calico.yaml

pod查询

查看所有pod信息
kubectl get pods -A
查看命名空间为kube-system里的Pod的信息
kubectl get po -n kube-system
不用:查看名为metrics-serverpod信息
不常用:查看命名空间为kube-system 里的,pod容器名为metrics-server的pod信息

包含不行,必须全名,后缀编号ID不shell敲。
$ kubectl get po -n kube-system -l k8s-app=metrics-server
查看包含me字母pod信息

查看命名空间为kube-system ,pod容器名包含me字母的pod信息

$ kubectl get pods -n kube-system | grep me
$ kubectl get pods -n kube-system | grep metrics-server
查看节点状态
kubectl top node
确定Kube-Proxy模式 出现ipvs 四个字的输出
$ curl 127.0.0.1:10249/proxyMode
ipvs[root@k8s-master01 kubeadm-metrics-server]# 
查询某个以kube开头pod ip
先查看所有容器,确定它的命令空间。 
kubectl get pods -A

再在查询命名空间为kube-system里的所有pod的节点ip ,最后加grep进行过滤。
kubectl get pods   -o wide --namespace=kube-system |grep  kube-con
[root@k8s-master01 ~]# kubectl get pods   -o wide --namespace=kube-system |grep  kube-con
kube-controller-manager-k8s-master01   1/1     Running   6 (13h ago)    39h   192.168.28.130   k8s-master01   <none>           <none>
kube-controller-manager-k8s-master02   1/1     Running   1 (39h ago)    39h   192.168.28.131   k8s-master02   <none>           <none>
kube-controller-manager-k8s-master03   1/1     Running   2 (39h ago)    39h   192.168.28.132   k8s-master03   <none>           <none>


查询开头为kubopod网段
kubectl get  svc -A

kubectl get  svc -n kuboard

kubectl get  svc -A | grep kubo
kuboard                kuboard-v3                  NodePort    10.96.248.141   <none>        80:30080/TCP,10081:30081/TCP,10081:30081/UDP   15h
删除指定容器
先查到容器过滤出容器名,

kubectl get po -A | grep kubo

再删除指定容器

kubectl delete pod kuboard-v3-7979bc788f-dz4kh -n kuboard --force --grace-period=0
使用 kubectl port-forward 命令

您可以使用 kubectl port-forward 命令尝试转发一个端口到本地机器,如果该端口已经被占用,命令会报错提示端口冲突。

sh复制

kubectl port-forward <pod-name> <local-port>:<container-port> -n <namespace>

如果 <local-port> 已经被占用,您将会看到一个错误消息,例如:

Error: port <local-port> is already allocated

停止 kubectl port-forward 命令,您需要在执行该命令的终端会话中按 Ctrl+C。这会中断端口转发进程,从而停止端口转发。

# kubectl port-forward  metrics-server 443:443 -n kube-system
Error from server (NotFound): pods "metrics-server" not found

# kubectl  get po -A|grep me
kube-system            metrics-server-58b7c66876-z2l7v              1/1     Running   0               43h
kubernetes-dashboard   dashboard-metrics-scraper-597d858d44-7698f   1/1     Running   0               43h

# kubectl port-forward  metrics-server-58b7c66876-z2l7v  443:443 -n kube-system
Forwarding from 127.0.0.1:443 -> 443
Forwarding from [::1]:443 -> 443

[root@k8s-master01 dashboard]# 
查看docker容器端口映射
 docker ps  | grep kuboard
[root@k8s-master01 kubernetes_install]# docker ps  | grep kuboard
6e4f71727a54   eipwork/kuboard:v3                                  "/entrypoint.sh"         14 minutes ago   Up 14 minutes   443/tcp, 0.0.0.0:1080->80/tcp, :::1080->80/tcp, 0.0.0.0:30081->10081/tcp, :::30081->10081/tcp   kuboard
 
1080 是外部端口》到80 端口内 
docker端口映射格式为 宿主机端口:docker容器端口
测试端口是否映射成功
netstat -tulnp | grep 30081
查看 ApiServer 地址
$ kubectl cluster-info
输出结果如下:
Kubernetes control plane is running at https://192.168.28.199:16443

查看 ApiServer 地址的其他方式如下:

在 Kubernetes 集群中,ApiServer 的地址通常在集群的配置文件中指定,这个配置文件通常位于控制平面节点上的 /etc/kubernetes/manifests/ 目录中,文件名为 kube-apiserver.yaml。您可以通过查看这个文件来找到 ApiServer 的地址。

以下是查看 ApiServer 地址的步骤:

  1. 登录到控制平面节点: 使用 SSH 连接到运行 Kubernetes API 服务器的控制平面节点。

  2. 查看 ApiServer 配置文件: 使用 cat 命令查看 ApiServer 的配置文件:

    sudo cat /etc/kubernetes/manifests/kube-apiserver.yaml
    

    在输出中,查找 --advertise-address 参数,它指定了 ApiServer 监听的 IP 地址。

  3. 查看 Kubernetes 配置文件: 如果您是集群的管理员,您也可以查看 kubeconfig 文件来获取 ApiServer 的地址。通常,这个文件位于 /etc/kubernetes/admin.conf~/.kube/config。使用 kubectl 命令查看当前上下文的配置:

    kubectl config view
    

    在输出中,查找 server 字段,它指定了 ApiServer 的地址。

  4. 使用 kubectl 命令: 您也可以使用 kubectl 命令来获取 ApiServer 的地址:

    kubectl cluster-info
    

    这个命令会显示 ApiServer 的地址和端口。

  5. 查看 Pod 描述信息: ApiServer 通常以 Pod 的形式运行在 kube-system 命名空间中。您可以查看 ApiServer Pod 的描述信息来获取其 IP 地址:

    kubectl describe pod -n kube-system | grep -i "control plane"
    

    在输出中,查找 ControlPlane Pod 的 IP 地址。

请注意,ApiServer 的地址通常是内部地址,用于集群内部通信。如果您需要从外部访问 ApiServer,您可能需要配置 Kubernetes 的 RBAC 和网络策略,或者使用 Kubernetes 的代理功能。

相关文章:

  • __call__
  • fastpdf应用程序错误0xc0000142
  • 反汇编学习
  • 基于YOLOv8与SKU110K数据集实现超市货架物品目标检测与计算
  • Matlab 单球机器人动力学与LQR控制研究
  • P11229 [CSP-J 2024] 小木棍
  • 跳转到视图文件夹
  • 如何展示一个类的所有方法
  • ArcGIS Pro中加载在线地图的详细指南
  • 利用AI让数据可视化
  • Python中的“泛型”和“多重继承”
  • uniapp报错 Right-hand side of ‘instanceof‘ is not an object
  • rust笔记14:mod和use的使用区别
  • 学习笔记 ASP.NET Core Web API 8.0部署到iis
  • PAT甲级(Advanced Level) Practice 1022 Digital Library
  • browser_use 自动化浏览器agent使用案例
  • 使用BLSTM自动评估句子级构音障碍的可理解性
  • checkpoint机制
  • IntelliJ IDEA 中 Maven 的 `pom.xml` 变灰带横线?一文详解解决方法
  • MyBatis-Plus防全表更新与删除插件BlockAttackInnerInterceptor
  • 上海率先推进生物制品分段生产试点,这款国产1类创新药获批上市
  • 中央宣传部、全国妇联联合发布2025年“最美家庭”
  • 秦洪看盘|指标股发力,A股渐有突破态势
  • 最高降九成!特朗普签署降药价行政令落地存疑,多家跨国药企股价收涨
  • “降息潮”延续,多家民营银行下调存款利率
  • 中美日内瓦经贸会谈联合声明