K8s基础2——部署单Master节点K8s集群、切换containerd容器运行时、基本命令

文章目录

  • 一、部署K8S集群方式
  • 二、kubeadm工具搭建K8s集群
    • 2.1 资源配置
    • 2.2 服务器规划
    • 2.3 搭建流程
      • 2.3.1 操作系统初始化
      • 2.3.2 安装docker容器引擎
      • 2.3.3 安装cri-dockerd
      • 2.3.4 安装kubeadm,kubelet和kubectl
      • 2.3.5 master节点初始化
      • 2.3.6 加入node节点
      • 2.3.7 部署网络组件(CNI)
      • 2.3.8 部署 Dashboard
      • 2.3.9 访问Dashboard
      • 2.3.10 效果测试
        • 2.3.10.1 创建pods
        • 2.3.10.2 查看容器日志
        • 2.3.10.3 查看yaml文件
        • 2.3.10.4 进入容器终端
        • 2.3.10.5 缩放资源
    • 2.4 使用Containerd容器引擎
      • 2.4.1 使用前提条件
      • 2.4.2 安装containerd
      • 2.4.3 修改containerd运行模式
      • 2.4.4 修改containerd运行参数
      • 2.4.5 配置kubelet使用containerd
      • 2.4.6 验证
      • 2.4.7 容器管理工具
        • 2.4.7.1 设置crictl连接containerd
        • 2.4.7.2 验证
        • 2.4.7.3 相关命令
  • 三、kubectl命令行管理工具
    • 3.1 基础命令
    • 3.2 部署命令
    • 3.3 集群管理命令
    • 3.4 调试命令
    • 3.5 高级命令
    • 3.6 设置命令
    • 3.6 其他命令
  • 四、异常处理
    • 4.1 其他节点无法使用kubectl命令
    • 4.2 命令行的补全

一、部署K8S集群方式

两种部署方式:

  1. kubeadm工具部署。Kubeadm 是一个K8s 部署工具,提供 kubeadm init 和kubeadm join,用于快速部署 Kubernetes集群。
    • kubeadm 工具功能:
      • kubeadm init:初始化一个 Master 节点。
      • kubeadm join:将工作节点加入集群。
      • kubeadm upgrade:升级 K8s 版本。
      • kubeadm token:管理 kubeadm join 使用的令牌。
      • kubeadm reset:清空 kubeadm init 或者 kubeadm join 对主机所做的任何更改。
      • kubeadm version:打印 kubeadm 版本。
      • kubeadm alpha:预览可用的新功能。
  2. 二进制包部署。从 github获取发行版的二进制包,手动依次部署每个组件组成Kubernetes 集群。可以先使用kubeadm工具部署,熟悉之后再进行二进制部署加深理解。

二、kubeadm工具搭建K8s集群

2.1 资源配置

注意事项:

  1. 服务器最好可以访问外网,会有从网上拉取镜像需求。若服务器不能上网,需提前下载对应镜像并导入节点。
节点 实验环境配置 测试环境配置 生产环境配置
master 2核CPU、2G内存、50G硬盘 2核CPU、4G内存、20G硬盘 8核CPU、16G内存、100G硬盘
node 2核CPU、2G内存、50G硬盘 4核CPU、8G内存、20G硬盘 16核CPU、64G内存、500G硬盘
软件环境 版本 备注
操作系统 CentOS Linux release 7.5.1804 (Core) CentOS 7.X系列版本都可,最好是最小化安装。
Docker 19-ce \
Kubernetes 1.25 \

2.2 服务器规划

IP 角色
192.168.130.145 K8S-master
192.168.130.146 K8s-node1
192.168.130.147 K8s-node2

K8s基础2——部署单Master节点K8s集群、切换containerd容器运行时、基本命令_第1张图片

2.3 搭建流程

2.3.1 操作系统初始化

  • 以下操作,所有服务器执行。

1.关闭所有服务器防火墙。

