[TOC]

K8S 基础命令

Kubeadm 命令

描述:该命令是安装K8s后的基础命令可以进行K8s主或者从节点的初始化,以及节点加入管理;

init - 初始化配置相关

描述:该命令用户初始化节点设置master节点的控制面板以及网络相关的设置;

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
# 示例1.Master节点初始化采用指定yaml配置文件进行初始化参数的传入
cat <<EOF > ./kubeadm-config.yaml
apiVersion: kubeadm.k8s.io/v1beta2
kind: ClusterConfiguration
kubernetesVersion: v${K8SVERSION}
imageRepository: registry.cn-hangzhou.aliyuncs.com/google_containers
controlPlaneEndpoint: "${APISERVER_NAME}:6443"
networking:
serviceSubnet: "10.99.0.0/16"
podSubnet: "${POD_SUBNET}"
dnsDomain: "cluster.local"
EOF
#执行完成会显示集群master节点加入以及Node节点加入的命令行(有效期两个小时)
kubeadm init --config=kubeadm-config.yaml --upload-certs


# 实例2.Master节点初始可以直接采用参数进行指定
kubeadm init --apiserver-advertise-address=0.0.0.0 \
--apiserver-cert-extra-sans=127.0.0.1 \
--image-repository=registry.aliyuncs.com/google_containers \
--ignore-preflight-errors=all \
--kubernetes-version=v1.17.4 \
--service-cidr=10.96.0.0/16 \
--pod-network-cidr=10.244.0.0/16 \
--token-ttl=24h0m0s \
--control-plane-endpoint=192.168.2.175 \
--upload-certs
# 参数说明:
# –pod-network-cidr= #指定 Pod 网段的 IP 地址块。指定为 flannel 的默认网段 10.244.0.0/16 ,方便后续部署 flannel 。
# –apiserver-advertise-address= #指定 api-server 监听的地址,这个地址需要 node 节点访问得到。


# 实例2.获得加入控制平台的证书(使用此命令调用init工作流的单个阶段并且上传证书到kubeadm-certs)
kubeadm init phase upload-certs --upload-certs


token - 生成认证相关信息

命令语法:

1
2
3

# 参数
--print-join-command

基础实例:

1
2
3
4
5
6
7
8
#示例1.节点初始化命令行生成(有效期两个小时,token有效期24h)
kubeadm token create --print-join-command
kubeadm token create $(kubeadm token generate) --print-join-command --ttl=0 #方式2

#示例2.生成的token有效期查看
kubeadm token list
# TOKEN TTL EXPIRES USAGES DESCRIPTION EXTRA GROUPS
# 2af75y.5fio8knxu9e2ygvz 23h 2020-06-25T09:28:19+08:00 authentication,signing <none> system:bootstrappers:kubeadm:default-node-token


config - 基础环境依赖配置

基础实例:

1
2
3
4
5
6
7
8
9
10
11
12
13
# 示例1.指定kubernetes版本查看依赖镜像,并指定仓库源;
kubeadm config images list --image-repository mirrorgcrio --kubernetes-version=1.18.3
# mirrorgcrio/kube-apiserver:v1.18.3
# mirrorgcrio/kube-controller-manager:v1.18.3
# mirrorgcrio/kube-scheduler:v1.18.3
# mirrorgcrio/kube-proxy:v1.18.3
# mirrorgcrio/pause:3.2
# mirrorgcrio/etcd:3.4.3-0
# mirrorgcrio/coredns:1.6.7


# 示例2.指定版本以及镜像仓库(由于国内环境无法访问k8s.gcr.io)
kubeadm config images pull --image-repository mirrorgcrio --kubernetes-version=1.18.3


join - 集群或者节点加入初始化

命令语法:

1
2
3
4
5
#参数
--control-plane #控制面板
--certificate-key
--discovery-token-ca-cert-hash
--token #认证token

基础使用:

1
2
3
4
5
6
7
8
# 示例1.集群加入限Master节点
kubeadm join apiserver.test:6443 --token hzlzrr.uwuegx4locpu36oc \
--discovery-token-ca-cert-hash sha256:4cbe428cb3503277be9fbcf3a99de82a97397a624dd94d4270c4eed1b861f951 \
--control-plane --certificate-key 28b178f04afae3770aa92add0206650b2359dd61424f127a6d44142dd15a280d

