===========service
查看资源的定义:kubectl explain svc kubectl explain svc.spec
可以通过clusterip来指定svc的ip,否则svc的ip是动态分配的
服务名称:svc_name.svc_namespace.集群域名, 如 redis.default.svc.cluster.local.
其中集群域名为:svc.cluster.local.
定义服务时,若为nodeip,则要指定nodeport,在describe svc时,会看到两个端口,一个是port,一个是nodeport
给svc的sessionAffinity赋值为ClientIP后,来自同一个clien的请求会发送到同一个pod
查看coredns的svc: kubectl get svc -n kube-system
查看监听的端口: ss -tnl
查看节点资源占用情况:kubectl top nodes
docker compose 适合单机编排
docker swarm 适合集群编排
deployment只能管理无状态pod,有状态的需要用statefulset
HPA:水平伸缩控制器
service是靠标签选择器来关联对应的pod的
通过kube-proxy管理service
k8s有三种网络:节点网络、集群网络(service网络)和pod网络
flannel:支持网络配置
calico:既支持网络配置,还支持网络策略
========helm
https://helm.sh
官方可用的chart列表:https://hub.kubeapps.com
查看helm仓库:helm repo list
校验chart格式是否正确:
helm verify chart的目录
helm lint chart的目录
查看chart的详细信息:helm inspect chart的目录
查看release的详细信息:helm status release名称
在chart中可以添加requirements.yaml,来定义依赖的chart,或者将依赖的chart放到
charts目录下
https://docs.helm.sh/developing_charts/#charts
======= 配置代理,百度
export HTTPS_PROXY='http://www.ik8s.io:10080'
export NO_PROXY='172.20.0.0/16,127.0.0.0/8'
==========创建PV PVC
==============
通过systemctl enable实现开机自启
rpm -ql 包名 查看一个包安装了哪些文件
查看k8s的组件是否正常:kubectl get cs
在pod中 cat /etc/resolv.conf 查看 dns服务器的ip
查看更新过程:kubectl rollout satus deployment myapp
查看资源定义都有哪些字段用explain: kubectl explain pods ,返回结果里有对应的apiversion
在yaml中,command的值是列表
显示标签: kubectl get pods --show-lables
过滤:显示有标签app的pod: kubectl get pods -l app
显示有标签app的pod,以及标签的值: kubectl get pods -l app --show-labels
显示标签app的值是zcy的pod:kubectl get pods -l app=zcy --show-labels
kubectl get pods -l name,age
kubectl get pods -l name=zcy,age=18
kubectl get pods -l "name in/notin (zcy,abc)"
annotations:与label不同的地方在于:
它不能用于挑选资源对象,仅用于为对象提供“元数据”
查看版本:kubectl rollout history deployment myapp-deployment
emptyDir: pod删除后,存储卷也就没了。可以将宿主机的内存给pod当缓存用
configmap 通过环境变量注入时,若configmap的值变了,pod中环境变量的值是不变的,因为环境变量是在pod创建时生成的
configmap 通过存储卷的方式注入时,若configmap变了,存储卷也会变的
secret是将数据进行了base64编码,可以通过解码查看实际的值
如 echo *** | base64 -d
定义statfulset时,需要定义headless svc 和pvc,headless svc 用来保证pod的名称是固定的,不是随机的
stateful创建的pod的名字是可以直接被解析的:pod_name.svc_name.ns.svc.cluster.local
stateful支持分区更新,如
sts.spec.updateStrategy.rollingUpdate.partition=3,则大于等于3的pod才会被更新
起代理:kubectl proxy --port=8080
因为kubectl有认证信息,curl请求发给代理后,代理会携带上认证信息,然后把请求发送给api server
#快速得到一个yaml模板,支持create的资源都可以通过下面这种方式
kubectl create serviceaccount mysa -o yaml --dry-run >> mycout.yaml
kubectl get pods **** -n namespace -0 yaml --export >> mypod.yaml
kubectl describe 某个资源,会发现它包含一个secrete类型的token,这个token是用来认证的,和api server打交道时需要带上这个token
在没个namespace下面执行kubectl get secret都会看到有个叫token的secrete