systemctl stop firewalld
systemctl disable firewalld

2.关闭所有服务器selinux。

#永久关闭,需重启服务器才能生效。
sed -i 's/enforcing/disabled/g' /etc/selinux/config   

#临时关闭,立即生效,重启服务器后还原配置。
setenforce 0

3.关闭所有服务器swap分区。

#永久关闭。
sed -ri 's/.*swap.*/#&/g' /etc/fstab

#临时关闭。
swapoff -a

4.根据规划设置主机名称。

hostnamectl set-hostname K8s-master
hostnamectl set-hostname K8s-node1
hostnamectl set-hostname K8s-node2

K8s基础2——部署单Master节点K8s集群、切换containerd容器运行时、基本命令_第2张图片
5.文件绑定解析。

cat >> /etc/hosts << EOF
192.168.130.145 k8s-master
192.168.130.146 k8s-node1
192.168.130.147 k8s-node2
EOF

6.将桥接的IPv4流量传递到iptables的链。

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

#重启生效。
sysctl --system

7.时间同步。

yum install ntpdate -y
ntpdate time.windows.com

2.3.2 安装docker容器引擎

  • K8s集群需要安装容器运行时,我这里使用的是docker作为容器引擎。
  • 其他主流容器引擎:
    • containerd:containerd最开始是在docker里面的,后面将docker进行解耦把containerd单独做成一个标准的CRI运行时,再往后就捐赠给了CNCF基金会交其维护,但docker一致是与containerd相兼容的。
    • cri-o、podman:都属于红帽(RedHat)项目,目前红帽主推podman。
  • 以下操作步骤,所有服务器执行。

1.安装docker环境。

wget https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo -O /etc/yum.repos.d/docker-ce.repo
yum -y install docker-ce
systemctl enable docker && systemctl start docker

2.配置加速器。

cat > /etc/docker/daemon.json << EOF
{
  "registry-mirrors": ["https://b9pmyelo.mirror.aliyuncs.com"]
}
EOF

3.重启查看。

systemctl restart docker
docker info

K8s基础2——部署单Master节点K8s集群、切换containerd容器运行时、基本命令_第3张图片

4.添加阿里的镜像源。

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

2.3.3 安装cri-dockerd

为什么要安装cri-dockerd插件?

  1. K8s在刚开源时没有自己的容器引擎,而当时docker非常火爆是容器的代表,所以就在kubelet的代码里集成了对接docker的代码——docker shim,所以1.24版本之前是默认使用docker,不需要安装cri-dockerd。
  2. K8s 1.24版本移除 docker-shim的代码,而 Docker Engine 默认又不支持CRI标准,因此二者默认无法再直接集成。为此,Mirantis 和 Docker 为了Docker Engine 提供一个能够支持到CRI规范的桥梁,就联合创建了cri-dockerd,从而能够让 Docker 作为K8s 容器引擎。
    K8s基础2——部署单Master节点K8s集群、切换containerd容器运行时、基本命令_第4张图片
    K8s基础2——部署单Master节点K8s集群、切换containerd容器运行时、基本命令_第5张图片

为什么要移除docker shim?

  • K8s核心代码优化。
  • Docker内部调用链比较复杂,多层封装和调用,导致性能降低、提升故障率、不易排查。
  • Docker还会在宿主机创建网络规则、存储卷,也带来了安全隐患

注意事项:

  • 以下操作步骤,所有服务器执行。

1.下载安装。

wget https://github.com/Mirantis/cri-dockerd/releases/download/v0.3.1/cri-dockerd-0.3.1-3.el7.x86_64.rpm
rpm -ivh cri-dockerd-0.3.1-3.el7.x86_64.rpm 

2.修改配置文件,重新读取。

vim  /usr/lib/systemd/system/cri-docker.service
#找到这行,添加路径。
ExecStart=/usr/bin/cri-dockerd --container-runtime-endpoint fd:// --pod-infra-container-image=registry.aliyuncs.com/google_containers/pause:3.7