# 示例2.工作节点的加入限Node节点
kubeadm join apiserver.test:6443 --token hzlzrr.uwuegx4locpu36oc \
--discovery-token-ca-cert-hash sha256:4cbe428cb3503277be9fbcf3a99de82a97397a624dd94d4270c4eed1b861f951


reset - 节点重置操作

基础实例:

1
2
# 重置Workers节点操作
kubeadm reset -f


Kubectl 命令

描述:该命令实际上是操作 Kubernetes 对象(创建、修改、删除)的方法;
https://kubernetes.io/docs/reference/generated/kubectl/kubectl-commands

Kubectl 自动补全:

1
2
3
4
5
6
7
8
9
10
11
12
# 自动补全
source <(kubectl completion bash) # 在 bash 中设置当前 shell 的自动补全,要先安装 bash-completion 包
# 在您的 bash shell 中永久的添加自动补全
echo "source <(kubectl completion bash)" >> ~/.bashrc
# 在您的 zsh shell 中永久的添加自动补全
echo "if [ $commands[kubectl] ]; then source <(kubectl completion zsh); fi" >> ~/.zshrc

#加入到启动配置文件中为 kubectl 使用一个速记别名该别名也可以与 completion 一起使用;
cat >> ~/.bashrc <<'END'
alias k=kubectl
complete -F __start_kubectl k
END

使用案例:

1
2
3
4
5
6
7
[[email protected] ~]$ k get cs
NAME STATUS MESSAGE ERROR
scheduler Healthy ok
controller-manager Healthy ok
etcd-2 Healthy {"health":"true"}
etcd-1 Healthy {"health":"true"}
etcd-0 Healthy {"health":"true"}


api-versions - 当前可用集群支持的版本
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
$ kubectl api-versions
# admissionregistration.k8s.io/v1
# admissionregistration.k8s.io/v1beta1
# apiextensions.k8s.io/v1
# apiextensions.k8s.io/v1beta1
# apiregistration.k8s.io/v1
# apiregistration.k8s.io/v1beta1
# apps/v1
# authentication.k8s.io/v1
# authentication.k8s.io/v1beta1
# authorization.k8s.io/v1
# authorization.k8s.io/v1beta1
# autoscaling/v1
# autoscaling/v2beta1
# autoscaling/v2beta2
# batch/v1
# batch/v1beta1
# certificates.k8s.io/v1beta1
# coordination.k8s.io/v1
# coordination.k8s.io/v1beta1
# crd.projectcalico.org/v1
# discovery.k8s.io/v1beta1
# events.k8s.io/v1beta1
# extensions/v1beta1
# networking.k8s.io/v1
# networking.k8s.io/v1beta1
# node.k8s.io/v1beta1
# policy/v1beta1
# rbac.authorization.k8s.io/v1
# rbac.authorization.k8s.io/v1beta1
# scheduling.k8s.io/v1
# scheduling.k8s.io/v1beta1
# storage.k8s.io/v1
# storage.k8s.io/v1beta1
# v1
api-resources - 获得支持资源的完整列表

