New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
k8s生产实践 #41
Comments
https://k8smeetup.github.io/docs/tasks/administer-cluster/cpu-memory-limit/ 设置 Pod CPU 和内存限制 这个例子演示了如何限制 Kubernetes Namespace,以此来控制每个 Pod 的最小/最大资源限额。 另外,这个例子演示了当终端用户没有为 Pod 设置资源限额时,如何使用默认的资源限额。 Before you begin Katacoda 创建 Namespace 让我们创建一个名称为 limit-example 的 Namespace: $ kubectl create namespace limit-example $ kubectl get namespaces $ kubectl create -f https://k8s.io/docs/tasks/configure-pod-container/limits.yaml --namespace=limit-example $ kubectl describe limits mylimits --namespace=limit-example Pod cpu 200m 2 - - - 如果一个资源被指定了最大约束(在该例子中为 2 CPU 和 1Gi 内存),然后跨所有容器的该资源,限额必须被指定。 当尝试创建该 Pod 时,指定限额失败将导致一个验证错误。 注意,一个默认的限额通过在 limits.yaml 文件中的 default 来设置(300m CPU 和 200Mi 内存)。 如果资源(CPU 或内存)被设置限额,用户将在创建时得到一个错误,并指出了错误的原因。 首先让我们启动一个创建单容器 Pod 的 Deployment,来演示默认值是如何被应用到每个 Pod 上的: $ kubectl run nginx --image=nginx --replicas=1 --namespace=limit-example $ kubectl get pods --namespace=limit-example $ kubectl get pods nginx-2040093540-s8vzu --namespace=limit-example -o yaml | grep resources -C 8
让我们创建一个超过被允许限额的 Pod,通过使它具有一个请求 3 CPU 核心的容器: $ kubectl create -f https://k8s.io/docs/tasks/configure-pod-container/invalid-pod.yaml --namespace=limit-example $ kubectl create -f https://k8s.io/docs/tasks/configure-pod-container/valid-pod.yaml --namespace=limit-example $ kubectl get pods valid-pod --namespace=limit-example -o yaml | grep -C 6 resources
注意:在物理节点上默认安装的 Kubernetes 集群中,CPU 资源的 limits 是被强制使用的,该 Kubernetes 集群运行容器,除非管理员在部署 kubelet 时使用了如下标志: $ kubelet --help $ kubectl delete namespace limit-example 例如: 集群中每个节点有 2GB 内存。集群操作员不想接受内存需求大于 2GB 的 Pod,因为集群中没有节点能支持这个要求。 为了避免 Pod 永远无法被调度到集群中的节点上,操作员会选择去拒绝超过 2GB 内存作为许可控制的 Pod。 What’s next |
journalctl --since 15:00:00 -u kubelet |
查看job 通过job查看pods 查看pods 执行结果 |
label 操作
|
根据进程Id 获取容器id
|
k8s ingress nginx-ingress-controller:0.9.0-beta.5 body size大小控制 采用的注解
|
pod java 应用 jvm 参数设置
|
查看jvm 默认参数值
|
jvm Max memory = [-Xmx] + [-XX:MaxPermSize] + number_of_threads * [-Xss] |
jvm 参数调试
|
查看jvm 默认参数
|
根据MaxRAMFraction jvm 分配最大值
|
容器化之后jvm 参数调试
|
k8s 容器网络分析工具
|
/sys/fs/cgroup/memory/memory.stat
|
spring boot 容器化时,jvm参数配置https://medium.com/@cl4r1ty/docker-spring-boot-and-java-opts-ba381c818fa2 |
删除已完成的pod
|
k8s serviceaccount
can-i-connect-one-service-account-to-multiple-namespaces-in-kubernetes |
helmhelm init --upgrade -i registry.cn-hangzhou.aliyuncs.com/google_containers/tiller:v2.13.0 --stable-repo-url https://kubernetes.oss-cn-hangzhou.aliyuncs.com/charts |
istio
部署入门链接
安装配置
Bookinfo 应用
Ingress Gateway
Gateway
Virtual Service
设置 Sidecar
https://skyao.io/learning-istio/installation/minikube.html
https://readailib.com/2019/02/22/kubernetes/istio-minikube/
https://emacoo.cn/devops/istio-tutorial/
https://medium.com/faun/istio-step-by-step-part-10-installing-istio-1-4-in-minikube-ebce9a4e99c
https://www.jianshu.com/p/314500cce146
minikube 使用
minikube
测试部署的服务是否可用
httpbin-gateway 访问演示
获取端口
创建网关与虚拟服务
The text was updated successfully, but these errors were encountered: