配置kubectl自动补全
source <(kubectl completion bash)
node
节点查看日志
journalctl -u kubelet -f
kubectl get pods --show tables
标签的格式(键值对的格式)
查看master
节点的状态
kubectl get cs
kubectl api-resources | grep namespace
default #系统的默认命名空间
查看default命名空间下的所有资源
创建命名空间
kubectl create ns ky18(删除用delete)
区别
kubectl run
:用于创建一个自主式的/静态Pod
kubectl delete pod
增kubectl create deployment
:用于创建deployment
控制器管理的Pod
删kubectl delete deployment
改kubectl scale --replicas=
查kubectl get pod
若pod
无法删除,总是处于terminate
状态,则要强行删除pod
kubectl delete pod <pod-name> -n <namespace> --force --grace-period=0
service
的四种类型
nodeport
只支持四层转发,并且端口是有限的
如何查看一个service
绑定了几个节点
删除标签后会自动生成一个从而达到期望值
将删除的标签添加回来
K8S中的四种端口号:
containerPort
:容器内部进程使用的端口
Port
:为service
在clusterIP
上暴露的端口
targetPort
:容器映射在pod
上的端口
nodeport
:将端口映射到宿主机上,提供外部流量访问K8S集群中service
的入口
k8s集群内部:客户端--> clusterIP:port -- 通过 targetport --> podip:containerport
客户端--> clusterIP:port -- 通过 targetport --> podip:containerport
k8s集群外部:客户端 --> nodeIP:nodeport --通过 targetport--> podip:containerport
更新资源
kubectl set
回滚 kubectl rollout
可以回滚到上次的版本号
总结:
创建
kubectl create <资源类型> <资源名称> --image=<镜像名> 【--port= --relicas】
发布
kubectl expose <资源类型> <资源名称> --port= --target-port= --type=ClusterIP|NodePort|...
更新
kubectl set image <资源类型> <资源名称> <容器名>=<镜像名>
回滚
kubectl rollout undo <资源类型> <资源名称> #默认时回滚到上一个版本状态
--to-revision= #回滚到指定版本
kubernetes使用 (一)kubectl基础命令
kubectl
是用来管理kubernetes集群的一个命令行工具。可以用来对集群安装、管理应用服务( ̄▽ ̄)"
语法格式
kubectl [comand] [type] [name] [flags]
参数说明
#参数
comand #指定要对资源执行的操作
type #指定要操作的资源类型,资源类型是大小写
name #资源的名称,如果不指定则显示所有
flags #可选参数 例如: 可以用-s 或者-server参数指定k8s api server的地址和端口
一. 创建资源(create
)
1. 命令行创建
kubectl create deployment nginx --image=nginx:1.12
#参数说明
create #创建一个新的资源
deployment #资源类型为deployment,现在可以不需要知道这个是什么,可以简单理解为docker容器的一个控制器
nginx #资源的名称为 nginx
--image=nginx:1.12 #使用镜像为nginx:1.12
2. yaml
文件创建
cat > nginx-2.yaml <<EOF
apiVersion: apps/v1
kind: Deployment
metadata:
name: nginx-2
spec:
selector:
matchLabels:
app: nginx-te
replicas: 1
template:
metadata:
labels:
app: nginx-te
spec:
containers:
- name: nginx
image: nginx:1.12
EOF
部署
#需要-f指定要使用的yaml文件
kubectl create -f nginx-2.yaml
二. 查询资源(get)
[root@k8s-master01 ~]# kubectl get deployment
NAME READY UP-TO-DATE AVAILABLE AGE
nginx 1/1 1 1 52m
nginx-2 1/1 1 1 13m
#这是我们刚才创建的两个控制器nginx、nginx-2
#deployment是管理pod的一个控制器,他本身是不提供服务的,只是管理容器服务
#我们的控制器在创建后,默认是有一个副本(容器)运行的
[root@k8s-master01 ~]# kubectl get pod
NAME READY STATUS RESTARTS AGE
nginx-2-564757b54f-j7b8h 1/1 Running 0 16m #nginx-2 控制器的容器
nginx-75dbbf4545-gjtwg 1/1 Running 0 54m #nginx 控制器的容器
三. 更新资源(apply、edit)
1. apply
(基于yaml文件更新)
vi nginx-2.yaml
#修改
apiVersion: apps/v1
kind: Deployment
metadata:
name: nginx-2
spec:
selector:
matchLabels:
app: nginx-te
replicas: 1
template:
metadata:
labels:
app: nginx-te
spec:
containers:
- name: nginx
image: nginx:1.13 #我这里修改镜像版本
更新
[root@k8s-master01 ~]# kubectl apply -f nginx-2.yaml
Warning: kubectl apply should be used on resource created by either kubectl create --save-config or kubectl apply
deployment.apps/nginx-2 configured
#查看控制器的yaml文件 (-o yaml 查看资源的yaml文件)
[root@k8s-master01 ~]# kubectl get deployment nginx-2 -o yaml | grep image:
#返回
- image: nginx:1.13
#这里可以看到控制器的镜像已经修改为1.13版本
#通过apply更新的yaml文件,控制器被修改后 同时会关闭旧的副本(容器)
#然后基于新的yaml生成新的容器
[root@k8s-master01 ~]# kubectl get pod
NAME READY STATUS RESTARTS AGE
nginx-2-7dfdbcbc7d-ccg7d 1/1 Running 0 11m
nginx-75dbbf4545-gjtwg 1/1 Running 0 97m
2. edit
(基于vim在线修改资源)
#在线修改控制器nginx的信息
kubectl edit deployment nginx
#修改完成后wq保存退出
四. 删除资源(delete)
1. 基于yaml文件删除
kubectl delete -f nginx-2.yaml
#他会基于已有的yaml文件的名称信息,删除对应的资源信息
2. 基于控制器名称删除资源
#刚接触的时候陷入误区,老是想去删除运行的pod
#但是因为控制器会保持副本数量,删一个、建一个
#后来发现,(⊙o⊙)~原来是要删除控制器啊
#查看pod
[root@k8s-master01 ~]# kubectl get pod
NAME READY STATUS RESTARTS AGE
nginx-56c6cf99b6-2c9nr 1/1 Running 0 19m
#查看deployment控制器
[root@k8s-master01 ~]# kubectl get deployment
NAME READY UP-TO-DATE AVAILABLE AGE
nginx 1/1 1 1 118m
尝试删除pod
[root@k8s-master01 ~]# kubectl delete pod nginx-56c6cf99b6-2c9nr
pod "nginx-56c6cf99b6-2c9nr" deleted
#然后容器新建了
[root@k8s-master01 ~]# kubectl get pod
NAME READY STATUS RESTARTS AGE
nginx-56c6cf99b6-57g6r 1/1 Running 0 11s
删除控制器
[root@k8s-master01 ~]# kubectl delete deployment nginx
deployment.apps "nginx" deleted
#删除成功
[root@k8s-master01 ~]# kubectl get deployment
No resources found in default namespace.
#查看pod容器
[root@k8s-master01 ~]# kubectl get pod
No resources found in default namespace.
#删除成功
kubernetes默认是没有tab键补全的,需要手动设置一下
cat >> /etc/bashrc <<EOF
source <(kubectl completion bash)
EOF
source /etc/bashrc