描述:在必须指定要描述的资源类型的时候使用。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
kubectl api-resources
NAME SHORTNAMES APIGROUP NAMESPACED KIND
bindings true Binding
componentstatuses cs false ComponentStatus
configmaps cm true ConfigMap
endpoints ep true Endpoints
events ev true Event
limitranges limits true LimitRange
namespaces ns false Namespace
nodes no false Node
persistentvolumeclaims pvc true PersistentVolumeClaim
persistentvolumes pv false PersistentVolume
pods po true Pod
podtemplates true PodTemplate
replicationcontrollers rc true ReplicationController
resourcequotas quota true ResourceQuota
secrets true Secret
serviceaccounts sa true ServiceAccount
services svc true Service
mutatingwebhookconfigurations admissionregistration.k8s.io false MutatingWebhookConfiguration
validatingwebhookconfigurations admissionregistration.k8s.io false ValidatingWebhookConfiguration
customresourcedefinitions crd,crds apiextensions.k8s.io false CustomResourceDefinition
apiservices apiregistration.k8s.io false APIService
controllerrevisions apps true ControllerRevision
daemonsets ds apps true DaemonSet
deployments deploy apps true Deployment
replicasets rs apps true ReplicaSet
statefulsets sts apps true StatefulSet
tokenreviews authentication.k8s.io false TokenReview
localsubjectaccessreviews authorization.k8s.io true LocalSubjectAccessReview
selfsubjectaccessreviews authorization.k8s.io false SelfSubjectAccessReview
selfsubjectrulesreviews authorization.k8s.io false SelfSubjectRulesReview
subjectaccessreviews authorization.k8s.io false SubjectAccessReview
horizontalpodautoscalers hpa autoscaling true HorizontalPodAutoscaler
cronjobs cj batch true CronJob
jobs batch true Job
certificatesigningrequests csr certificates.k8s.io false CertificateSigningRequest
leases coordination.k8s.io true Lease
bgpconfigurations crd.projectcalico.org false BGPConfiguration
bgppeers crd.projectcalico.org false BGPPeer
blockaffinities crd.projectcalico.org false BlockAffinity
clusterinformations crd.projectcalico.org false ClusterInformation
felixconfigurations crd.projectcalico.org false FelixConfiguration
globalnetworkpolicies crd.projectcalico.org false GlobalNetworkPolicy
globalnetworksets crd.projectcalico.org false GlobalNetworkSet
hostendpoints crd.projectcalico.org false HostEndpoint
ipamblocks crd.projectcalico.org false IPAMBlock
ipamconfigs crd.projectcalico.org false IPAMConfig
ipamhandles crd.projectcalico.org false IPAMHandle
ippools crd.projectcalico.org false IPPool
networkpolicies crd.projectcalico.org true NetworkPolicy
networksets crd.projectcalico.org true NetworkSet
endpointslices discovery.k8s.io true EndpointSlice
events ev events.k8s.io true Event
ingresses ing extensions true Ingress
ingressclasses networking.k8s.io false IngressClass
ingresses ing networking.k8s.io true Ingress
networkpolicies netpol networking.k8s.io true NetworkPolicy
runtimeclasses node.k8s.io false RuntimeClass
poddisruptionbudgets pdb policy true PodDisruptionBudget
podsecuritypolicies psp policy false PodSecurityPolicy
clusterrolebindings rbac.authorization.k8s.io false ClusterRoleBinding
clusterroles rbac.authorization.k8s.io false ClusterRole
rolebindings rbac.authorization.k8s.io true RoleBinding
roles rbac.authorization.k8s.io true Role
priorityclasses pc scheduling.k8s.io false PriorityClass
csidrivers storage.k8s.io false CSIDriver
csinodes storage.k8s.io false CSINode
storageclasses sc storage.k8s.io false StorageClass
volumeattachments storage.k8s.io false VolumeAttachment


delete - 删除节点和资源
1
2
#1.在Master节点上删除指定的节点
kubectl delete node your-node-name


drain - 节点组件清理

基础示例:

1
2
3
4
5
6
7
8
9
#示例1.强制删除节点本地数据以及运行的容器
kubectl drain master-02 --delete-local-data --force --ignore-daemonsets
# WARNING: ignoring DaemonSet-managed Pods: kube-system/kube-flannel-ds-amd64-mlcvm, kube-system/kube-proxy-f7rnh
# evicting pod kube-system/coredns-5fd54d7f56-22fwz
# bec pod/coredns-5fd54d7f56-22fwz evicted
# node/server4 evicted
kubectl get nodes master-02
# NAME STATUS ROLES AGE VERSION
# master-02 Ready,SchedulingDisabled <none> 3h36m v1.18.3 # 不再调用此结点


apply - 部署应用

基础实例:

1
2
3
4
5
6
#1.执行deployment/services操作的部署命令
kubectl apply -f nginx-deployment.yaml
# deployment.apps/nginx-deployment created

kubectl apply -f redis-master-service.yaml
# service/redis-master-service created


get - 显示资源列表
1
2
3
4
5
6
7
8
# 基础语法
kubectl get 资源类型

