k8s污点Taints与容忍详解Toleration

污点状态: NoSchedule:如果 Node 上带有污点 effect 为 NoSchedule,而 Node 上不带相应容忍,Kubernetes 就不会调度 Pod 到这台 Node 上。 PreferNoShedule:如果 Node 上带有污点 effect 为 PreferNoShedule,这时候 Kubernetes 会努力不要调度这个 Pod 到这个 Node 上。 NoExecute:如果 Node 上带有污点 effect 为 NoExecute,这个已经在 Node 上运行的 Pod 会从 Node 上驱逐掉。没有运行在 Node 的 Pod 不能被调度到这个 Node 上。 污点值: 污点 value 的值可以为 NoSchedule、PreferNoSchedule 或 NoExecute 污点属性: 污点是k8s集群的pod中的一种属性 污点属性分为以上三种 污点组成: …

kubectl create 一直处于 ContainerCreating 状态

使用命令查看 pods 状态,发现过去很久还是没有启动成功。 guoqingsongmbp:k8s guo$ kubectl get pods NAME READY STATUS RESTARTS AGE nginx 0/1 ContainerCreating 0 15s 1 2 3 继续查看详情 guoqingsongmbp:k8s guo$ kubectl describe pod nginx Name: nginx Namespace: default Node: minikube/192.168.99.105 Start Time: Tue, 25 Dec 2018 17:45:28 +0800 Labels: app=nginx Annotations: <none> Status: Pending IP: Containers: nginx: Container ID: Image: nginx …

Kubernetes——YAML文件

kubernetes——yaml文件的编写 yaml文件的结尾后缀名.yaml或者.yml都能够识别。 yaml文件就像脚本一样,可以放在任意的位置。 编写yaml文件需要用到的帮助手册的查看: kubectl explain deploy    #使用explain进行查看 kubectl explain deploy.spec.template   #可以一级一级查下去中间用.连接即可。 需要提前知道的: imagePullPolicy有三种模式 Nerver:不拉取镜像,如果本地没有镜像,那么容器起不来。 Always:默认选项,再使用yaml文件部署pod的时候,无论本地是否有镜像,都尝试拉取dockerhub上的镜像。 IfNotPresent:如果本地没有再去dockerhub上拉取。 yaml文件编写: #vim nginx.yaml apiVersion: extensions/v1beta1 kind: Deployment metadata: name: nginx1 spec: replicas: 2 template: metadata: labels: run: nginx spec: containers: – name: nginx image: nginx imagePullPolicy: IfNotPresent kubectl apply -f nginx.yaml kubectl delete -f nginx.yaml #也可以通过kubectl delete deploy …

查看pod启动失败原因

Focusing specifically on the example showed in the question. The setup is following: 1 GKE node with: 1 vCPU and 3.75 GB of RAM The resources scheduled onto this single node cluster: 4 Deployments where each have following fields: resources: requests: # <– IMPORTANT cpu: “100m” # <– IMPORTANT memory: “128Mi” limits: cpu: “100m” memory: …

Http: server gave HTTP response to HTTPS client 解决方法

系统:CentOS 7.6 Minimal 镜像:CentOS-7-x86_64-Everything-1810 Docker版本:18.09.6, build 481bc77156 如果没有 /etc/docker/daemon.json 这个文件,可以自己新建一个 情况1.这种写法是没有配置Docker加速器的情况下 在 /etc/docker/daemon.json 中设置以下: // 没有配置加速器的 // 单个私服的写法 { “insecure-registries”: [“registry的IP地址:端口号”] } // 多个私服的写法 { “insecure-registries”: [“registry1的IP地址:端口号”,”registry2的IP地址:端口号”] } 1 2 3 4 5 6 7 8 9 10 情况2.这种写法是配置过Docker加速器的情况下 在 /etc/docker/daemon.json 中设置以下: // 没有配置加速器的 // 单个私服的写法 { “registry-mirrors”: [“http://f1361db2.m.daocloud.io”], “insecure-registries”: [“registry的IP地址:端口号”] } // 多个私服的写法 { …

Rancher环境下的catalog创建

项目描述:在Rancher 的catalog界面中新加一个catalog,用这个catalog创建的stack可以正常工作。 实现环境 在局域网内四台vmware的ESX虚拟机中进行试验,其中A(192.168.4.33)机器上启动rancherServer,另外B(192.168.4.27)和C(192.168.4.46)通过AddHost的方式添加进来。B和C主机添加进去之后,对每个主机进行编辑,各自添加一个hostname=B和C的labels,本步骤是为了后面测试catalog的docker-compose.yml中指定在哪台机器上运行是否正确。D(192.168.4.12)主机作为Registry。选择添加进catalog的的应用是GoToMyCloud官网。(注释: GoToMyCloud是一款 用于远程办公的远程PC控制软件 ) 实现步骤: 说明:GoToMyCloud Web项目主要有两个服务器组成: A: mysql数据库服务器 此服务器用容器来代替,需要在容器启动的时候带动mysql服务程序,并在第一次启动时将数据库的表建出来。 B:tomcat网页服务器 需安装java和tomcat ,将GoToMyCloud网页代码做成java的war包放在tomcat的指定路径下,就可访问网页。war包中有个配置用于指定数据库的IP地址,地址在做war包的时候,为了利用容器之间的link关系,需要进行修改,将ip地址换成mysql服务器的容器名称,这里定下来用mysqlhost。 具体的实现步骤如下 ▼ 1.搭建私有registry; 2.编写Dockerfile,制作mysql和tomcat的镜像; 3.编写docker-compose.yml和rancher- compose.yml,为创建新的catalog做准备; 4.添加自定义的catalog到rancher UI中并测试。 搭建私有Registry 搭建Registry的步骤只有一步,运行如下命令就可以创建一个registry的容器: 在上面的这个命令中,一定要使用-v做个主机目录和regsitry目录的映射,这样的好处是容器崩溃了,数据依然还在,重建regsitry的话数据就可以恢复了。 客户端使用此registry时,如果不修改/etc/sysconfig/docker这个配置文件,会报“认证不过”的错误。在这个文件中找到OPTIONS这个key,在后面的值中加: –insecure-registry 192.168.4.12:80 保存后,通过service docker restart 就可以访问这个私有的Registry了。 编写Dockerfile,制作mysql和tomcat的镜像 mysql镜像制作: 1.使用docker pull ubuntu命令先取下一个ubuntu的镜像作为基础镜像; 2.基于这个镜像使用docker run –name ubuntu_mysql –it bash命令创建一个容器,在这个容器中使用apt-get install mysql-server,安装过程中会提示输入密码这个使用Cloudsoar12,安装完成后,需要配置mysql允许外部主机访问,这里要改两个地方: A. /etc/mysql/my.cnf中找到bind-addree=127.0.0.1这行,然后把他注释掉,然后重启mysql服务; B.使用mysql进入服务器,设置mysql允许其他主机访问。 3.将第二步中配置好的容器通过docker commit ubuntu 192.168.2.35:80/base _mysql做成一个服务镜像,其中192.168.2.35:80是搭建的私有Registry,做成镜像后,通过push命令将这个镜像提交到私有Registry中。 …