K8S本地环境搭建

笔记出自马士兵 【架构师高级技能kubernetes入门到精通】整理

1.环境准备命令

1.1设置主机名与时区
timedatectl set-timezone Asia/Shanghai  #都要执行
hostnamectl set-hostname node1    #133执行
hostnamectl set-hostname node2    #137执行
1.2添加hosts网络主机配置,三台虚拟机都要设置

vim /etc/hosts

192.168.163.132 master
192.168.163.133 node1
192.168.163.137 node2

vim /etc/hosts

192.168.56.100 master
192.168.56.101 node1
192.168.56.102 node2
1.3关闭防火墙,三台虚拟机都要设置,生产环境跳过这一步
sed -i 's/SELINUX=enforcing/SELINUX=disabled/g' /etc/selinux/config
setenforce 0
systemctl disable firewalld
systemctl stop firewalld

2. 安装Kubeadmin加载K8S镜像

2.1将镜像包上传至服务器每个节点
mkdir /usr/local/k8s-install
cd /usr/local/k8s-install
# XFTP上传安装文件
2.2按每个Centos上安装Docker
tar -zxvf docker-ce-18.09.tar.gz
cd docker 
yum localinstall -y *.rpm
systemctl start docker
systemctl enable docker
2.3确保从cgroups均在同一个从groupfs
#cgroups是control groups的简称,它为Linux内核提供了一种任务聚集和划分的机制,通过一组参数集合将一些任务组织成一个或多个子系统。   
#cgroups是实现IaaS虚拟化(kvm、lxc等),PaaS容器沙箱(Docker等)的资源管理控制部分的底层基础。
#子系统是根据cgroup对任务的划分功能将任务按照一种指定的属性划分成的一个组,主要用来实现资源的控制。
#在cgroup中,划分成的任务组以层次结构的形式组织,多个子系统形成一个数据结构中类似多根树的结构。cgroup包含了多个孤立的子系统,每一个子系统代表单一的资源

docker info | grep cgroup 

# 如果不是groupfs,执行下列语句

cat << EOF > /etc/docker/daemon.json
{
  "exec-opts": ["native.cgroupdriver=cgroupfs"]
}
EOF
systemctl daemon-reload && systemctl restart docker
2.4安装kubeadm
# ubeadm是集群部署工具

cd /usr/local/k8s-install/kubernetes-1.14
tar -zxvf kube114-rpm.tar.gz
cd kube114-rpm
yum localinstall -y *.rpm
2.5关闭交换区
swapoff -a
vi /etc/fstab 
#swap一行注释
2.6配置网桥
cat <<EOF >  /etc/sysctl.d/k8s.conf
net.bridge.bridge-nf-call-ip6tables = 1
net.bridge.bridge-nf-call-iptables = 1
EOF
sysctl --system
2.7通过镜像安装k8s
cd /usr/local/k8s-install/kubernetes-1.14
docker load -i k8s-114-images.tar.gz
docker load -i flannel-dashboard.tar.gz

3.利用Kubeadm部署K8S集群

3.1master主服务器配置
kubeadm init --kubernetes-version=v1.14.1 --pod-network-cidr=10.244.0.0/16

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

kubectl get nodes
#查看存在问题的pod
kubectl get pod --all-namespaces
#设置全局变量
#安装flannel网络组件
kubectl create -f kube-flannel.yml

在这里插入图片描述

3.2加入NODE节点
kubeadm join 192.168.4.130:6443 --token 911xit.xkp2gfxbvf5wuqz7 \
    --discovery-token-ca-cert-hash sha256:23db3094dc9ae1335b25692717c40e24b1041975f6a43da9f43568f8d0dbac72

# 如果忘记
# 在master 上执行kubeadm token list 查看 ,在node上运行
kubeadm join 192.168.163.132:6443 --token aoeout.9k0ybvrfy09q1jf6 --discovery-token-unsafe-skip-ca-verification

# kubeadm join 10.0.2.15:6443 --token 6sn3eb.fhnypx6mzzaory4v \
    # --discovery-token-ca-cert-hash sha256:569c583dc21d1bdd9e16c63a41e1f1c2c6a4b027af9e73770ebceff0ed3f6a25
