pod

k8s中的Pod的状态CrashLoopBackOff

旧巷老猫 提交于 2020-02-04 00:41:26
现象如下: [root@k8s1 ~]# kubectl get pod NAME READY STATUS RESTARTS AGE eureka-server-65695bbdc8-49b6v 0/1 CrashLoopBackOff 5 4m32s [root@k8s1 ~]# kubectl get pod NAME READY STATUS RESTARTS AGE eureka-server-65695bbdc8-49b6v 0/1 CrashLoopBackOff 5 5m16s 查找原因及解决如下: [root@k8s1 ~]# kubectl describe pod eureka-server-65695bbdc8-49b6v Name: eureka-server-65695bbdc8-49b6v Namespace: default Priority: 0 Node: k8s3/192.168.180.144 Start Time: Mon, 03 Feb 2020 21:03:24 +0800 Labels: app=eureka-server pod-template-hash=65695bbdc8 Annotations: <none> Status: Running IP: 10.244.2.2 IPs: <none> Controlled By:

K8S 之 kubectl详解

妖精的绣舞 提交于 2020-02-03 18:43:16
一、kubectl陈述式管理方法 kubectl小洁: kubectl是官方的CLI命令行工具,用于apiserver进行通信,将用户在命令行输入的命令,组织并转化为apiserver能识别的信息,进而实现管理k8s各种资源的一种有效途径。 1、查看当前集群所有命名空间 [root@test-nodes1 ~]# kubectl get namespace NAME STATUS AGE default Active 42h kube-node-lease Active 42h kube-public Active 42h kube-system Active 42h 2、查看default命名空间下的所有资源 [root@test-nodes1 ~]# kubectl get all -n default NAME READY STATUS RESTARTS AGE pod/nginx-ds-76fr8 0/1 ImagePullBackOff 0 39h pod/nginx-ds-zz7jn 0/1 ErrImagePull 0 39h pod/nginx-ds1-qg45q 1/1 Running 0 39h pod/nginx-ds1-whnmv 1/1 Running 0 39h #pod资源 NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S

13.调度器、预选策略及优选函数、高级调度方式

假如想象 提交于 2020-02-03 17:35:16
参见:调度器、预选策略与优选函数 https://www.cnblogs.com/weiyiming007/p/10560518.html 一、前言 master上运行着三个最核心的组件,apiserver、scheduler、controller manager。此外,master还依赖于ectd存储节点,最好ectd是有冗余能力的集群。 1、调度器(scheduler) master上的scheduler控制着pod运行在哪个node上,默认用的default-scheduler(用describe时详情里可以看到用的哪个调度器); 调度器的调度信息存储在master上的etcd里面,apiserver负责和etcd通信; kubelet运行在node节点上,监控着Node节点上的pod状态,并参与pod的创建等工作; kube-proxy也运行在node节点上,它监控着service资源的变动, 然后将其在当前节点上创建为iptables或ipvs规则。Kube-proxy是管理service的组件; kubelet和kube-proxy都要连接master上的apiserver去获取定义信息; 2、调度过程 预选策略(predicate) :先排除那些完全不符合此pod运行法则的节点,有两个维度来排除,一个是最低资源需求(request),即节点必须满足此Pod的最低资源

k8s之安全信息(Secret)及配置信息(ConfigMap)

久未见 提交于 2020-02-03 15:22:19
Secret secret也是k8s中的一个资源对象,主要用于保存轻量的敏感信息,比如数据库用户名和密码,令牌,认证密钥等。 我们可以将这类敏感信息放在secret对象中,如果把它们暴露到镜像或者pod spec中稍显不妥,将其放在secret对象中可以更好地控制及使用,并降低意外暴露的风险。 Secret可以使用volume或者环境变量的方式来使用这些轻量级数据。 Secret有三种类型: Service Account:用来访问kubernetes API,由k8s自动创建,并且会自动挂载到pod的/run/secrets/kubernetes.io/serviceaccount 目录中。 Opaque:base64编码格式的Secret,用来存储密码,密钥等。 kubernetes.io/dockerconfigjson: 用来存储私有docker registry的认证信息。 secret可以通过命令行或YAML文件来创建,假设我们需要存放在secret对象中的信息: 1, 用户名:root 2,密码:123456 1,创建Secret 创建Secret有以下四种方法: 1.1 通过--from-literal(以文字的方法创建) [root@master ~]# kubectl create secret generic mysecret --from-literal

k8s免安装-使用kubectl部署Pod, Deployment, LoadBalancer

╄→尐↘猪︶ㄣ 提交于 2020-02-01 19:42:50
此文首发于我的Jekyll博客: zhang0peter的个人博客 如果你想要从零开始搭建自己的k8s集群参考我的这篇博客,预计花费时间为1天: 从零开始在ubuntu上安装和使用k8s集群及报错解决 自己搭建k8s集群的难点之一是需要3台ubuntu虚拟机,要求电脑至少10G内存:操作系统4G内存,3台虚拟机需要6G内存。 另一个难度是对初学者来说,搭建太复杂了。 如果你不想手动搭建集群,只想体验和使用kubernetes集群,推荐使用 digitalocean 的 kubernetes 集群服务,自动搭建,无需安装。 digitalocean 的 kubernetes 集群提供3台ubuntu虚拟机(node),每台1核CPU,2G内存,共30$一个月,体验一天只要1$。 通过我的链接在 digitalocean 注册的新用户,可以获得100美元的2个月使用权,相当于前2个月免费用: DigitalOcean – sign up 创建kubernetes集群后,DO会提醒你使用 kubectl 或者 doctl 操作集群,我推荐 kubectl 这个通用工具。 在本地linux上安装 kubectl ,通过 kubectl 操作 k8s 集群。 echo "deb https://mirrors.aliyun.com/kubernetes/apt/ kubernetes