# 基础参数
-l #获取相关label标签的资源列表
-o #以 wide,yaml,jsonpath="{..image}",go-template 格式化输出
--namespace #查找指定名称空间下的 Pod
--template #使用 go-template 格式化

基础示例:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
#1.获取类型为Deployment的资源列表
kubectl get deployments
# NAME READY UP-TO-DATE AVAILABLE AGE
# nginx-deployment 1/1 1 1 8h


#2.获取类型为Pod的资源列表
kubectl get pods #默认显示名称为default的pod列表
kubectl get pods --all-namespaces #执行命令,获取所有名称空间中的所有 Pod
# NAME READY STATUS RESTARTS AGE
# nginx-deployment-674ff86d-btmt4 1/1 Running 0 8h
kubectl get pods -l app=nginx #获取相关label标签的资源列表
# NAME READY STATUS RESTARTS AGE
# nginx-deployment-cc7df4f8f-2jlnp 1/1 Running 0 47m
# nginx-deployment-cc7df4f8f-jxwrs 1/1 Running 0 47m
# 采用jsonpath语法使用 -o jsonpath={..image} 参数,输出结果将格式化为只包含容器镜像名字的形式
kubectl get pods --namespace kube-system -o jsonpath="{..image}" # 按名称空间查找容器
kubectl get pods --all-namespaces -o=jsonpath="{..image}" -l app=redis
# redis redis:latest
kubectl get pods --all-namespaces -o jsonpath="{..image}" | tr -s '[[:space:]]' '\n' |sort | uniq -c # jsonpath 将空格替换为新的行并对对结果排序,然后进行计数
# 24 calico/cni:v3.13.1
# 2 calico/kube-controllers:v3.13.1
# 12 calico/node:v3.13.1
# 12 calico/pod2daemon-flexvol:v3.13.1
# 4 mirrorgcrio/coredns:1.6.7
# 6 mirrorgcrio/etcd:3.4.3-0
# 6 mirrorgcrio/kube-apiserver:v1.18.4
# 6 mirrorgcrio/kube-controller-manager:v1.18.4
# 12 mirrorgcrio/kube-proxy:v1.18.4
# 6 mirrorgcrio/kube-scheduler:v1.18.4
# 1 redis
# 1 redis:latest
#用 Pod 中 image 字段的绝对路径来查找容器的镜像名字,可以规避 image 字段重复出现的情况。
kubectl get pods --all-namespaces -o jsonpath="{.items[*].spec.containers[*].image}" |tr -s '[[:space:]]' '\n' | uniq -c | sort -r
# .items[*]:每一个返回值
# .spec: 获取 spec
# .containers[*]: 每一个 container
# .image:获取 image
kubectl get pods -o jsonpath="{.items[*].spec.containers[*].image}" |tr -s '[[:space:]]' '\n' | uniq -c | sort -r
# 1 redis
#如果通过名字查找 Pod由于返回结果只有一个 Pod,此时,.items[*] 这一部分应该从 jsonpath 中移除(效果同上)
kubectl get pods redis-master-deployment-7d557b94bb-bzw2v -o jsonpath="{.spec.containers[*].image}" |tr -s '[[:space:]]' '\n' | uniq -c | sort -r
# 1 redis
# map[containerPort:6379 protocol:TCP]
# 按Pod查找容器输出结果可以通过 rannge 操作遍历(值得学习分隔)
kubectl get pods -o=jsonpath='{range .items[*]}{"\n"}{.metadata.name}{":\t"}{range .spec.containers[*]}{.image}{", "}{end}{end}' |sort
# redis-master-deployment-7d557b94bb-bzw2v: redis,
kubectl get pods --all-namespaces -o go-template --template="{{range .items}}{{range .spec.containers}}{{.image}} {{end}}{{end}}"
kubectl get pods redis-master-deployment-7d557b94bb-bzw2v --template='{{(index (index .spec.containers 0).ports 0)}}{{"\n"}}' ##使用go-template罗列容器进行Json解析