# 查看节点状态
kubectl get nodes
3.3Master开启仪表盘
kubectl apply -f kubernetes-dashboard.yaml
kubectl apply -f admin-role.yaml
kubectl apply -f kubernetes-dashboard-admin.rbac.yaml
kubectl -n kube-system get svc
# http://192.168.163.132:32000 访问
3.4启动节点命令 | 避免k8s 开机不自启
# 启动节点的K8S服务
systemctl start kubelet
# 设置开机启动
systemctl enable kubelet

4.k8s常用命令学习

4.1 架构图

在这里插入图片描述

在这里插入图片描述

4.1.1 POD(豆荚)
  • POD是”容器”的容器,可以包含多个”Container”

  • POD是K8S最小可部署单元,一个POD就是一个进程

  • POD内部容器网络互通,每个POD都有独立虚拟IP

  • POD都是部署完整的应用或模块

4.1.2 Pause容器

在这里插入图片描述

4.1.3 SERVICE(服务)

在这里插入图片描述

4.1.1 POD(豆荚)
  • POD是”容器”的容器,可以包含多个”Container”

  • POD是K8S最小可部署单元,一个POD就是一个进程

  • POD内部容器网络互通,每个POD都有独立虚拟IP

  • POD都是部署完整的应用或模块

4.1.2 Pause容器

在这里插入图片描述

4.1.3 SERVICE(服务)

在这里插入图片描述

4.2 kubeadm/kubelet/kubectl区别
  • kubeadm是kubernetes集群快速构建工具

  • kubelet运行在所有节点上,负责启动POD和容器,以系统服务形式出现

  • kubectl:kubectl是kubenetes命令行工具,提供指令

4.3部署相关的指令
  kubectl create -f 部署yml文件 #创建部署
  
  kubectl apply -f 部署yml文件 #更新部署配置
  
  kubectl get pod [-o wide] #查看已部署pod
  
  kubectl describe pod pod名称 #查看Pod详细信息
  
  kubectl logs [-f] pod名称 #查看pod输出日志
4.4 K8S部署调整命令
# 更新集群配置
kubectl apply -f yml文件路径
# 删除部署(Deployment)|服务(Service)
kubectl delete deployment|service 部署|服务名称

4.5 K8S运维命令
# 查看指定名称空间的pods
kubectl get pods -n kube-system 
# 查看所有名称空间的pods
kubectl get pods -all-namespace 
# 查看master上的节点信息
kubectl get nodes
# 监控pod进度 打印详细信息
watch kubectl get pod -n kube-system -o wide 
# 获取所有的资源
kubectl get all
# 获取所有 详细部署信息
kubectl get all -o wide


4.5 K8S部署入门案例
4.5.1 nginx

第一步:在master 节点上创建一个deployment

kubectl create deployment nginx --image=nginx

效果如下,可以看到一个叫nginx的deployment创建成功了。

root@ubuntu:/home/cong# kubectl create deployment nginx --image=nginxdeployment.apps/nginx created root@ubuntu:/home/cong# kubectl get deploymentsNAME      DESIRED   CURRENT   UP-TO-DATE   AVAILABLE   AGEnginx     1         1         1            1           11m

第二步:创建一个service

kubectl create service nodeport nginx --tcp 80:80

效果如下,可以看到一个叫nginx的service创建成功了,这里kubectl get svc是kubectl get services的简写。

root@ubuntu:/home/cong# kubectl create service nodeport nginx --tcp 80:80service/nginx created 
root@ubuntu:/home/cong# kubectl get svc
NAME         TYPE        CLUSTER-IP       EXTERNAL-IP   PORT(S)        AGEkubernetes   ClusterIP   10.96.0.1        <none>        443/TCP        3dnginx        NodePort    10.107.237.157   <none>        80:30601/TCP   11s

在slave节点上执行下面的命令验证一下nginx有没有部署成功。

note1节点名称

curl localhost:30601 或者 curl note1:30601

效果如下:

root@ubuntu:/home/cong# curl localhost:30601
<!DOCTYPE html><html><head><title>Welcome to nginx!</title><style>    body {        width: 35em;        margin: 0 auto;        font-family: Tahoma, Verdana, Arial, sans-serif;    }</style></head><body><h1>Welcome to nginx!</h1><p>If you see this page, the nginx web server is successfully installed andworking. Further configuration is required.</p> <p>For online documentation and support please refer to<a href="http://nginx.org/">nginx.org</a>.<br/>Commercial support is available at<a href="http://nginx.com/">nginx.com</a>.</p> <p><em>Thank you for using nginx.</em></p></body></html>