systemctl daemon-reload

3.启动,并设置开机自启。

systemctl enable cri-docker && systemctl start cri-docker

2.3.4 安装kubeadm,kubelet和kubectl

  • 以下操作步骤,所有服务器执行。

1.安装三个工具,版本需要统一。

yum install -y kubelet-1.25.0 kubeadm-1.25.0 kubectl-1.25.0

2.设置开机自启,暂时不要启动。

systemctl enable kubelet

2.3.5 master节点初始化

1.master节点初始化。

参数释义:

  1. –apiserver-advertise-address 集群通告地址
  2. –image-repository 由于默认拉取镜像地址k8s.gcr.io国内无法访问,这里指定阿里云镜像仓库地址
  3. –kubernetes-version K8s版本,与上面安装的一致
  4. –service-cidr 集群内部虚拟网络,Pod统一访问入口
  5. –pod-network-cidr Pod网络,,与下面部署的CNI网络组件yaml中保持一致。
  6. –cri-socket 指定 cri-dockerd 接口,如果是 containerd 则使用–cri-socketunix:///run/containerd/containerd.sock

注意事项:

  1. 初始化完成后,最后会输出一个 join 命令,复制下来,下面用。
kubeadm init \
  --apiserver-advertise-address=192.168.130.145 \
  --image-repository registry.aliyuncs.com/google_containers \
  --kubernetes-version v1.25.0 \
  --service-cidr=10.96.0.0/12 \
  --pod-network-cidr=10.244.0.0/16 \
  --cri-socket=unix:///var/run/cri-dockerd.sock \
  --ignore-preflight-errors=all

K8s基础2——部署单Master节点K8s集群、切换containerd容器运行时、基本命令_第6张图片
K8s基础2——部署单Master节点K8s集群、切换containerd容器运行时、基本命令_第7张图片

2.修改kubectl使用的连接k8s认证文件到默认路径,不然会报错。

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

3.查看工作节点,此时就可以使用kubectl命令了。

[root@k8s-master yum.repos.d]# kubectl get nodes

在这里插入图片描述

2.3.6 加入node节点

注意事项:

  • 向集群添加新节点,将前面执行kubeadm init 命令时最后输出的kubeadm join 命令复制过来,并手动加上参数–cri-socket=unix:///var/run/cri-dockerd.sock,再在命令行执行。
  • 默认token有效期为24小时,过期后,此token就不可用。这时就需要重新创建token,可以直接使用命令快捷生成:kubeadm token create --print-join-command

1.依次在所有node节点上执行加入集群命令。

[root@k8s-node1 yum.repos.d]# kubeadm join 192.168.130.145:6443 --token dxc3x4.ggvxomofqelw1g0l --discovery-token-ca-cert-hash sha256:e5b0a56b7c5108800a15b94bbdbde8ea47dc4c2e7c04973d34bf2280d65e80f1 --cri-socket=unix:///var/run/cri-dockerd.sock

[root@k8s-node2 yum.repos.d]# kubeadm join 192.168.130.145:6443 --token dxc3x4.ggvxomofqelw1g0l --discovery-token-ca-cert-hash sha256:e5b0a56b7c5108800a15b94bbdbde8ea47dc4c2e7c04973d34bf2280d65e80f1 --cri-socket=unix:///var/run/cri-dockerd.sock

K8s基础2——部署单Master节点K8s集群、切换containerd容器运行时、基本命令_第8张图片
2.查看集群状态,显示有新加入的2个节点。
K8s基础2——部署单Master节点K8s集群、切换containerd容器运行时、基本命令_第9张图片

2.3.7 部署网络组件(CNI)

不同docker主机容器访问存在的问题 :

  1. 存在两容器分配的ip相同问题,因为docker主机有各自对立的网络管理机制。
  2. 存在容器发送的数据包不知道要发送到那个节点问题。即使两个容器ip手动设置成不同,那容器1和容器2的网络也是不通的,是因为容器1发送的数据包不知道要送往哪个节点。
  3. 存在docker主机之间的通信问题。即使容器1知道要送往哪个节点,也只能通过手动方式去实现,比如路由表、iptables转发等等。
  4. 以上三个问题都是很耗时耗力的,所以需要引入网络组件来解决这些问题。

部署网络组件的原因?

  • 为打通Pod到Pod之间网络、Node与Pod之间网络,从而集群中数据包可以任意传输,形成了一个扁平化网络。

主流网络组件:

  1. Flannel
  2. Calico

注意事项:

  • 若导入yaml文件后一直处于pending状态,大概率是网络较差,可以手动下载镜像,再apply -f。
  • 以下操作在master节点执行。

1.下载文件到本地,文件下载地址。

[root@k8s-master ~]# curl https://raw.githubusercontent.com/projectcalico/calico/v3.25.1/manifests/calico.yaml -O

2.修改Calico配置文件里的定义Pod网络(CALICO_IPV4POOL_CIDR),与前面kubeadm init的 --pod-network-cidr指定一致。

[root@k8s-master ~]# vim calico.yaml
......
            - name: CALICO_IPV4POOL_CIDR
              value: "10.244.0.0/16"

在这里插入图片描述
3.将Calico文件部署到k8s集群中。

[root@k8s-master ~]# kubectl apply -f calico.yaml

4.查看Calico容器网络状态,拉取镜像需要等两分钟,有点慢。

[root@k8s-master ~]# kubectl get pods -n kube-system

K8s基础2——部署单Master节点K8s集群、切换containerd容器运行时、基本命令_第10张图片
K8s基础2——部署单Master节点K8s集群、切换containerd容器运行时、基本命令_第11张图片

2.3.8 部署 Dashboard

  • Dashboard是官方提供的一个UI,可用于基本管理K8s资源。
  • 以下操作在master节点执行。

1.下载yaml文件。

[root@k8s-master ~]# wget https://raw.githubusercontent.com/kubernetes/dashboard/v2.4.0/aio/deploy/recommended.yaml

2.修改yaml文件内容。默认Dashboard只能集群内部访问,修改Service为NodePort类型,暴露到外部。

......
kind: Service
apiVersion: v1
metadata:
  labels:
    k8s-app: kubernetes-dashboard
  name: kubernetes-dashboard
  namespace: kubernetes-dashboard
spec:
  ports:
    - port: 443
      targetPort: 8443
      nodePort: 30001    ##添加此行。
  selector:
    k8s-app: kubernetes-dashboard
  type: NodePort   ##添加此行。
......

K8s基础2——部署单Master节点K8s集群、切换containerd容器运行时、基本命令_第12张图片
3.加载这个yaml文件,并查看容器运行状态。

[root@k8s-master ~]# kubectl apply -f recommended.yaml
[root@k8s-master ~]# kubectl get pods -n kubernetes-dashboard

在这里插入图片描述

2.3.9 访问Dashboard

1.访问k8s任意节点IP:30001,会发现被拦截了,这是因为chrome认为该网站不安全,不让访问,我们在当前页面随意处输入“thisisunsafe”回车即可解决,相当于了解了风险依然访问,之后就可以访问网页,但那之后再出问题也就没有责任了。
K8s基础2——部署单Master节点K8s集群、切换containerd容器运行时、基本命令_第13张图片

2.此时需要我们输入Token登录。

K8s基础2——部署单Master节点K8s集群、切换containerd容器运行时、基本命令_第14张图片
3.获取Token。创建service account并绑定默认cluster-admin管理员集群角色。

[root@k8s-master ~]# kubectl create serviceaccount dashboard-admin -n kubernetes-dashboard

[root@k8s-master ~]# kubectl create clusterrolebinding dashboard-admin --clusterrole=cluster-admin --serviceaccount=kubernetes-dashboard:dashboard-admin

[root@k8s-master ~]# kubectl create token dashboard-admin -n kubernetes-dashboard

K8s基础2——部署单Master节点K8s集群、切换containerd容器运行时、基本命令_第15张图片
4.粘贴Token,登录。
K8s基础2——部署单Master节点K8s集群、切换containerd容器运行时、基本命令_第16张图片
K8s基础2——部署单Master节点K8s集群、切换containerd容器运行时、基本命令_第17张图片

2.3.10 效果测试

2.3.10.1 创建pods

1.创建一个pods。
K8s基础2——部署单Master节点K8s集群、切换containerd容器运行时、基本命令_第18张图片
2.查看Pods。
K8s基础2——部署单Master节点K8s集群、切换containerd容器运行时、基本命令_第19张图片
3.也可以在终端上查看pods运行状态。
K8s基础2——部署单Master节点K8s集群、切换containerd容器运行时、基本命令_第20张图片

2.3.10.2 查看容器日志

K8s基础2——部署单Master节点K8s集群、切换containerd容器运行时、基本命令_第21张图片
K8s基础2——部署单Master节点K8s集群、切换containerd容器运行时、基本命令_第22张图片

2.3.10.3 查看yaml文件

K8s基础2——部署单Master节点K8s集群、切换containerd容器运行时、基本命令_第23张图片

K8s基础2——部署单Master节点K8s集群、切换containerd容器运行时、基本命令_第24张图片

2.3.10.4 进入容器终端

K8s基础2——部署单Master节点K8s集群、切换containerd容器运行时、基本命令_第25张图片

K8s基础2——部署单Master节点K8s集群、切换containerd容器运行时、基本命令_第26张图片

2.3.10.5 缩放资源

1.缩放。
K8s基础2——部署单Master节点K8s集群、切换containerd容器运行时、基本命令_第27张图片
2.查看Pods。
K8s基础2——部署单Master节点K8s集群、切换containerd容器运行时、基本命令_第28张图片
K8s基础2——部署单Master节点K8s集群、切换containerd容器运行时、基本命令_第29张图片

2.4 使用Containerd容器引擎

注意事项:

  1. containerd是一个主流的容器引擎,与Docker相兼容,相比Docker轻量很多,目前较为成熟。
  2. containerd是独立的运行时,一个集群可以有多个运行时,比如docker和containerd可以同时存在,但一般就是用一个,不建立交叉使用。
  3. 若是docker切换成containerd,则需要给一个集群所有节点都切换,以下操作只切换了master节点,只做示范。
  4. 不同运行时的镜像是通用的。

2.4.1 使用前提条件

1.启用两个内核模块。操作系统默认是有的,若没有,则执行代码框的内容进行添加启用。

cat <

K8s基础2——部署单Master节点K8s集群、切换containerd容器运行时、基本命令_第30张图片

2.设置sysctl 参数。若是第一次直接使用containerd,则需要把下面几个参数都要添加进去;若是docker切换成containerd,按照前文的操作,前两个参数已经添加,只需要确定添加最后一个参数。

cat <

2.4.2 安装containerd

1.安装。若是直接使用containerd,需要执行此步骤进行安装;若是由docker更换成containerd,则直接进行第二步,因为在前文安装docker时,已经把contained安装了。

yum install -y yum-utils device-mapper-persistent-data lvm2
yum-config-manager \
    --add-repo \
    https://download.docker.com/linux/centos/docker-ce.repo
yum install -y containerd.io

K8s基础2——部署单Master节点K8s集群、切换containerd容器运行时、基本命令_第31张图片

2.创建配置文件目录。

#若是按照前文操作来的,已经生成该目录,且存在配置文件,不需在创建,只用执行第二个命令;若不是按照前文来操作的,需创建。
mkdir -p /etc/containerd  

