k8s学习笔记

 

 

===========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

 

posted on 2021-02-06 22:17  我和你并没有不同  阅读(151)  评论(0编辑  收藏  举报