用浏览器打开试试,nginx的首页显示出来了。

img

简单吧,是不是信心大增了?!

为了练习更多复杂的命令,我们将上面建好的deployments/nginx, services/nginx 删除先,命令如下:

root@ubuntu:/home/cong# kubectl delete deployments/nginx services/nginxdeployment.extensions "nginx" deletedservice "nginx" deleted

好了,你应用程序部署的处女作就完美结束了

4.5.2 tomcat
# 在主节点上部署一个tomcat
kubectl create deployment tomcat6 --image=tomcat:6.0.53-jre8
# 获取所有的资源
kubectl get all
# 查看部署信息
kubectl get all -o wide
# 删除部署信息 <根据实际情况而定>
kubectl delete deployment.apps/tomcat6
[root@master test]# kubectl get all
NAME                           READY   STATUS              RESTARTS   AGE
pod/tomcat6-7459c6cbcd-hfvhs   0/1     ContainerCreating   0          43m

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

NAME                      READY   UP-TO-DATE   AVAILABLE   AGE
deployment.apps/tomcat6   0/1     1            0           13h

NAME                                 DESIRED   CURRENT   READY   AGE
replicaset.apps/tomcat6-7459c6cbcd   1         1         0       13h
[root@master test]# kubectl delete deployment.apps/tomcat6
deployment.apps "tomcat6" deleted
[root@master test]# kubectl get all
NAME                 TYPE        CLUSTER-IP   EXTERNAL-IP   PORT(S)   AGE
service/kubernetes   ClusterIP   10.96.0.1    <none>        443/TCP   19h
4.6 k8s yaml编写

参看地址

4.6.1必需字段

在想要创建的 Kubernetes 对象对应的 .yaml 文件中,需要配置如下的字段:

  • apiVersion - 创建该对象所使用的 Kubernetes API 的版本
  • kind - 想要创建的对象的类型
  • metadata - 帮助识别对象唯一性的数据,包括一个 name 字符串、UID 和可选的 namespace

也需要提供对象的 spec 字段。对象 spec 的精确格式对每个 Kubernetes 对象来说是不同的,包含了特定于该对象的嵌套字段。Kubernetes API 参考能够帮助我们找到任何我们想创建的对象的 spec 格式。

apiVersion: apps/v1beta1
kind: Deployment
metadata:
  name: nginx-deployment
spec:
  replicas: 3
  template:
    metadata:
      labels:
        app: nginx
    spec:
      containers:
      - name: nginx
        image: nginx:1.7.9
        ports:
        - containerPort: 80
4.6.2 kind 中定义yaml类型

我将它们简单的分类为以下几种资源对象:

类别名称
资源对象Pod、ReplicaSet、ReplicationController、Deployment、StatefulSet、DaemonSet、Job、CronJob、HorizontalPodAutoscaling、Node、Namespace、Service、Ingress、Label、CustomResourceDefinition
存储对象Volume、PersistentVolume、Secret、ConfigMap
策略对象SecurityContext、ResourceQuota、LimitRange
身份对象ServiceAccount、Role、ClusterRole
4.6.3 项目部署较为合理的方案

项目部署流程

  1. 定义一个命名空间进行资源之间的隔离

    创建pxc namespace

    kubectl create namespace pxc

    kubectl config set-context $(kubectl config current-context) -n pxc

  2. 项目资源准备

    1. 将准备好jar openjdk 或 war 将打包好 环境导入docker images
    2. 配置 yaml 文件进行数据导入
apiVersion: extensions/v1beta1
kind: Deployment
metadata: 
  name: tomcat-deploy
spec:
  replicas: 2 
  template: 
    metadata:
      labels:
        app: tomcat-cluster
    spec:
      # 目录挂载
      volumes: 
      - name: web-app
        hostPath:
          path: /mnt
      containers:
      # 容器名称
      - name: tomcat-cluster
        image: tomcat:latest
        # 资源限定
        resources:
          requests:
          # 最小容器启用要求 
          # 说明:必须满足以下要求才能创建容器
            cpu: 0.5
            memory: 200Mi
          # 最大容器启用要求 最多能使用一核cpu 512mb 内存
          limits:
            cpu: 1
            memory: 512Mi
        ports:
        # containerPort 容器内暴露的端口
        - containerPort: 8080
        # 容器内目录挂载
        volumeMounts:
        - name: web-app
          mountPath: /usr/local/tomcat/webapps
