基础控制指令

# 查看对应资源: 状态

$ kubectl get -n -o wide

查看默认命名空间的pod

[root@k8s-master ~]# kubectl get pod

NAME READY STATUS RESTARTS AGE

nginx 1/1 Running 0 3h53m

查看所有pod

[root@k8s-master ~]# kubectl get pod -A

NAMESPACE NAME READY STATUS RESTARTS AGE

cloud2304 mysql 1/1 Running 0 3h40m

default nginx 1/1 Running 0 3h53m

kube-system calico-kube-controllers-7c87c5f9b8-cbh9g 1/1 Running 5 (5h56m ago) 28h

kube-system calico-node-7m5tq 1/1 Running 3 (7h53m ago) 28h

kube-system calico-node-bth4k 1/1 Running 3 (7h53m ago) 28h

kube-system calico-node-zp4tx 1/1 Running 3 (7h53m ago) 28h

查看指定命名空间的pod

kubectl get pod -n +命名空间名字

删除pod

kubectl delete pod --force +pod名字 -n +命名空间

默认查看到的命名空间是default,修改上下文关系,让查看到的是其他命名空间的pod

#修改默认命名空间为kuboard

[root@k8s-master ~]# kubectl config set-context --current --namespace kuboard

Context "kubernetes-admin@kubernetes" modified.

[root@k8s-master ~]# kubectl get pod

NAME READY STATUS RESTARTS AGE

kuboard-agent-2-5cdbd5bb5d-zzr9s 1/1 Running 0 5h44m

kuboard-agent-54dbdc497d-qr2zl 1/1 Running 1 (5h43m ago) 5h44m

kuboard-etcd-f99qg 1/1 Running 0 7h57m

kuboard-questdb-7cfc9cc858-tnhcz 1/1 Running 0 5h44m

kuboard-v3-5fc46b5557-fwsds 1/1 Running 0 7h57m

#将默认命名空间改回default

[root@k8s-master ~]# kubectl config set-context --current --namespace default

Context "kubernetes-admin@kubernetes" modified.

[root@k8s-master ~]# kubectl get pod

NAME READY STATUS RESTARTS AGE

nginx 1/1 Running 0 3h42m

动态查看pod

NAMESPACE NAME READY STATUS RESTARTS AGE

cloud2304 mysql 1/1 Running 0 3h42m

default nginx 1/1 Running 0 3h54m

kube-system calico-kube-controllers-7c87c5f9b8-cbh9g 1/1 Running 5 (5h57m ago) 28h

kube-system calico-node-7m5tq 1/1 Running 3 (7h54m ago) 28h

查看节点

[root@k8s-master ~]# kubectl get nodes

NAME STATUS ROLES AGE VERSION

k8s-master Ready control-plane,master 28h v1.22.0

k8s-node1 Ready 28h v1.22.0

k8s-node2 Ready 28h v1.22.0

# 查看对应资源: 事件信息

$ kubectl describe -n

这个就好比容器的信息inspect

查看pod信息,主要用于排错用,重要的是查看文件的Events信息

kubectl describe pod -n +命名空间名字 +pod名字

[root@k8s-master ~]# kubectl describe pod -n kube-system kube-proxy-k7zrz

Name: kube-proxy-k7zrz

Namespace: kube-system

Priority: 2000001000

Priority Class Name: system-node-critical

Node: k8s-node2/192.168.231.136

Start Time: Mon, 11 Dec 2023 16:09:59 +0800

Labels: controller-revision-hash=55847b5bbd

k8s-app=kube-proxy

pod-template-generation=1

....

# 查看pod资源: 日志

$ kubectl logs -f [CONTINER_NAME] -n

看pod日志,只有pod有日志

kubectl logs +pod名字 -n +命名空间名字

[root@k8s-master ~]# kubectl logs kuboard-agent-2-5cdbd5bb5d-zzr9s -n kuboard

KuboardEndpoint : http://kuboard-v3

KuboardAgent : kcp://kuboard-v3:10081

KUBOARD_AGENT_PROXY :

KUBOARD_AGENT_KEY : 32b7d6572c6255211b4eec9009e4a816

