Kubernetes集群安装及kubectl命令行大全
1 下载 docker-desktop
从 docker 下载 docker-desktop (opens new window),并完成安装
2 启用 Kubernetes 集群
启动 docker-desktop,打开preference 面板
切换到 Kubernetes 标签页,并勾选启动 Enable Kubernetes,点击 Apply
kubectl简介
Kubernetes集群管理工具,它可以帮助您部署、管理和扩展Kubernetes集群中的应用程序和服务。使用kubectl,您可以创建、更新、删除Pod、Service、Deployment、ConfigMap、Secret等Kubernetes资源对象,同时也可以查看和监控这些资源对象的状态和日志,并进行应用程序调试和故障排除。除此之外,kubectl还可以帮助您在不同的Kubernetes集群和命名空间之间切换和操作,管理Kubernetes对象的标签和注释,以及管理kubectl的配置文件等操作。
kubectl常用命令
kubectl config
助你管理Kubernetes集群的配置信息。通过kubectl config命令,可添加、修改、删除kubeconfig文件中存储的Kubernetes集群、用户、命名空间、证书、API服务器等配置信息。
kubeconfig文件是YAML格式的配置文件,其中包含多个Kubernetes集群的信息。使用kubectl config命令可以更轻松地在不同的Kubernetes集群和命名空间之间切换和操作,提高Kubernetes管理的效率。
javaedge@JavaEdgedeMac-mini ~ % kubectl config view
apiVersion: v1
clusters:
- cluster:
certificate-authority-data: DATA+OMITTED
server: https://127.0.0.1:6443
name: docker-desktop
contexts:
- context:
cluster: docker-desktop
user: docker-desktop
name: docker-desktop
current-context: docker-desktop
kind: Config
preferences: {}
users:
- name: docker-desktop
user:
client-certificate-data: REDACTED
client-key-data: REDACTED
javaedge@JavaEdgedeMac-mini ~ % kubectl config get-contexts CURRENT NAME CLUSTER AUTHINFO NAMESPACE * docker-desktop docker-desktop docker-desktop
kubectl cluster-info
获取当前Kubernetes集群的信息和状态。该命令会返回Kubernetes集群的API服务器地址、服务地址范围、DNS服务IP地址等信息,以及Kubernetes集群的状态信息,包括节点状态、Pod状态、网络状态等。通过使用kubectl cluster-info命令可以帮助您快速了解Kubernetes集群的健康状态和基本信息,以便更好地了解和管理Kubernetes集群。
vaedge@JavaEdgedeMac-mini ~ % kubectl cluster-info Kubernetes control plane is running at https://127.0.0.1:6443 CoreDNS is running at https://127.0.0.1:6443/api/v1/namespaces/kube-system/services/kube-dns:dns/proxy To further debug and diagnose cluster problems, use 'kubectl cluster-info dump'.
kubectl get
获取Kubernetes集群中的资源对象的信息。可获取Pod、Node、Service、Deployment、ConfigMap、Secret等不同类型的资源对象的详细信息,如资源的名称、命名空间、状态、标签、IP、端口等信息。kubectl get命令可以帮助您监控和管理您的Kubernetes集群中的资源对象。
kubectl get pods
可获取Kubernetes集群中所有的Pod资源对象,并显示它们的名称、所属命名空间、状态、IP地址、节点名称等基本信息。 -o wide 参数则会扩展输出的信息,包括显示Pod所在的节点名称、节点IP地址、Pod的调度情况等详细信息。这些详细信息有利于用户更好地了解和跟踪Kubernetes资源对象的状态,便于用户进行资源的调度和管理。在排查或解决Kubernetes应用程序故障时,kubectl get pods -o wide 命令也是有用工具。
kubectl get pods -o wide