#3.获取类型为Node的资源列表
kubectl get nodes
# NAME STATUS ROLES AGE VERSION
# k8s Ready master 29h v1.18.2
kubectl get nodes -o wide
# NAME STATUS ROLES AGE VERSION INTERNAL-IP EXTERNAL-IP OS-IMAGE KERNEL-VERSION CONTAINER-RUNTIME
# ks8test Ready master 23h v1.18.3 10.10.107.193 <none> CentOS Linux 7 (Core) 5.7.0-1.el7.elrepo.x86_64 docker://19.3.9
# node-1 Ready <none> 41m v1.18.3 10.20.172.82 <none> CentOS Linux 7 (Core) 5.7.0-1.el7.elrepo.x86_64 docker://19.3.9


#4.名称空间在命令后增加 -A 或 --all-namespaces 可查看所有 名称空间中 的对象,使用参数 -n 可查看指定名称空间的对象,
# 查看所有名称空间的 Deployment
kubectl get deployments -A # --all-namespaces
# 查看 kube-system 名称空间的 Deployment
kubectl get deployments -n kube-system
# NAME READY UP-TO-DATE AVAILABLE AGE
# calico-kube-controllers 1/1 1 1 29h
# coredns 2/2 2 2 29h


#5.Services抽象层查看
kubectl get services -o wide
kubectl get svc -o wide
# NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE SELECTOR
# kubernetes ClusterIP 10.96.0.1 <none> 443/TCP 40h <none>
# redis-master-service ClusterIP 10.99.192.159 <none> 6379/TCP 8m24s app=redis,role=master,tier=backend


#6.指定名称空间的配置信息查看
kubectl get cm kubeadm-config -n kube-system -o yaml
# apiVersion: v1
# data:
# ClusterConfiguration: |
# apiServer:
# extraArgs:
# authorization-mode: Node,RBAC
# timeoutForControlPlane: 4m0s
# apiVersion: kubeadm.k8s.io/v1beta2


#7.指定名称空间选举信息查看
kubectl get ep kube-controller-manager -n kube-system -o yaml
# apiVersion: v1
# kind: Endpoints
# metadata:
# annotations:
# control-plane.alpha.kubernetes.io/leader: '{"holderIdentity":"master-01_137ddc1b-55bf-413b-81d3-f76654daa41e","leaseDurationSeconds":15,"acquireTime":"2020-06-24T03:51:16Z","renewTime":"2020-06-28T07:56:52Z","leaderTransitions":6}'
# creationTimestamp: "2020-06-23T04:45:29Z"


#8.查看 ReplicaSet(副本) 状态与信息
kubectl get rs
# NAME DESIRED CURRENT READY AGE
# redis-master-deployment-7d557b94bb 1 1 1 4m46s

注意事项:

  • 注意并非所有对象都在名称空间里;


describe - 显示有关资源的详细信息
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
#kubectl describe 资源类型 资源名称

#1.查看名称为nginx-deployment-674ff86d-btmt4的Pod的信息
kubectl describe pod nginx-deployment-674ff86d-btmt4
# Name: nginx-deployment-674ff86d-btmt4
# Namespace: default
# Priority: 0
# Node: node/10.10.107.192
# Start Time: Thu, 07 May 2020 14:12:18 +0800
# Labels: app=nginx
# pod-template-hash=674ff86d
# Annotations: cni.projectcalico.org/podIP: 10.100.167.129/32
# cni.projectcalico.org/podIPs: 10.100.167.129/32
# Status: Running
# IP: 10.100.167.129
# IPs:
# IP: 10.100.167.129
# Controlled By: ReplicaSet/nginx-deployment-674ff86d


#2.查看名称为nginx-deployment的Deployment的信息
kubectl describe deployment nginx-deployment
# Name: nginx-deployment
# Namespace: default
# CreationTimestamp: Thu, 07 May 2020 14:12:18 +0800
# Labels: app=nginx
# Annotations: deployment.kubernetes.io/revision: 1
# Selector: app=nginx
# Replicas: 1 desired | 1 updated | 1 total | 1 available | 0 unavailable
# ...
# Conditions:
# Type Status Reason
# ---- ------ ------
# Available True MinimumReplicasAvailable
# Progressing True NewReplicaSetAvailable
# OldReplicaSets: <none>
# NewReplicaSet: nginx-deployment-674ff86d (1/1 replicas created)
# Events: <none>