K8s基础2——部署单Master节点K8s集群、切换containerd容器运行时、基本命令_第32张图片

2.4.3 修改containerd运行模式

1.修改containerd运行模式,以独立模式运行,也就是不需要安装docker就可以运行。

  • 修改前

K8s基础2——部署单Master节点K8s集群、切换containerd容器运行时、基本命令_第33张图片

  • 修改命令
containerd config default > /etc/containerd/config.toml
  • 修改后

K8s基础2——部署单Master节点K8s集群、切换containerd容器运行时、基本命令_第34张图片

2.4.4 修改containerd运行参数

修改containerd运行参数:

  • pause镜像设置过阿里云镜像仓库地址。
  • 拉取Docker Hub镜像配置加速地址设置为阿里云镜像仓库地址。

1.修改一

vi /etc/containerd/config.toml
......
    sandbox_image = "registry.aliyuncs.com/google_containers/pause:3.2"  

K8s基础2——部署单Master节点K8s集群、切换containerd容器运行时、基本命令_第35张图片

2.修改二

vi /etc/containerd/config.toml
......
	[plugins."io.containerd.grpc.v1.cri".registry.mirrors]

#添加这两行。     
    [plugins."io.containerd.grpc.v1.cri".registry.mirrors."docker.io"]
    endpoint = ["https://b9pmyelo.mirror.aliyuncs.com"]

在这里插入图片描述
3.重新读取。

systemctl restart containerd

2.4.5 配置kubelet使用containerd

1.查看文件路径。
在这里插入图片描述
2.修改配置文件里的路径,并重启服务。

[root@k8s-master containerd]# vim /var/lib/kubelet/kubeadm-flags.env

[root@k8s-master containerd]# systemctl  restart kubelet

在这里插入图片描述

2.4.6 验证

1.此时查看master节点已经采用containerd容器引擎。

[root@k8s-master containerd]# kubectl get node -o wide

在这里插入图片描述

2.此时关闭cri-docker和docker不影响containerd的运行使用。

K8s基础2——部署单Master节点K8s集群、切换containerd容器运行时、基本命令_第36张图片

2.4.7 容器管理工具

  • containerd提供了ctr命令行工具管理容器,但功能比较简单,所以一般会用crictl工具检查和调试容器。
  • 项目地址:https://github.com/kubernetes-sigs/cri-tools/
2.4.7.1 设置crictl连接containerd

1.不设置会报错。

在这里插入图片描述

2.指定使用containerd容器运行时的API接口。

[root@k8s-master containerd]# vim /etc/crictl.yaml

runtime-endpoint: unix:///run/containerd/containerd.sock  ##指定容器运行时的文件接口。
image-endpoint: unix:///run/containerd/containerd.sock    ##指定容器运行时管理镜像的接口。
timeout: 10   ##指定容器运行时的连接超时时间。
debug: false   ##是否输出debug信息。
2.4.7.2 验证

1.此时就可以正常使用crictl命令。
K8s基础2——部署单Master节点K8s集群、切换containerd容器运行时、基本命令_第37张图片

2.4.7.3 相关命令
镜像相关功能 docker containerd(crictl)
显示本地镜像列表 docker images crictl images
下载镜像 docker pull crictl pull
上传镜像 docker push 无,例如buildk
删除本地镜像 docker rmi crictl rmi
查看镜像详情 docker inspect IMAGE-ID crictl inspecti IMAGE-ID
容器相关功能 Docker containerd(crictl)
显示容器列表 docker ps crictl ps
创建容器 docker create crictl create
启动容器 docker start crictl start
停止容器 docker stop crictl stop
删除容器 docker rm crictl rm
查看容器详情 docker inspect crictl inspect
附加容器 docker attach crictl attach
执行命令 docker exec crictl exec
查看日志 docker logs crictl logs
查看容器资源 docker stats crictl stats
POD 相关功能 Docker containerd(crictl)
显示 POD 列表 crictl pods
查看 POD 详情 crictl inspectp
运行 POD crictl runp
停止 POD crictl stopp