KUBOARD_K8S_CLUSTER_NAME : default

KUBOARD_ANONYMOUS_TOKEN : pAMXXJ6vfee3CkEyEHVYTxsOtWCplcq6

KUBOARD_AGENT_REMOTE_PORT_NGINX: 45001

% Total % Received % Xferd Average Speed Time Time Time Current

Dload Upload Total Spent Left Speed

100 263 100 263 0 0 16437 0 --:--:-- --:--:-- --:--:-- 16437

# 创建资源: 根据资源清单

$ kubectl apply[or create] -f .yaml

apply 与create都是运行某些文件

create只能运行第一次,再次运行就会报错

apply可以运行多次,后面运行还会帮你更行

# 删除资源: 根据资源清单

$ kubectl delete -f .yaml

这些文件定义过的内容全部删除

kubectl delete -f xxxx.yaml

# 修改资源: 根据反射出的etcd中的配置内容, 生产中不允许该项操作, 且命令禁止

$ kubectl edit -n

edit是更新,编辑的意思

[root@k8s-master ~]# kubectl get pod -A

NAMESPACE NAME READY STATUS RESTARTS AGE

cloud2304 mysql 1/1 Running 0 4h

default nginx 0/1 Running 0 28h

可以进行更新

kubectl edit daemonsets.apps pod名字 -n 命名空间名字

即可自动更新,因为k8s更新是滚动更新

查看node状态

以什么形式查看

#查看node详细信息

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

NAME STATUS ROLES AGE VERSION INTERNAL-IP EXTERNAL-IP OS-IMAGE KERNEL-VERSION CONTAINER-RUNTIME

k8s-master Ready control-plane,master 28h v1.22.0 192.168.231.134 CentOS Linux 7 (Core) 3.10.0-1160.el7.x86_64 docker://24.0.7

k8s-node1 Ready 28h v1.22.0 192.168.231.135 CentOS Linux 7 (Core) 3.10.0-1160.el7.x86_64 docker://24.0.7

k8s-node2 Ready 28h v1.22.0 192.168.231.136 CentOS Linux 7 (Core) 3.10.0-1160.el7.x86_64 docker://24.0.7

以yaml形式查看

[root@k8s-master ~]# kubectl get pod -o yaml

apiVersion: v1

items:

- apiVersion: v1

kind: Pod

metadata:

annotations:

cni.projectcalico.org/containerID: 27935188fd58c9ec77febe8af14bbb1e507c1cb67da0e202c317c380c43da75c

cni.projectcalico.org/podIP: 10.244.169.129/32

cni.projectcalico.org/podIPs: 10.244.169.129/32

kubectl.kubernetes.io/last-applied-configuration: |

...

以json形式查看

[root@k8s-master ~]# kubectl get node -o json

