kubernetes怎么快速入门和应用?

40 阅读3分钟

开启掘金成长之旅!这是我参与「掘金日新计划 · 12 月更文挑战」的第13天

编者按:

生产环境部署[k8s]后,免不了要天天和k8s命令行打交道,所以要掌握一些小技巧常识,提升咱们使用K8s的工作效率,下面就由我为大家介绍,共同学习。

1、kubernetes 命令补全

首先就得说说命令补全,但是我们一般用的是linux 基础命令的补全,对于k8s来说就得有k8s专用的命令补全包,那该怎么安装呢。步骤如下:

(1) 安装bash-completion包,没有这么包就不能使用k8s补全,所以得先安装

yum install bash-completion -y

(2) 然后执行[bash-completion]

source /usr/share/bash-completion/bash_completion

(3) 加载[kubectl completion](

source <(kubectl completion bash)

(4) 然后就可以使用了,如果没安装就会报错

Kubectl [create ns]

(5) 别着急,上面只是在当前shell的自动补全,那怎么永久生效

echo "source <(kubectl completion bash)" >> ~/.bashrc 这样就可以在bash shell中永久添加自动补全

2、创建对象

Kubernetes配置可以使用yaml或者json定义,可以使用的文件扩展名有.yaml、.yml、.json

(1) 创建一个资源

kubectl apply -f ./cillianpod.yaml

(2) 创建多个资源怎么办?

kubectl apply -f ./cillian1.yaml -f ./cillian2.yaml

(3) 创建基于目录下所有的清单文件创建资源

kubectl apply -f ./dir

(4) 从一个url地址创建

kubectl apply -f 

(5) 创建一个定时任务,间隔一分钟

kubectl create cronjob hello --image=busybox:1.28 --schedule="*/1 * * * *" -- echo "Hello World"

3、查看以及查找资源

(1) 列出当前[命名空间]下的全部 Pods,并显示更详细的信息

kubectl get pods -o wide

(2) 获取一个 pod 的 YAML

kubectl get pod cillian-pod -o yaml

(3) 输出node、pod详细信息

kubectl describe nodes my-node或者pod

(4) 列出当前命名空间下所有的service,并按名称排序

kubectl get services --sort-by=.metadata.name

(5) 列出 Pods,按重启次数排序,这个命令还是很实用的

kubectl get pods --sort-by='.status.containerStatuses[0].restartCount'

(6) 获取当前命名空间中所有运行的[pods]

kubectl get pods --field-selector=status.phase=Running

(7) 显示所有 Pods 的标签

kubectl get pods --show-labels

(8) 列举所有 Pods 中初始化容器的容器 ID(containerID),在清理停止的容器时可以避免删除初始化的容器

kubectl get pods --all-namespaces -o jsonpath='{range .items[].status.initContainerStatuses[]}{.containerID}{"\n"}{end}' | cut -d/ -f3

4、更新资源

(1)#滚动更新 "cillian" Deployment 的 "front" 容器镜像

kubectl set image deployment/frontend front=image:v2

(2)查看历史记录版本

kubectl rollout history deployment/frontend

(3)回滚到上次部署版本

kubectl rollout undo deployment/cillian

(4)回滚到特定版本

kubectl rollout undo deployment/cillian --to-revision=2.0.1

(5) 更新状态监控滚动升级直到完成

kubectl rollout status -w deployment/cillian

(6)轮替重启

kubectl rollout restart deployment/cillian

(7) 将某单容器 Pod 的镜像版本(标签)更新到 v4

kubectl get pod mypod -o yaml | sed 's/(image: myimage):.*$/\1:v4/' | kubectl replace -f -

(8)给pod添加标签

kubectl label pods my-pod new-label=awesome

(9)# 对 "cillian" Deployment 自动伸缩容

kubectl autoscale deployment cillian --min=2 --max=10

5、编辑资源

(1)编辑名为 cillian 的服务

kubectl edit svc/cillian

(2)将名为 'cillian' 的副本集伸缩到 3 副本

kubectl scale --replicas=3 rs/cillian

(3)# 在 "cillian.yaml" 文件中伸缩到3个副本

kubectl scale --replicas=3 -f cillian.yaml

(4)如果名为 [cillian] 的 Deployment 的副本当前是1,那么将它伸缩到 2

kubectl scale --current-replicas=1 --replicas=2 deployment/cillian

6、删除资源

(1)删除指定pod

kubectl delete -f ./cillian.yaml

(2)删除指定服务和pod

kubectl delete pod,service cillian1 cillian2

(3)删除指定标签的服务和pod

kubectl delete pods,services -l name=myLabel

(4)删除在 cillian 命名空间中全部的 Pods 和服务

kubectl -n cillian delete pod,svc --all

7、与pods交互

(1)查看日志

kubectl logs mypod

(2)进入pod

Kubectl exec mypod bash

(3)使用交互 shell 访问正在运行的 Pod (一个容器场景)

kubectl exec --stdin --tty my-pod -- /bin/sh

(4)复制文件

kubectl cp my-namespace/my-pod:/tmp/cillian /tmp/cillian

8、节点集群管理

(1)标记不可调度

kubectl cordon my-node

(2)驱逐节点

kubectl drain my-node

(3)取消不可调度标记

kubectl uncordon my-node

(4)显示主控节点和服务地址

kubectl cluster-info

(5)将集群状态输出到指定目录

kubectl cluster-info dump --output-directory=/path/to/cluster-state

好了,学会了这些使用技巧,相应付日常k8s没问题,下次分享有关k8s api探索的知识。