docker network inspect bridge
[
{
"Name": "bridge",
"Id": "e6a5227c83898fa2904259426de838145d62539d01fb7f3fe241f65db38a3c3b",
"Created": "2020-12-30T02:51:44.917984338Z",
"Scope": "local",
"Driver": "bridge",
"EnableIPv6": false,
"IPAM": {
"Driver": "default",
"Options": null,
"Config": [
{
"Subnet": "172.17.0.0/16",
"Gateway": "172.17.0.1"
}
]
},
"Internal": false,
"Attachable": false,
"Ingress": false,
"ConfigFrom": {
"Network": ""
},
"ConfigOnly": false,
"Containers": {},
"Options": {
"com.docker.network.bridge.default_bridge": "true",
"com.docker.network.bridge.enable_icc": "true",
"com.docker.network.bridge.enable_ip_masquerade": "true",
"com.docker.network.bridge.host_binding_ipv4": "0.0.0.0",
"com.docker.network.bridge.name": "docker0",
"com.docker.network.driver.mtu": "1500"
},
"Labels": {}
}
]
- 另一种进入nginx容器的方法

kubectl exec [POD] [COMMAND] is DEPRECATED and will be removed in a future version. Use kubectl exec [POD] -- [COMMAND] instead.
因为刚才创建的 nginx pod 里只有一个容器,所以我们就进入了那个。可如果nginx pod 里有俩容器,默认只会进第一个,如何进第二个呢?
kubectl describe pods nginx
➜ pod-basic kubectl describe pods nginx
Name: nginx
Namespace: default
Priority: 0
Node: docker-desktop/192.168.65.3
Start Time: Wed, 30 Dec 2020 12:35:54 +0800
Labels: app=nginx
Annotations: <none>
Status: Running
IP: 10.1.0.6
IPs:
IP:
Containers:
nginx:
Container ID: docker://f4e45055b4b33430ecd775494c6bd8a8fe0c351ab1333016fcdc588182f40e41
Image: nginx
Image ID: docker-pullable://nginx@sha256:4cf620a5c81390ee209398ecc18e5fb9dd0f5155cd82adcbae532fec94006fb9
Port: 80/TCP
Host Port: 0/TCP
State: Running
Started: Wed, 30 Dec 2020 12:40:42 +0800
Ready: True
Restart Count: 0
Environment: <none>
Mounts:
/var/run/secrets/kubernetes.io/serviceaccount from default-token-tqpkf (ro)
Conditions:
Type Status
Initialized True
Ready True
ContainersReady True
PodScheduled True
Volumes:
default-token-tqpkf:
Type: Secret (a volume populated by a Secret)
SecretName: default-token-tqpkf
Optional: false
QoS Class: BestEffort
Node-Selectors: <none>
Tolerations: node.kubernetes.io/not-ready:NoExecute op=Exists for 300s
node.kubernetes.io/unreachable:NoExecute op=Exists for 300s
Events:
Type Reason Age From Message
---- ------ ---- ---- -------
Normal Pulled 60m kubelet Successfully pulled image "nginx" in 35.578083503s
Normal Created 60m kubelet Created container nginx
Normal Started 60m kubelet Started container nginx
删除资源
# 删除一个配置文件对应的资源对象 kubectl delete -f xxx.yaml # 删除名字为baz或foo的pod和service kubectl delete pod,service baz foo # -l 参数可以删除包含指定label的资源对象 kubectl delete pods,services -l name=myLabel # 强制删除一个pod,在各种原因pod一直terminate不掉的时候很有用 kubectl delete pod foo --grace-period=0 --force
kubectl delete pods imagename
更新资源
# 将foo.yaml中描述的对象扩展为3个 kubectl scale --replicas=3 -f foo.yaml # 增加description='my frontend'备注,已有保留不覆盖 kubectl annotate pods foo description='my frontend' # 增加status=unhealthy 标签,已有则覆盖 kubectl label --overwrite pods foo status=unhealthy
- kubectl scale rs nginx --replicas=2 更新某 pod 内集群数


创建资源
# 创建一个service,暴露 nginx 这个rc kubectl expose deployment nginx-deployment --type=NodePort

kubectl get svc
切换上下文
kubectl config use-context xxx 即可#云原生##k8s##kubernetes#