{

"apiVersion": "v1",

"items": [

{

"apiVersion": "v1",

"kind": "Node",

"metadata": {

"annotations": {

"kubeadm.alpha.kubernetes.io/cri-socket": "/var/run/dockershim.sock"

...

查看service对象

[root@k8s-master ~]# kubectl get svc

NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE

kubernetes ClusterIP 10.96.0.1 443/TCP 28h

查看集群信息

[root@k8s-master ~]# kubectl cluster-info

Kubernetes control plane is running at https://192.168.231.134:6443

CoreDNS is running at https://192.168.231.134:6443/api/v1/namespaces/kube-system/services/kube-dns:dns/proxy

To further debug and diagnose cluster problems, use 'kubectl cluster-info dump'.

查看各组件信息

[root@k8s-master ~]# kubectl get cs

Warning: v1 ComponentStatus is deprecated in v1.19+

NAME STATUS MESSAGE ERROR

scheduler Unhealthy Get "http://127.0.0.1:10251/healthz": dial tcp 127.0.0.1:10251: connect: connection refused

controller-manager Healthy ok

etcd-0 Healthy {"health":"true","reason":""}

有一个Unhealthy,修改

出现问题是scheduler,因此修改得文件就是scheduler.yaml,哪个出现问题修改哪个

[root@k8s-master ~]# vim /etc/kubernetes/manifests/kube-scheduler.yaml

-- port 是指定默认端口,将其注释掉

查看另外的组件信息

$ kubectl -s https://api-server:6443 get componentstatuses

-s 指定

查看各资源对象对应的api版本

[root@k8s-master ~]# kubectl explain pod

KIND: Pod

VERSION: v1

DESCRIPTION:

Pod is a collection of containers that can run on a host. This resource is

created by clients and scheduled onto hosts.

...

 查看帮助信息

$ kubectl explain deployment

$ kubectl explain deployment.spec

$ kubectl explain deployment.spec.replicas

创建pod与命名空间(名称空间)

通常写在xxx.yaml文件内

YAML的语法比较简单,主要有下面几个:

1、大小写敏感

2、使用缩进表示层级关系

3、缩进不允许使用tab,只允许空格( 低版本限制 )

4、缩进的空格数不重要,只要相同层级的元素左对齐即可

5、'#'表示注释

YAML支持以下几种数据类型:

1、纯量:单个的、不可再分的值

2、对象:键值对的集合,又称为映射(mapping)/ 哈希(hash) / 字典(dictionary)

3、数组:一组按次序排列的值,又称为序列(sequence) / 列表(list)

补充说明:

1、书写yaml切记: 后面要加一个空格

2、如果需要将多段yaml配置放在一个文件中,中间要使用---分隔

创建名称空间

vim namespace.yaml

###

apiVersion: v1

kind: Namespace

metadata:

name: webserver

###

#运行文件

$ kubectl apply -f namespace.yaml

# 如果通过命令行创建

$ kubectl create namespace webserver

# 删除名称空间[注意,这将删除名称空间下的所有资源]

$ kubectl delete namespace webserver

创建pod

(1)kind:指定了这个 API 对象的类型(Type),是一个 Pod,根据实际情况,此处资源类型可以是Deployment、Job、Ingress、Service等。

(2)metadata:包含Pod的一些meta信息,比如名称、namespace、标签等信息.

(3)spec:specification of the resource content 指定该资源的内容,包括一些container,storage,volume以及其他Kubernetes需要的参数,以及诸如是否在容器失败时重新启动容器的属性。可在特定Kubernetes API找到完整的Kubernetes Pod的属性。

"name": 容器名称 "image": 容器镜像 "command": 容器启动指令 "args": 指令参数 "workingDir": 工作目录 "ports": 容器端口 "env": 环境变量 "resource": 资源限制 "volumeMounts": 卷挂载 "livenessProbe": 存活探针 "readinessProbe": 就绪探针 "startupProbe": 启动探针 "livecycle": 钩子函数 "terminationMessagePath": 容器的异常终止消息的路径,默认在 /dev/termination-log "imagePullPolicy": 镜像拉去策略 "securityContext": 安全上下文 "stdin": 给容器分配标准输入,类似docker run -i "tty": 分配终端

创建一个pod

vim nginx.yaml

###

apiVersion: v1 ##指定版本

kind: Pod ##指定类型

metadata: ##包含的信息

name: nginx ##pod的名字

labels: ##标签,随便写

app: nginx

#描述

spec:

containers: ##容器

- name: nginx ##容器的名字

image: nginx:1.20 ##容器所使用的镜像

ports: ##端口

- containerPort: 80

###

kubectl apply -f nginx.yaml

创建一个命名空间及pod

vim mysql.yaml

###

apiVersion: v1

kind: Namespace

metadata:

name: cloud2304 ###名称空间的名字是cloud2304

--- ###分隔符隔开,下面是创建pod--mysql

apiVersion: v1

kind: Pod

metadata:

name: mysql

namespace: cloud2304

spec: ##描述

containers: ##容器

- name: mysql ##容器名字

image: mysql ##容器所需镜像

env: ##环境变量

- name: MYSQL_ROOT_PASSWORD ##定义用户登录数据库的密码

value: "123456"

###

kubectl apply -f mysql.yaml

[root@k8s-master ~]# kubectl get pod -A

NAMESPACE NAME READY STATUS RESTARTS AGE

cloud2304 mysql 1/1 Running 0 4h33m

推荐文章

评论可见,请评论后查看内容,谢谢!!!
 您阅读本篇文章共花了: