K8S集群安装部署–手把手亲测安装

一、Kubernetes简介

Kubernetes中文官网:Kubernetes,简称:K8S

GitHub:github.com/kubernetes/kubernetes

Kubernetes简称为K8s,是用于自动部署、扩缩和管理容器化应用程序的开源系统,起源于Google 集群管理工具Borg

k8s集群属于Master-Slave主从架构,Master节点负责集群管理和资源调度,用于运行控制平面组件(Control Plane Components),Slave节点就是工作负载节点,一般称为Node节点,也叫Worker节点,主要负责运行Pod,一个Pod里可以同时运行多个容器,而容器一般封装的就是基于Dokcer打包的应用,Pod英文叫豌豆荚,每个容器就像是一颗豌豆,简单来说Pod就是一组容器。

Master节点组件及功能

Slave节点组件及功能

安装部署

二进制包
Github下载稳定版的二进制包,手动部署每个组件组成k8s集群。

kubeadm工具
使用Kubeadm工具可以快速搭建一个k8s集群,主要包括初始化控制平面节点和加入Worker节点,提供的主要功能如下:

kubeadm init:初始化一个Master节点
kubeadm join:将Worker节点加入集群
kubeadm upgrade:升级K8s版本
kubeadm token:管理 kubeadm join 使用的令牌
kubeadm reset:清空 kubeadm init 或者 kubeadm join 对主机所做的任何更改
kubeadm version:打印 kubeadm 版本
kubeadm alpha:预览可用的新功能

二、准备工作

软硬件要求
Linux操作系统, CentOS7
每台节点至少2G
Master节点至少2C
集群节点网络互通

软件环境

操作系统CentOS Linux release 7 x86_64
Dockerv24.0.7
k8sv1.20.9
kubeadmv1.20

节点配置

主机名角色IPCPU内存
node52zkMaster192.168.3.523C4G
node53zkNode192.168.3.533C4G
node54zkNode192.168.3.543C4G

环境配置
**修改hosts配置

#各自修改主机名(从52-54各自顺序执行)
hostnamectl set-hostname node52zk
hostnamectl set-hostname node53zk
hostnamectl set-hostname node54zk

配置所有节点的IP和域名映射**

# vi /etc/hosts
echo '''
> 192.168.3.52 node52zk
> 192.168.3.53 node53zk
> 192.168.3.54 node54zk
> ''' >> /etc/hosts

 cat /etc/hosts
192.168.3.52 node52zk
192.168.3.53 node53zk
192.168.3.54 node54zk

三台主机都需要执行如下命令

**关闭防火墙和selinux

systemctl stop firewalld
systemctl disable firewalld
sed -i 's/enforcing/disabled/' /etc/selinux/config
setenforce 0

关闭swap分区

kubelet要求必须禁用交换分区,所以kubeadm初始化时回检测swap是否关闭,如果没有关闭会报错,如果不想关闭安装时命令行可以指定-ignore-preflight-errors=Swap,关闭Swap分区在所有节点上执行如下命令:

# 临时关闭,重启恢复
swapoff -a    # 临时关闭
vi /etc/fstab # 注释到swap那一行  永久关闭
sysctl -p	# 生效
cat /etc/fstab	# 查看验证
/dev/mapper/centos-swap swap                    swap    defaults        0 0

配置SSH免密登录

先生成公钥对,再把公钥远程复制到所有节点。

 ssh-keygen
 ssh-copy-id node52zk
 ssh-copy-id node53zkd
 ssh-copy-id node54zk

 #测试登录
 ssh node53zk

将桥接的IPv4流量传递到iptables的链(三台主机都执行):

以下net.ipv4.ip_forward如存在=0,修改为1即可

cat > /etc/sysctl.d/k8s.conf << EOF
net.ipv4.ip_forward = 1
net.ipv4.tcp_tw_recycle = 0
net.bridge.bridge-nf-call-ip6tables = 1
net.bridge.bridge-nf-call-iptables = 1
EOF

sysctl --system

禁用SELinux

所有节点执行如下命令:

sed -i 's/SELINUX=enforcing/SELINUX=disabled/' /etc/sysconfig/selinux

关闭防火墙

所有节点执行如下命令:

systemctl disable firewalld
systemctl stop firewalld

修改内核参数

 
 
[root@node52zk]# modprobe br_netfilter
[root@node52zk]# echo "modprobe br_netfilter" >> /etc/profile
[root@node52zk]# tee /etc/sysctl.d/k8s.conf << EOF
net.bridge.bridge-nf-call-ip6tables = 1
net.bridge.bridge-nf-call-iptables = 1
EOF
# 重新加载配置
[root@node52zk]# sysctl -p /etc/sysctl.d/k8s.conf

配置集群时钟同步

Centos7默认使用Chrony工具而非NTP进行时间同步,修改硬件时钟为UTC,时区为本地时区,所有节点执行如下修改

# 硬件时钟设置为UTC
timedatectl set-local-rtc 0
# 设置本地时区,显示本地时间
timedatectl set-timezone Asia/Shanghai
# 手动加载RTC设置
hwclock --systohc
# 验证
[root@node52zk]# timedatectl
            Local time: Thu 2023-12-07 09:30:44 CST
  Universal time: Thu 2023-12-07 01:30:44 UTC
        RTC time: Thu 2023-12-07 01:30:41
       Time zone: Asia/Shanghai (CST, +0800)
     NTP enabled: n/a
NTP synchronized: no
 RTC in local TZ: no
      DST active: n/a

配置k8s的Yum源

国外yum源因为网络问题下载比较慢,此处修改为国内aliyun,用于安装k8s各个组件。所有节点执行

vi  /etc/yum.repos.d/kubernetes.repo
[kubernetes]
name=Kubernetes
baseurl=https://mirrors.aliyun.com/kubernetes/yum/repos/kubernetes-el7-x86_64/
enabled=1
gpgcheck=0

#直接加入代码方式,以下方式试了不成功
cat > /etc/yum.repos.d/kubernetes.repo << EOF[kubernetes]
name=Kubernetes
baseurl=https://mirrors.aliyun.com/kubernetes/yum/repos/kubernetes-el7-x86_64
enabled=1
gpgcheck=0
repo_gpgcheck=0
gpgkey=https://mirrors.aliyun.com/kubernetes/yum/doc/yum-key.gpg https://mirrors.aliyun.com/kubernetes/yum/doc/rpm-package-key.gpg
EOF[kubernetes]

所有机器升级内核到最新

详细内核升级步骤:参考linux(centos7)内核升级 (低内核会导致docker和k8s运行不稳定)

三、所有节点安装Docker/kubeadm/kubelet

1、自动安装
使用官方脚本一键自动安装,因默认的国外镜像仓库下载比较慢,–mirror Aliyun表示设置镜像仓库为国内阿里云。

# curl -fsSL https://get.docker.com | bash -s docker --mirror Aliyun
 
# Executing docker install script, commit: e5543d473431b782227f8908005543bb4389b8de
+ sh -c 'yum install -y -q yum-utils'
+ sh -c 'yum-config-manager --add-repo https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo'
...
+ sh -c 'yum install -y -q docker-ce docker-ce-cli containerd.io docker-compose-plugin docker-ce-rootless-extras docker-buildx-plugin'
...

2、手动安装
a、卸载旧版本

[root@node52zk]# yum remove docker \
                  docker-client \
                  docker-client-latest \
                  docker-common \
                  docker-latest \
                  docker-latest-logrotate \
                  docker-logrotate \
                  docker-engine

b、设置Yum仓库
首先,安装以下软件包,其中,yum-utils是yum的一个工具包集合,提供了yum-config-manager命令,用于管理软件仓库,device mapper(物理块设备映射为逻辑块)存储驱动程序需要安装device-mapper-persistent-data(管理和持久化device mapper配置信息)和lvm2(磁盘分区管理)。

依赖安装:

yum install -y yum-utils device-mapper-persistent-data lvm2
sudo yum install -y yum-utils \
  device-mapper-persistent-data \
  lvm2

设置yum仓库地址,此处选择了阿里云,默认是国外源下载速度比较慢。
阿里源安装:

yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo

yum-config-manager \
    --add-repo \
    https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo

c、安装 Docker Engine-Community(社区版)

yum install docker-ce docker-ce-cli containerd.io docker-compose-plugin

d、查看Docker版本

[root@node52zk tools]# docker -v
Docker version 24.0.7, build afdd53b
[root@node52zk tools]# docker info
Client: Docker Engine - Community
 Version:    24.0.7
 Context:    default
 Debug Mode: false
 Plugins:
  buildx: Docker Buildx (Docker Inc.)
    Version:  v0.11.2
    Path:     /usr/libexec/docker/cli-plugins/docker-buildx
  compose: Docker Compose (Docker Inc.)
    Version:  v2.21.0
    Path:     /usr/libexec/docker/cli-plugins/docker-compose

Server:
 Containers: 16
  Running: 12
  Paused: 0
  Stopped: 4
 Images: 11
 Server Version: 24.0.7
 Storage Driver: overlay2
  Backing Filesystem: xfs
  Supports d_type: true
  Using metacopy: false
  Native Overlay Diff: true
  userxattr: false
 Logging Driver: json-file
 Cgroup Driver: systemd
 Cgroup Version: 1
 Plugins:
  Volume: local
  Network: bridge host ipvlan macvlan null overlay
  Log: awslogs fluentd gcplogs gelf journald json-file local logentries splunk syslog
 Swarm: inactive
 Runtimes: io.containerd.runc.v2 runc
 Default Runtime: runc
 Init Binary: docker-init

如有报错:Server报错:Cannot connect to the Docker daemon at unix:///var/run/docker.sock,原因是Docker安装后默认不启动,执行启动命令:
再次打印Docker安装详情,就正常了

systemctl start docker
[root@node52zk tools]# docker info
Client: Docker Engine - Community

e、运行hello-world镜像
默认先从本地查找hello-world镜像,如果找不到就从远程仓库拉取。

docker run hello-world

查看hello-world镜像

[root@node54zk tools]# docker images
REPOSITORY                                                       TAG       IMAGE ID       CREATED         SIZE
hello-world                                                      latest    9c7a54a9a43c   7 months ago    13.3kB

f、docker启停和查看状态

systemctl start|stop|status docker

设置开机启动

systemctl start docker
systemctl enable docker

g、修改docker数据存放目录位置(默认目录是/var/lib/docker,这里防止/目录满我修改到数据盘内)和镜像加速

{
  "graph": "/data/docker",#我这里没设置成功,把这行删除掉
  "registry-mirrors": ["https://01xxgaft.mirror.aliyuncs.com"]
}

systemctl restart docker

四、安装K8S集群

安装三大组件-kubeadm、kubelet、kubectl
kubeadm:用来初始化k8s集群的指令。
kubelet:在集群的每个节点上用来启动 Pod 和容器等。
kubectl:用来与k8s集群通信的命令行工具,查看、创建、更新和删除各种资源。

# 所有节点都安装
[root@node52zk]# yum install -y kubelet-1.20.9 kubeadm-1.20.9 kubectl-1.20.9
# 所有节点设置开机启动
[root@node52zk]# systemctl enable kubelet

初始化k8s集群

apiserver-advertise-address:apiserver监听地址
control-plane-endpoint:控制平面的IP地址或DNS名称
image-repository:镜像仓库,此处为国内阿里云镜像仓库加速下载
service-cidr:为Service分配的IP地址段
pod-network-cidr:为pod分配的IP地址段

# 所有节点添加
echo "192.168.3.52  cluster-endpoint" >> /etc/hosts
# 只在主节点执行
kubeadm init \
--apiserver-advertise-address=192.168.3.52 \
--control-plane-endpoint=cluster-endpoint \
--image-repository  registry.cn-hangzhou.aliyuncs.com/google_containers \
--kubernetes-version v1.20.9 \
--service-cidr=10.96.0.0/12 \
--pod-network-cidr=172.20.0.0/16

安装完成提示:


 #安装完成提示界面
 Your Kubernetes control-plane has initialized successfully!

To start using your cluster, you need to run the following as a regular user:

  mkdir -p $HOME/.kube
  sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config
  sudo chown $(id -u):$(id -g) $HOME/.kube/config

Alternatively, if you are the root user, you can run:

  export KUBECONFIG=/etc/kubernetes/admin.conf

You should now deploy a pod network to the cluster.
Run "kubectl apply -f [podnetwork].yaml" with one of the options listed at:
  https://kubernetes.io/docs/concepts/cluster-administration/addons/

You can now join any number of control-plane nodes by copying certificate authorities
and service account keys on each node and then running the following as root:

  **kubeadm join cluster-endpoint:6443 --token m1n8jt.eqnvag3ebzl9qqyp \
    --discovery-token-ca-cert-hash sha256:83e642d3ecd55dd6723337087bf147eb4516bb539323790f20dd63fbc8ea2651 \
    --control-plane** 

Then you can join any number of worker nodes by running the following on each as root:

(base) [root@node52zk tools]# systemctl start kubelet #启动命令
(base) [root@node52zk tools]# systemctl enable kubelet #所有节点设置开机启动
Created symlink from /etc/systemd/system/multi-user.target.wants/kubelet.service to /usr/lib/systemd/system/kubelet.service.

初始化需要下载多个镜像,可能时间比较久,最终3台安装的镜像如下:

[root@node52zk /]# docker images
REPOSITORY                                                       TAG       IMAGE ID       CREATED         SIZE
hello-world                                                      latest    9c7a54a9a43c   7 months ago    13.3kB
nginx                                                            latest    605c77e624dd   23 months ago   141MB
registry.cn-hangzhou.aliyuncs.com/google_containers/kube-proxy   v1.20.9   8dbf9a6aa186   2 years ago     99.7MB
kubernetesui/dashboard                                           v2.3.1    e1482a24335a   2 years ago     220MB
calico/node                                                      v3.15.5   f0393ae546b5   2 years ago     437MB
calico/pod2daemon-flexvol                                        v3.15.5   0cdfd80862a1   2 years ago     21.9MB
calico/cni                                                       v3.15.5   42b7a3f2bfdf   2 years ago     109MB
registry.cn-hangzhou.aliyuncs.com/google_containers/pause        3.2       80d28bedfe5d   3 years ago     683kB

要使非root用户运行kubectl,请执行以下命令,这也是上面kubeadm init输出的一部分:

mkdir -p $HOME/.kube
sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config
sudo chown $(id -u):$(id -g) $HOME/.kube/config

如果是root用户,则可以执行以下命令:

export KUBECONFIG=/etc/kubernetes/admin.conf

记住上面输出的kubeadm join命令,下面用该命令将节点加入集群。

加入节点

记住上面输出的kubeadm join命令,下面用该命令将节点加入集群。所有Node节点执行如下命令:

kubeadm join cluster-endpoint:6443 --token m1n8jt.eqnvag3ebzl9qqyp \
    --discovery-token-ca-cert-hash sha256:83e642d3ecd55dd6723337087bf147eb4516bb539323790f20dd63fbc8ea2651
改为:
kubeadm join 192.168.3.52:6443 --token m1n8jt.eqnvag3ebzl9qqyp \
>     --discovery-token-ca-cert-hash sha256:83e642d3ecd55dd6723337087bf147eb4516bb539323790f20dd63fbc8ea2651

查看token列表,可观察到每个token的剩余有效时间

[root@node52zk tools]# kubeadm token list
TOKEN                     TTL         EXPIRES                     USAGES                   DESCRIPTION                                                EXTRA GROUPS
m1n8jt.eqnvag3ebzl9qqyp   6h          2023-12-07T16:42:55+08:00   authentication,signing   The default bootstrap token generated by 'kubeadm init'.   system:bootstrappers:kubeadm:default-node-token

默认token有效期为24小时,过期之后token失效,可重新生成token:

kubeadm token create --print-join-command

修改角色:

# node节点执行
[root@node53zk]# kubectl label node node53zk node-role.kubernetes.io/worker=worker
[root@node54zk]# kubectl label node node54zk node-role.kubernetes.io/worker=worker
# master节点执行
[root@node52zk]# kubectl get nodes
NAME       STATUS   ROLES                         AGE   VERSION
node52zk   Ready    control-plane,master,worker   17h   v1.20.9
node53zk   Ready    worker                        16h   v1.20.9
node54zk   Ready    worker                        16h   v1.20.9

安装网络插件

Calico是一套开源的纯三层的虚拟化网络解决方案,是目前K8s主流的网络方案。它把每个节点都作为一个虚拟路由器,把Pod当做路由器上一个终端设备为其分配一个IP地址,通过BGP协议生成路由规则,实现不同节点上的Pod网络互通。

# 下载calico.yaml并保存到本地,找到下载的calico.yaml文件
[root@node52zk]# curl https://docs.projectcalico.org/v3.15/manifests/calico.yaml -O
#修改配置,一定注意,这里缩进格式,否则错误
             - name: CALICO_IPV4POOL_CIDR
               value: "172.20.0.0/16"
# 提交
[root@node52zk]# kubectl apply -f calico.yaml
# 验证是否成功
[root@node52zk]#  kubectl get pod -A | grep calico
kube-system            calico-kube-controllers-bc4f7c685-vwn4h      1/1     Running   0          16h
kube-system            calico-node-krw28                            1/1     Running   0          16h
kube-system            calico-node-qphbq                            1/1     Running   0          16h
kube-system            calico-node-xmlq9                            1/1     Running   0          16h

五、测试K8S集群

创建nginx pod
默认会在默认命名空间default中创建一个名称为mynignx的deployment,同时会创建一个名称以myniginx为前缀,叫mynginx-5b686ccd46-wshz6的Pod。