三、kubectl命令行管理工具

3.1 基础命令

命令 释义
create 通过文件名或标准输入创建资源
expose 为Deployment,Pod创建Service
run 在集群中运行一个特定的镜像
set 在对象上设置特定的功能
explain 文档参考资料
get 显示一个或多个资源
edit 使用系统编辑器编辑一个资源。
delete 通过文件名、标准输入、资源名称或标签选择器来删除资源。

3.2 部署命令

命令 释义
rollout 管理Deployment,Daemonset资源的发布(例如状态、发布记录、回滚等)
scale 对Deployment、ReplicaSet、RC或Job资源扩容或缩容Pod数量
autoscale 为Deploy, RS, RC配置自动伸缩规则(依赖metrics-server和hpa)

3.3 集群管理命令

命令 释义
certificate 修改证书资源
cluster-info 显示集群信息
top 查看资源利用率(依赖metrics-server)
cordon 标记节点不可调度
uncordon 标记节点可调度
drain 驱逐节点上的应用,准备下线维护
taint 修改节点taint标记

3.4 调试命令

命令 释义
describe 显示资源详细信息
logs 查看Pod内容器日志,如果Pod有多个容器,-c参数指定容器名称
attach 附加到Pod内的一个容器
exec 在容器内执行命令
port-forward 为Pod创建本地端口映射
proxy 为Kubernetes API server创建代理
cp 拷贝文件或目录到容器中,或者从容器内向外拷贝
auth 检查授权
debug 创建调试会话,用于排查工作负载和工作节点故障

3.5 高级命令

命令 释义
diff 将在线配置与指定的文件对比
apply 从文件名或标准输入对资源创建/更新
patch 使用补丁方式修改、更新资源的某些字段
replace 从文件名或标准输入替换一个资源
kustomize 从目录或者URL构建kustomization目标

3.6 设置命令

命令 释义
label 给资源设置、更新标签
annotate 给资源设置、更新注解
completion kubectl 自动补全
1、安装依赖包bash-completion。
2、设置在bash中自动补全:source <(kubectl completion bash)

3.6 其他命令

命令 释义
api-resources 查看所有资源
api-versions 打印受支持的API版本
config 修改kubeconfig文件(用于访问API,比如配置认证信息)
version 查看kubectl和k8s版本

四、异常处理

4.1 其他节点无法使用kubectl命令

  • 问题:其他工作节点无法使用kubectl命令。

在这里插入图片描述
1.现在node节点上的/root目录下创建.kube目录。

[root@k8s-node1 ~]# mkdir .kube
[root@k8s-node2 ~]# mkdir .kube

2.把master节点上的.kube/config文件复制到其他工作节点同目录下。

[root@k8s-master ~]#  scp .kube/config [email protected]:/root/.kube/
[root@k8s-master ~]#  scp .kube/config [email protected]:/root/.kube/

3.此时node节点就可以使用kubectl命令了。
K8s基础2——部署单Master节点K8s集群、切换containerd容器运行时、基本命令_第38张图片

4.2 命令行的补全

  • kubectl命令默认不支持补全功能,我们可以把补全相关的内容写入到bash中,这里就需要linux中的bash补全包,其他工具的补全命令都需要这个命令。

1.安装依赖包,linux的mini版本是没有装的。

[root@k8s-master ~]# yum install -y bash-completion

[root@k8s-master ~]# bash

2.在 bash 中设置当前 shell 的自动补全,随后命令就可以补全,但重启机器就会失效。

[root@k8s-master ~]# source <(kubectl completion bash)

3.开机自启,永久生效。

[root@k8s-master ~]# echo "source <(kubectl completion bash)" >> ~/.bashrc
[root@k8s-master ~]# source .bashrc 

你可能感兴趣的:(K8s,kubernetes,云原生,linux)