k8s从不懂到上手

  • 安装单机版k8s,搭建学习环境
  • kubectl


安装单机版k8s,搭建学习环境

作为一个普通的java程序员,公司的高可用k8s集群轮不到自己去搭建,没必要花费过多精力在搭建k8s集群上。搭建k8s环境官方给的东西非常不好用,k8s卡人的点就在搭建上。k8s用起来一点都不难,和eclipse、idea差不多,就一工具,看一遍就会了。这里找了一篇别人写的博客,能够快速在自己的机器上搭建一个k8s集群。

需要先下载并启动docker docker不能用root用户启动,并且虚拟机最少分配两个cpu
systemctl start docker
minikube start 就行了

kubectl

kubectl 是k8s的命令行入口。kubectl help 可以看到详细的操作,kubectl create -help 可以看到create操作的更为详细的说明。这个工具的帮助文档写的非常详细。

node 也可以加label nodeSelector 将pod调度到指定的节点
kubectl annotate pod consumer-manual test-annocation=“foo bar” 给pod加注解
创建namespace 用kind Namespace就可以,或者kubectl create namespace custom-namespace
kubectl create -f consumer-manual.yaml -n custom-namespace 创建的时候指定namespace
kubectl delete po podname 删除pod 可以有多个 空格分开 删除要等默认30秒才会删掉
发现pod好像删不掉啊
kubectl delete po -l rel=canary 根据标签删除 对灰度发布很有用
kubectl delete ns custom-namespace 根据命名空间删除
kubectl delete po --all 删除所有pod
删不掉是因为 rc没有删 他会自动创建
kubectl delete all --all 把pod service rc啥的 全删掉 但是secret 删不掉 service几分钟后会重建
注意 yaml的大小写要注意 Pod 不能写成pod
查看容器log 用kubectl log pod名
查看前一个容器终止时的日志 加个 --previous
liveness 一定要设置初始延迟 不然应用程序还没准备阿訇哦 探针已经失败了
initialDelaySechods
节点故障rc创建的pod会被重新创建 如果一个node故障 就不需要手动弄pod了
rc根据标签来匹配pod
kubectl get rc 查看rc
改pod标签 匹配不了rc的标签选择器,则该pod rc不再管理,rc会再创建一个pod
kubectl delete rc consumer --cascade=false 删除rc不删除pod 解除了关联
replicaSet 比replicationcontroller 更好用
rc只能指定某个标签 rcSet可以指定多个标签
kubectl get rs 获取replicaSet
selector:
matchExpressions:
- key: app
operator: In
values:
- consumer
In 表示label的值必须与其中一个指定的value匹配
NotIn 表示哪个都不要匹配上
Exists 必须包含一个指定名称的标签 不关注值
DoesNotExist pod不得包含指定名称的标签 ,不关注值
删除rs kubectl delete rs consumer
daemonSet 让每个节点运行一个pod 也可以指定特定的节点