#3.查看节点各项信息
kubectl describe node master-03
# Name: master-03
# Roles: master
# Labels: beta.kubernetes.io/arch=amd64
# beta.kubernetes.io/os=linux
# kubernetes.io/arch=amd64
# kubernetes.io/hostname=master-03
# kubernetes.io/os=linux
# node-role.kubernetes.io/master=
# Annotations: kubeadm.alpha.kubernetes.io/cri-socket: /var/run/dockershim.sock
# node.alpha.kubernetes.io/ttl: 0
# projectcalico.org/IPv4Address: 10.10.107.193/24
# projectcalico.org/IPv4IPIPTunnelAddr: 10.100.133.128
# volumes.kubernetes.io/controller-managed-attach-detach: true


cordon - 节点限制加入资源
1
2
3
4
# kubectl cordon [节点名称]
# (1) 禁止新建立的Pod在该节点上运行
kubectl cordon node-1
node/node-1 cordoned


logs - 查看pod中的容器的打印日志(和命令docker logs 类似)

描述:输出pod中一个容器的日志,如果pod只包含一个容器则可以省略容器名。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
# kubectl logs [Pod名称]
-c, --container="": 容器名。
-f, --follow[=false]: 指定是否持续输出日志。
--interactive[=true]: 如果为true,当需要时提示用户进行输入。默认为true
--limit-bytes=0: 输出日志的最大字节数。默认无限制。
-p, --previous[=false]: 如果为true,输出pod中曾经运行过,但目前已终止的容器的日志。
--since=0: 仅返回相对时间范围,如5s、2m或3h,之内的日志。默认返回所有日志。只能同时使用since和since-time中的一种。
--since-time="": 仅返回指定时间(RFC3339格式)之后的日志。默认返回所有日志。只能同时使用since和since-time中的一种。
--tail=-1: 要显示的最新的日志条数。默认为-1,显示所有的日志。
--timestamps[=false]: 在日志中包含时间戳。

#查看名称为nginx-pod-XXXXXXX的Pod内的容器打印的日志
#本案例中的 nginx-pod 没有输出日志,所以您看到的结果是空的
kubectl logs -f nginx-deployment-674ff86d-btmt4

# 返回pod ruby中已经停止的容器web-1的日志快照
$ kubectl logs -p -c ruby web-1

# 持续输出pod ruby中的容器web-1的日志
$ kubectl logs -f -c ruby web-1

# 仅输出pod nginx中最近的20条日志
$ kubectl logs --tail=20 nginx

# 输出pod nginx中最近一小时内产生的所有日志
$ kubectl logs --since=1h nginx

# 输出命名空间为WeiyiGeek,pods为Blog的日志仅返回指定时间(RFC3339格式)之后的日志并且仅仅输出1024bytes
$ kubectl logs Blog -n WeiyiGeek --since-time="2018-03T13:24:59Z08:00" --limit-bytes=1024


exec - 在pod中的容器环境内执行命令(和命令docker exec 类似)
1
2
3
4
5
# kubectl exec Pod名称 操作命令
# 在名称为nginx-pod-xxxxxx的Pod中运行bash
kubectl exec -it nginx-deployment-674ff86d-btmt4 /bin/bash
# kubectl exec [POD] [COMMAND] is DEPRECATED and will be removed in a future version. Use kubectl kubectl exec [POD] -- [COMMAND] instead.
# [email protected]:/#


run - 运行一个pod应用

基础示例:

1
2
3
4
5
# 示例1.这是一种自主式的pod建立方式,还有一种deployment控制器方式;
kubectl run helloworld --image=hello-world
pod/helloworld created
# 查看执行的结果日志
# kubectl logs helloworld


port-forward - 使用资源的名称来进行本地端口转发pod

参数说明:

1
2
--address=[localhost]: 要监听的地址(逗号分隔)。
--pod-running-timeout=1m0s: 等待时间的长度(如5s, 2m,或3h,大于零)

基础实例:

1
2
3
4
kubectl port-forward --address 127.0.0.1,10.10.107.191 redis-master-deployment-7d557b94bb-bzw2v 7000:6379
# Forwarding from 10.10.107.191:7000 -> 6379
# Forwarding from 127.0.0.1:7000 -> 6379
# Handling connection for 7000 (连接到此端口反应)