pod控制器

三世轮回 提交于 2020-02-01 15:06:59
1 , 资源的清单格式: 一级字段:apiVersion(group/version), kind, metadata(name,namespace,labels,annotations, ...), spec,status(只读) 查看字段说明:kubectl explain pods 查看二级字段说明(例):kubectl explain pods.metadata 查看三级字段说明(例):kubectl explain pods.spec.containers •nodeSelector <map[string]string>:节点标签选择器 •nodeName <string> •annotations:与label不同的地方在于,它不能用于挑选资源对象,仅用于为对象提供“元数据” ◆Pod生命周期中的重要行为: •初始化容器 •容器探测: •liveness:存活性探测 •readiness:就绪性探测 •lifecycle:生命周期;定义启动后(poststart)和终止前(prestop)的钩子行为。 •查看帮助: kubectl explain pods.spec.containers.livenessProbe kubectl explain pods.spec.containers.livenessProbe.exec kubectl explain pods

K8s Deployment YAML 名词解释

本秂侑毒 提交于 2020-02-01 09:06:29
Deployment 简述 Deployment 为 Pod 和 ReplicaSet 提供了一个声明式定义 (declarative) 方法,用来替代以前的 ReplicationController 更方便的管理应用。 作为最常用的 Kubernetes 对象, Deployment 经常会用来创建 ReplicaSet 和 Pod ,我们往往不会直接在集群中使用 ReplicaSet 部署一个新的微服务,一方面是因为 ReplicaSet 的功能其实不够强大,一些常见的更新、扩容和缩容运维操作都不支持, Deployment 的引入就是为了支持这些复杂的操作。 Deployment API 版本对照表 Kubernetes 版本 Deployment 版本 v1.5-v1.15 extensions/v1beta1 v1.7-v1.15 apps/v1beta1 v1.8-v1.15 apps/v1beta2 v1.9 apps/v1 Deployment 一个典型的用例 一个典型的用例如下: 使用 Deployment 来创建 ReplicaSet。ReplicaSet 在后台创建 pod。检查启动状态,看它是成功还是失败。 然后,通过更新 Deployment 的 PodTemplateSpec 字段来声明 Pod 的新状态。这会创建一个新的 ReplicaSet

[kubernetes]9-3 Scheduler --- 玩转pod调度(下)

别来无恙 提交于 2020-02-01 06:02:53
9-3 Scheduler --- 玩转pod调度(下) 创建web-dev-pod.yaml 验证pod的亲和性 apiVersion: apps/v1 kind: Deployment metadata: name: web-demo-pod namespace: dev spec: selector: matchLabels: app: web-demo-pod replicas: 1 template: metadata: labels: app: web-demo-pod spec: containers: - name: web-demo-pod image: harbor.pdabc.com/kubernetes/web:v3 ports: - containerPort: 8080 affinity: podAffinity: requiredDuringSchedulingIgnoredDuringExecution: - labelSelector: # 和app 名为web-demo的pod 运行在一起 matchExpressions: - key: app operator: In values: - web-demo # 运行的条件 会运行在同一个节点 topologyKey: kubernetes.io/hostname # 倾向于和名为web

C++11 POD类型

邮差的信 提交于 2020-02-01 04:27:04
在C++中,声明自定义的类型之后,编译器会默认生成一些成员函数,这些函数被称为默认函数。其中包括 (1)构造函数 (2)拷贝构造函数 (3)拷贝赋值构造函数 (4)移动构造函数 (5)移动拷贝函数 (6)析构函数。 另外,编译器还会默认生成一些操作符函数,包括 (7)operator , (8)operator & (9)operator && (10)operator * (11)operator -> (12)operator ->* (13)operator new (14)operator delete 【1】显式缺省函数(=default) 但如果类的设计者又实现了这些函数的自定义版本后,编译器就不会去生成默认的版本。 有时候我们需要声明带参数的构造函数,此时就不会生成默认的构造函数,这样会导致类不再是POD类型(可参见随笔《 C++11 POD类型 》),从而影响类的优化: 1 #include <iostream> 2 using namespace std; 3 4 class Test 5 { 6 public: 7 Test(int i) : data(i) {} 8 9 private: 10 int data; 11 }; 12 13 int main() 14 { 15 std::cout << std::is_pod<Test>::value <<

kubernetes系列教程(九)初识Pod存储管理

帅比萌擦擦* 提交于 2020-01-31 21:25:18
写在前面 上一篇文章中 kubernetes系列教程(八)Pod健康检查机制 介绍了kubernetes中Pod健康检查机制,通过实战介绍了kubernetes中两种健康检查探针:livenessProbe存活检查,readinessProbe就绪检查,存活检查用于检查应用的可用性,就绪检查用于检查容器是否准备接受流量,健康检查包含三种探测的方法:exec命令行探测,tcpSocket端口检测,httpGet请求检测,分别适用于不同场景下的健康检查。接下来介绍 kubernetes系列教程 pod的存储管理。 kubernetes存储管理按照发展的历程,涉及到有Volume,PV(Persistent Volume)和PVC(PersistentVolumeClaims),和StorageClass,Volume是最早提出的存储卷,主要解决容器和数据存储的依赖关系,抽象底层驱动以支持不同的存储类型;使用Volume需要了解底层存储细节,因此提出了PV,Persistent Volume是由k8s管理员定义的存储单元,应用端使用PersistentVolumeClaims声明去调用PV存储,进一步抽象了底层存储;随着PV数量的增加,管理员需要不停的定义PV的数量,衍生了通过StorageClass动态生成PV,StorageClass通过PVC中声明存储的容量