---

apiVersion: v1
kind: Service
metadata:
  name: beiqin-db-service
  labels:
    app: beiqin-db-service
spec:
# 开外网访问模式 开启两个选项 type nodePort
# type: NodePort
  selector:
  # Deployment 名称 
    app: beiqin-db-deploy
  ports:
   # mast节点暴露的端口
  - port: 3306
    targetPort: 3306
    # node 暴露的端口自己暴露的端口
    # 存在范围限制 30001 - 32500
    nodePort: 30001
4.6.4 项目部署实战
# 部署jar
# 部署 
kubectl apply -f beiqin-db-service.yml
# 使用k8s 进入指定容器
kubectl  exec -it beiqin-db-deploy-64ff44784d-f9c97 /bin/bash
# 获取指定pod id
kubectl get pod 
4.7 k8s 端口转发
# 使用rinetd 进行端口转发
cd /usr/local
wget http://www.boutell.com/rinetd/http/rinetd.tar.gz
tar -zxvf rinetd.tar.gz
cd rinetd
sed -i 's/65536/65535/g' rinetd.c
mkdir -p /usr/man/
yum install -y gcc
make && make install
# 添加端口转发
vi /etc/rinetd.conf
# 安装net-tools
yum install net-tools
rinetd -c /etc/rinetd.conf
# 查看暴露端口
netstat -tulpn
4.8 腾讯云文档
kubectl常用示例
查看类命令
 # 获取节点和服务版本信息
 kubectl get nodes
 # 获取节点和服务版本信息,并查看附加信息
 kubectl get nodes -o wide
 
 # 获取pod信息,默认是default名称空间
 kubectl get pod
 # 获取pod信息,默认是default名称空间,并查看附加信息【如:pod的IP及在哪个节点运行】
 kubectl get pod -o wide
 # 获取指定名称空间的pod
 kubectl get pod -n kube-system
 # 获取指定名称空间中的指定pod
 kubectl get pod -n kube-system podName
 # 获取所有名称空间的pod
 kubectl get pod -A 
 # 查看pod的详细信息,以yaml格式或json格式显示
 kubectl get pods -o yaml
 kubectl get pods -o json
 
 # 查看pod的标签信息
 kubectl get pod -A --show-labels 
 # 根据Selector(label query)来查询pod
 kubectl get pod -A --selector="k8s-app=kube-dns"
 
 # 查看运行pod的环境变量
 kubectl exec podName env
 # 查看指定pod的日志
 kubectl logs -f --tail 500 -n kube-system kube-apiserver-k8s-master
 
 # 查看所有名称空间的service信息
 kubectl get svc -A
 # 查看指定名称空间的service信息
 kubectl get svc -n kube-system
 
 # 查看componentstatuses信息
 kubectl get cs
 # 查看所有configmaps信息
 kubectl get cm -A
 # 查看所有serviceaccounts信息
 kubectl get sa -A
 # 查看所有daemonsets信息
 kubectl get ds -A
 # 查看所有deployments信息
 kubectl get deploy -A
 # 查看所有replicasets信息
 kubectl get rs -A
 # 查看所有statefulsets信息
 kubectl get sts -A
 # 查看所有jobs信息
 kubectl get jobs -A
 # 查看所有ingresses信息
 kubectl get ing -A
 # 查看有哪些名称空间
 kubectl get ns
 
 # 查看pod的描述信息
 kubectl describe pod podName
 kubectl describe pod -n kube-system kube-apiserver-k8s-master  
 # 查看指定名称空间中指定deploy的描述信息
 kubectl describe deploy -n kube-system coredns
 
 # 查看node或pod的资源使用情况
 # 需要heapster 或metrics-server支持
 kubectl top node
 kubectl top pod 
 
 # 查看集群信息
 kubectl cluster-info   或  kubectl cluster-info dump
 # 查看各组件信息【172.16.1.110为master机器】
 kubectl -s https://172.16.1.110:6443 get componentstatuses
操作类命令
 # 创建资源
 kubectl create -f xxx.yaml
 # 应用资源
 kubectl apply -f xxx.yaml
 # 应用资源,该目录下的所有 .yaml, .yml, 或 .json 文件都会被使用
 kubectl apply -f <directory>
 # 创建test名称空间
 kubectl create namespace test
 
 # 删除资源
 kubectl delete -f xxx.yaml
 kubectl delete -f <directory>
 # 删除指定的pod
 kubectl delete pod podName
 # 删除指定名称空间的指定pod
 kubectl delete pod -n test podName
 # 删除其他资源
 kubectl delete svc svcName
 kubectl delete deploy deployName
 kubectl delete ns nsName
 # 强制删除
 kubectl delete pod podName -n nsName --grace-period=0 --force
 kubectl delete pod podName -n nsName --grace-period=1
 kubectl delete pod podName -n nsName --now
 
 # 编辑资源
 kubectl edit pod podName
进阶命令操作
 # kubectl exec:进入pod启动的容器
 kubectl exec -it podName -n nsName /bin/sh    #进入容器
 kubectl exec -it podName -n nsName /bin/bash  #进入容器
 
 # kubectl label:添加label值
 kubectl label nodes k8s-node01 zone=north  #为指定节点添加标签 
 kubectl label nodes k8s-node01 zone-       #为指定节点删除标签
 kubectl label pod podName -n nsName role-name=test    #为指定pod添加标签
 kubectl label pod podName -n nsName role-name=dev --overwrite  #修改lable标签值
 kubectl label pod podName -n nsName role-name-        #删除lable标签
 
 # kubectl滚动升级; 通过 kubectl apply -f myapp-deployment-v1.yaml 启动deploy
 kubectl apply -f myapp-deployment-v2.yaml     #通过配置文件滚动升级
 kubectl set image deploy/myapp-deployment myapp="registry.cn-beijing.aliyuncs.com/google_registry/myapp:v3"   #通过命令滚动升级
 kubectl rollout undo deploy/myapp-deployment 或者 kubectl rollout undo deploy myapp-deployment    #pod回滚到前一个版本
 kubectl rollout undo deploy/myapp-deployment --to-revision=2  #回滚到指定历史版本
 
 # kubectl scale:动态伸缩
 kubectl scale deploy myapp-deployment --replicas=5  # 动态伸缩
 kubectl scale --replicas=8 -f myapp-deployment-v2.yaml  #动态伸缩【根据资源类型和名称伸缩,其他配置「如:镜像版本不同」不生效】

上面滚动更新和动态伸缩涉及的deploy的yaml文件

 [root@k8s-master deploy]# cat myapp-deployment-v1.yaml 
 apiVersion: apps/v1
 kind: Deployment
 metadata:
   name: myapp-deployment
   labels:
     app: myapp
 spec:
   replicas: 10
   # 重点关注该字段
   selector:
     matchLabels:
       app: myapp
   template:
     metadata:
       labels:
         app: myapp
     spec:
       containers:
       - name: myapp
         image: registry.cn-beijing.aliyuncs.com/google_registry/myapp:v1
         ports:
         - containerPort: 80
 
 [root@k8s-master deploy]# 
 [root@k8s-master deploy]# cat myapp-deployment-v2.yaml 
 apiVersion: apps/v1
 kind: Deployment
 metadata:
   name: myapp-deployment
   labels:
     app: myapp
 spec:
   replicas: 10
   # 重点关注该字段
   selector:
     matchLabels:
       app: myapp
   template:
     metadata:
       labels:
         app: myapp
     spec:
       containers:
       - name: myapp
         image: registry.cn-beijing.aliyuncs.com/google_registry/myapp:v2
         ports:
         - containerPort: 80
kubectl语法
kubectl [command] [TYPE] [NAME] [flags]
官网地址:https://kubernetes.io/docs/reference/kubectl/overview/ 
kubectl flags:https://kubernetes.io/docs/reference/kubectl/kubectl/

说明:

1、command:指定在一个或多个资源上要执行的操作。例如:create、get、describe、delete、apply等

2、TYPE:指定资源类型(如:pod、node、services、deployments等)。资源类型大小写敏感,可以指定单数、复数或缩写形式。例如,以下命令生成相同的输出:

 kubectl get pod  -n kubernetes-dashboard
 kubectl get pods -n kubernetes-dashboard
 kubectl get po   -n kubernetes-dashboard