[root@node52zk]# kubectl create deployment mynginx --image=nginx
deployment.apps/mynginx created

# 查看pod
[root@node52zk]# kubectl get pod,svc
NAME                           READY   STATUS              RESTARTS   AGE
pod/mynginx-5b686ccd46-5q86l   0/1     ContainerCreating   0          25s

NAME                 TYPE        CLUSTER-IP   EXTERNAL-IP   PORT(S)   AGE
service/kubernetes   ClusterIP   10.96.0.1    <none>        443/TCP   77m

对外暴露访问
基于第一步创建的deployment再创建一个名叫mynginx的Service,资源类型由–type=ClusterIP修改为–type=NodePort,会在每个Node节点上监听31741端口,用于接收集群外部访问。

[root@node52zk tools]#  kubectl expose deployment mynginx --port=80 --type=NodePort
service/mynginx exposed # 创建成功
# 查看
(base) [root@node52zk tools]# kubectl get pod,svc 
NAME                           READY   STATUS    RESTARTS   AGE
pod/mynginx-5b686ccd46-5q86l   1/1     Running   0          7m50s

NAME                 TYPE        CLUSTER-IP      EXTERNAL-IP   PORT(S)        AGE
service/kubernetes   ClusterIP   10.96.0.1       <none>        443/TCP        84m
service/mynginx      NodePort    10.96.214.179   <none>        80:31741/TCP   21s

浏览器输入<任意一个节点IP>:,都可以访问nginx首页表示测试成功。
http://192.168.3.52:31741/
http://192.168.3.53:31741/
http://192.168.3.54:31741/
在这里插入图片描述

在这里插入图片描述

六、安装Dashboard

k8s官方提供了一个简单的Dashboard,主要提供工作负载,服务,配置和存储,集群等管理功能。

Github:github.com/kubernetes/dashboard

通过kubectl命令安装

(base) [root@node52zk tools]# kubectl apply -f https://raw.githubusercontent.com/kubernetes/dashboard/v2.3.1/aio/deploy/recommended.yaml

执行一下命令修改对外暴露访问端口,由–type=ClusterIP修改为–type=NodePort

#执行命令:kubectl edit svc kubernetes-dashboard -n kubernetes-dashboard
#查看结果
[root@node52zk tools]# kubectl edit svc kubernetes-dashboard -n kubernetes-dashboard
service/kubernetes-dashboard edited

查看service

[root@node52zk]# kubectl get svc -A|grep dashboard
kubernetes-dashboard   dashboard-metrics-scraper   ClusterIP   10.101.12.196   <none>        8000/TCP                 19m
kubernetes-dashboard   kubernetes-dashboard        NodePort    10.100.10.63    <none>        443:31586/TCP            19m

浏览器输入访问地址:https://192.168.3.52:31586/,需要token才能访问。注意https
https://192.168.3.52:31586/#/login
https://192.168.3.52:31586/#/login
https://192.168.3.53:31586/#/login

创建访问账号

[root@node52zk tools]# vi dashboard-token.yaml
#输入往下命令:注意dashboard-token.yaml 所在目录地址
apiVersion: v1
kind: ServiceAccount
metadata:
  name: admin-user
  namespace: kubernetes-dashboard
---

apiVersion: rbac.authorization.k8s.io/v1beta1
kind: ClusterRoleBinding
metadata:
  name: admin-user
roleRef:
  apiGroup: rbac.authorization.k8s.io
  kind: ClusterRole
  name: cluster-admin
subjects:
- kind: ServiceAccount
  name: admin-user
  namespace: kubernetes-dashboard
  
[root@node52zk]# kubectl apply -f dashboard-token.yaml
serviceaccount/admin-user created #创建成功

获取创建账号的token

[root@node52zk tools]# kubectl get secret -n kubernetes-dashboard
NAME                               TYPE                                  DATA   AGE
admin-user-token-84gqp             kubernetes.io/service-account-token   3      51s
default-token-scvkq                kubernetes.io/service-account-token   3      24m
kubernetes-dashboard-certs         Opaque                                0      24m
kubernetes-dashboard-csrf          Opaque                                1      24m
kubernetes-dashboard-key-holder    Opaque                                2      24m
kubernetes-dashboard-token-ht52r   kubernetes.io/service-account-token   3      24m
(base) [root@node52zk tools]# kubectl describe secret admin-user-token-84gqp -n kubernetes-dashboard
Name:         admin-user-token-84gqp
Namespace:    kubernetes-dashboard
Labels:       <none>
Annotations:  kubernetes.io/service-account.name: admin-user
              kubernetes.io/service-account.uid: 8f21ab9b-3968-49f9-bf54-80baac5b8ab7