3、NAME:指定资源的名称。名称大小写敏感。如果省略名称空间,则显示默认名称空间资源的详细信息或者提示:No resources found in default namespace.。

 # 示例:
 [root@k8s-master ~]# kubectl get pods
 No resources found in default namespace.
 [root@k8s-master ~]# kubectl get pods --all-namespaces  # 或者 kubectl get pods --A
 NAMESPACE              NAME                                         READY   STATUS    RESTARTS   AGE
 kube-system            coredns-6955765f44-c9zfh                     1/1     Running   8          6d7h
 kube-system            coredns-6955765f44-lrz5q                     1/1     Running   8          6d7h
 kube-system            etcd-k8s-master                              1/1     Running   9          6d7h
 kube-system            kube-apiserver-k8s-master                    1/1     Running   9          6d7h
 kube-system            kube-controller-manager-k8s-master           1/1     Running   8          6d7h
 kube-system            kube-flannel-ds-amd64-dngrk                  1/1     Running   13         6d7h
 kube-system            kube-flannel-ds-amd64-h4sn6                  1/1     Running   13         6d6h
 kube-system            kube-flannel-ds-amd64-m92wp                  1/1     Running   11         6d6h
 kube-system            kube-proxy-28dwj                             1/1     Running   9          6d6h
 kube-system            kube-proxy-c875m                             1/1     Running   8          6d7h
 kube-system            kube-proxy-stg6w                             1/1     Running   10         6d6h
 kube-system            kube-scheduler-k8s-master                    1/1     Running   9          6d7h
 kubernetes-dashboard   dashboard-metrics-scraper-7b8b58dc8b-nr5fz   1/1     Running   7          6d1h
 kubernetes-dashboard   kubernetes-dashboard-755dcb9575-9kg7p        1/1     Running   9          6d1h
 [root@k8s-master ~]# kubectl get service --all-namespaces  # 或者 kubectl get service -A
 NAMESPACE              NAME                        TYPE        CLUSTER-IP      EXTERNAL-IP   PORT(S)                  AGE
 default                kubernetes                  ClusterIP   10.96.0.1       <none>        443/TCP                  6d7h
 kube-system            kube-dns                    ClusterIP   10.96.0.10      <none>        53/UDP,53/TCP,9153/TCP   6d7h
 kubernetes-dashboard   dashboard-metrics-scraper   ClusterIP   10.104.12.221   <none>        8000/TCP                 6d1h
 kubernetes-dashboard   kubernetes-dashboard        NodePort    10.110.157.29   <none>        443:30001/TCP            6d1h

3、flags:指定可选的标记。例如,可以使用 -s 或 --server标识来指定Kubernetes API服务器的地址和端口;-n指定名称空间;等等。

注意:你从命令行指定的flags将覆盖默认值和任何相应的环境变量。优先级最高。

4、在多个资源上执行操作时,可以通过类型 [TYPE] 和名称 [NAME] 指定每个资源,也可以指定一个或多个文件。

按类型和名称指定资源:

 # 查看一个资源类型中的多个资源
 [root@k8s-master ~]# kubectl get pod -n kube-system coredns-6955765f44-c9zfh kube-proxy-28dwj
 NAME                       READY   STATUS    RESTARTS   AGE
 coredns-6955765f44-c9zfh   1/1     Running   8          6d7h
 kube-proxy-28dwj           1/1     Running   9          6d6h
 [root@k8s-master ~]# 
 # 查看多个资源类型
 [root@k8s-master ~]# kubectl get svc,node
 NAME                 TYPE        CLUSTER-IP   EXTERNAL-IP   PORT(S)   AGE
 service/kubernetes   ClusterIP   10.96.0.1    <none>        443/TCP   45h
 
 NAME              STATUS   ROLES    AGE   VERSION
 node/k8s-master   Ready    master   45h   v1.17.4
 node/k8s-node01   Ready    <none>   45h   v1.17.4
 node/k8s-node02   Ready    <none>   45h   v1.17.4

使用一个或多个文件指定资源:-f file1 -f file2 -f file<#>

 # 使用YAML而不是JSON,因为YAML更容易使用,特别是对于配置文件。
 kubectl get pod -f pod.yaml
kubectl语法中的command操作

下表包括常见kubectl操作的简短描述和通用语法:

也可在命令行可通过kubectl -h 命令获取部分信息 或者通过以下地址查看更多详情:

Logo

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

更多推荐