Type:  kubernetes.io/service-account-token

Data
====
ca.crt:     1066 bytes
namespace:  20 bytes
token:      eyJhbGciOiJSUzI1NiIsImtpZCI6Im1SUV91TDFnZTVDYVZQYnhrY0c3VG9Ka09GWVdfN0Z0TnRCVTJ5MzVJQTAifQ.eyJpc3MiOiJrdWJlcm5ldGVzL3NlcnZpY2VhY2NvdW50Iiwia3ViZXJuZXRlcy5pby9zZXJ2aWNlYWNjb3VudC9uYW1lc3BhY2UiOiJrdWJlcm5ldGVzLWRhc2hib2FyZCIsImt1YmVybmV0ZXMuaW8vc2VydmljZWFjY291bnQvc2VjcmV0Lm5hbWUiOiJhZG1pbi11c2VyLXRva2VuLTg0Z3FwIiwia3ViZXJuZXRlcy5pby9zZXJ2aWNlYWNjb3VudC9zZXJ2aWNlLWFjY291bnQubmFtZSI6ImFkbWluLXVzZXIiLCJrdWJlcm5ldGVzLmlvL3NlcnZpY2VhY2NvdW50L3NlcnZpY2UtYWNjb3VudC51aWQiOiI4ZjIxYWI5Yi0zOTY4LTQ5ZjktYmY1NC04MGJhYWM1YjhhYjciLCJzdWIiOiJzeXN0ZW06c2VydmljZWFjY291bnQ6a3ViZXJuZXRlcy1kYXNoYm9hcmQ6YWRtaW4tdXNlciJ9.TRV8bKrUhc6GJHyJ3Y20UBb6em08vpYHrbG9zf6Szroi41Go_x-jzqPWnfYjv0GhqHGXOgEj-N-hU98rPxT6mjSjjHy5dywfbjHlfeANQxv0X9zE4axjgdAkLx0eyQmSpbKU341Ir6PKU_Pfl-PNDXinDK-lsNl2Eem6Dm6HN0XixOWp55f4WqGZB5nHMuflkZYVO_KNvegYcyS7Kt3k1Qt-D_nslCVwFk1LQZKgZk_b2R0F8qlIn_Liirg6xoILb-ipuVdx-yWFZlahST9a0e0OsY1I1hZk2pKdsTg4VDnqf6mb6sxD8WxqWTr12ym5IWSVRUAUsQiDXDiNPBkNpQ

登录界面
输入上面的token,进入dashboard首页,进入K8S系统
在这里插入图片描述
在这里插入图片描述

七、k8s常用命令

查看pod,service,endpoints,secret等等的状态

kubectl get 组件名      # 例如kubectl get pod   查看详细信息可以加上-o wide   其他namespace的指定 -n namespace名

创建,变更一个yaml文件内资源,也可以是目录,目录内包含一组yaml文件(实际使用中都是以yaml文件为主,直接使用命令创建pod的很少,推荐多使用yaml文件)

kubectl apply -f xxx.yaml    # 例如kubectl apply -f nginx.yaml   这里是如果没有则创建,如果有则变更,比create好用

删除一个yaml文件内资源,也可以是目录,目录内包含一组yaml文件

kubectl delete -f xxx.yaml    # 例如kubectl delete -f nginx.yaml

查看资源状态,比如有一组deployment内的pod没起来,一般用于pod调度过程出现的问题排查

kubectl describe pod pod名     # 先用kubectl get pod查看  有异常的复制pod名使用这个命令

查看pod日志,用于pod状态未就绪的故障排查

kubectl logs pod名     # 先用kubectl get pod查看  有异常的复制pod名使用这个命令

查看node节点或者是pod资源(cpu,内存资源)使用情况

kubectl top 组件名     # 例如kubectl top node  kubectl top pod

进入pod内部

kubectl exec -ti pod名 /bin/bash      # 先用kubectl get pod查看  有需要的复制pod名使用这个命令

参考文章:https://blog.csdn.net/BlogPan/article/details/133513076
内核升级引用文章:https://blog.csdn.net/qq_40954652/article/details/123201065?spm=1001.2014.3001.5501

Logo

K8S/Kubernetes社区为您提供最前沿的新闻资讯和知识内容

更多推荐