一直学一直嗨,一直嗨一直学

Kubernetes—>Pod的状态为Evicted

遇到的问题: kubectl get pods 发现很多pod的状态为evicted。 原因 eviction,即驱赶的意思,意思是当节点出现异常时,kubernetes将有相应的机制驱赶该节点上的Pod。 多见于资源不足时导致的驱赶。 更多详情参考 kubernetes的eviction机制 解决方案 排查资源和异常原因,防止新的驱赶产生 使用如下命令删除旧驱赶的遗留 kubectl get pods | grep Evicted | awk '{print $1}' | xa...

kubeadm方式修改ipvs模式

kubectl edit configmap kube-proxy -n kube-system ... 43 mode: "ipvs" ... 删除pod,会自动拉起 kubectl delete pod kube-proxy-btz4p -n kube-system 查看是否启用ipvs kubectl logs kube-proxy-wwqbh -n kube-system 注: 1、 kube-proxy配置文件以configmap方式存储 2、 如果让所有节点生效,需要重建所有节点kube-proxy pod 原文出处:myit -> https://myit.icu...

编写DaemonSet控制器的yaml文件注意事项

正常yaml: apiVersion: apps/v1 kind: DaemonSet metadata: name: daemonset-example labels: app: daemonset spec: selector: matchLabels: name: daemonset-example template: metadata: labels: name: daemonset-example spec: containers: - name: daemonset-example image: nginx:1.17 ...

Kubernetes扩缩容Pod

扩容deployment控制器下的nginx-app的Pod的副本数 kubectl scale deployment nginx-app --replicas=3 缩容deployment控制器下的nginx-app的Pod的副本数 kubectl scale deployment nginx-app --replicas=1 扩容执行资源清单的Pod的副本数 kubectl scale --replicas=6 -f rs.yaml 缩容执行资源清单的Pod的副本数 kubectl scale --replicas=3 -f rs.yaml 原文出处:myit -> https://my...

为什么不能在同一个Pod中创建两个使用相同端口的容器

实验前序: 通过一个简单的实验,告诉大家,如何去避免错误,如何排查错误,解决思路。 不说了,直接开怼实验 创建一个yaml文件: [root@k8s-master ~]# cat pod-1.yaml apiVersion: v1 kind: Pod metadata: name: test-pod labels: app: test version: v2 spec: containers: - name: nginx imagePullPolicy: IfNotPresent image: nginx:1....

Kubernetes通过端口转发映射本地端口到指定的Pod应用端口

将一个或多个本地端口转发到pod。这个命令要求节点安装“socat”。 使用资源类型/名称,如deployment/mydeployment来选择pod。如果省略,资源类型默认为’pod’。 如果有多个pod匹配标准,将自动选择一个pod。转发会话结束 当选择的pod终止时,需要重新运行该命令来恢复转发。 Examples: # Listen on ports 5000 and 6000 locally, forwarding data to/from ports 5000 and 6000 in t...

Kubernetes配置镜像中Hosts文件的域名解析

一、遇到的问题 最近,给公司搭建的持续集成过程中,由于每次执行任务时都是新创建一个 Kubernetes Pod 执行的,在执行过程中经常出现 DNS 解析错误问题,如下: stdout: stderr: fatal: unable to access 'http://git.xxx.cn/mydlqcloud-xxxx/': Could not resolve host: git.xxxx.cn 经过排查物理机 DNS 和 CodeDNS 插件,都没找出问题所在,所以只能归咎于公司 DNS 服务器问题导...

Kubernetes—>Pod的状态为Evicted

遇到的问题: kubectl get pods 发现很多pod的状态为evicted。 原因 eviction,即驱赶的意思,意思是当节点出现异常时,kubernetes将有相应的机制驱赶该节点上的Pod。 多见于资源不足时导致的驱赶。 更多详情参考 kubernetes的eviction机制 解决方案 排查资源和异常原因,防止新的驱赶产生 使用如下命令删除旧驱赶的遗留 kubectl get pods | grep Evicted | awk '{print $1}' | xa...

K8s设置Pod自动扩缩容

kubectl autoscale rc mysql-slave --min=1 --max=10 --cpu-percent=50 参数: –min (容器数量下限) –max (容器数量上限) –cpu-percent (CPU使用率达到指定百分比) 容器CPU使用率上升至50%以上时,自动扩充容器数量 容器CPU使用率下降至50%以上时,自动缩减容器数量 原文出处:myit -> https://myit.icu/index.php/archives/1027/

解决一次K8s的ingress-nginx-controller的Pod为Pending

问题解释: 不知道怎么回事,ingress-nginx-controller就出问题了,Pod状态显示Pending 通过describe查看Pod信息,出现以下报错 Events: Type Reason Age From Message ---- ------ ---- ---- ------- Warning Failed 20m (x74236 over 12d) kubelet Error: ImagePullBackOff Normal BackOff 5m2...

修改kubernetes集群中Node的名字

1. kubeadm搭建的集群 修改之前节点信息如下: # kubectl get node NAME STATUS ROLES AGE VERSION k8s-master Ready master 95d v1.17.2 k8s-node01 Ready node01 95d v1.17.2 k8s-node02 Ready node02 95d v1.17.2 (1)、修改主机名 hostnamectl set-hostname k8s-node03 (2)、删除node节点 kubectl delete nodes k8s-node02 (3...

在Kubernetes中让nginx容器热加载配置文件

Nginx作为WEB服务器被广泛使用。其自身支持热更新,在修改配置文件后,使用nginx -s reload命令可以不停服务重新加载配置。然而对于Dockerize的Nginx来说,如果每次都进到容器里执行对应命令去实现配置重载,这个过程是很痛苦的。本文介绍了一种kubernetes集群下nginx的热更新方案。 首先我们创建正常的一个nginx资源,资源清单如下: apiVersion: v1 kind: ConfigMap metadata: ...

Kubeadm搭建单master节点的Kubernetes集群

1. 环境准备 3个节点,都是 Centos 7.6 系统,内核版本:3.10.0-957.12.2.el7.x86_64,在每个节点上添加 hosts 信息: $ cat /etc/hosts 172.16.1.128 k8s-master 172.16.1.129 k8s-node01 172.16.1.130 k8s-node02 禁用防火墙: $ systemctl stop firewalld $ systemctl disable firewalld 禁用SELINUX: $ setenforce 0 $ cat /etc/selinux/config SELINUX=disabled 创建/et...

Kubeadm搭建高可用Kubernetes集群

最近经常有朋友问我有没有用kubeadm搭建高可用集群的文档,说实在的我确实没有,我自己测试的话就用kubeadm单master版,公司用的话就用二进制搭建的。所以就找了个下班时间搭建测试了一番。希望对大家有帮助!如果觉得有用的话就帮忙点个关注或转发吧,哈哈~ 1. 节点规划信息 2. 基础环境配置 2.1 环境信息 2.2 环境初始化 (1)、配置主机名,以k8s-master01为例 hostnamectl set-h...

Etcd集群常用操作

1. 备份 备份策略: 每两个小时用命令对etcd进行备份 备份数据保留2天 ETCDCTL_API=3 /opt/etcd/bin/etcdctl snapshot save /root/backup/etcd_$(date "+%Y%m%d%H%M%S").db 2. 恢复 (1)、停止kube-apiserver,确保不会再写入数据 systemctl stop kube-apiserver (2)、停止所有节点etcd systemctl stop etcd (3)、将etcd节点上原有的数据目录备份(具体的目录可以在etcd的配置...

修改kubeadm搭建集群的证书时间

(1)、查看当前的证书时间 # kubeadm alpha certs check-expiration [check-expiration] Reading configuration from the cluster... [check-expiration] FYI: You can look at this config file with 'kubectl -n kube-system get cm kubeadm-config -oyaml' CERTIFICATE EXPIRES RESIDUAL TIME CERTIFICATE AUTHORITY EXTERNALLY MANAGED...

K8s中污点(Taint)详解及命令

1、污点 ( Taint ) 的组成 使用kubectl taint命令可以给某个Node节点设置污点,Node被设置上污点之后就和Pod之间存在了一种相斥的关系,可以让Node拒绝Pod的调度执行,甚至将Node已经存在的Pod驱逐出去 每个污点的组成如下: key=value:effect 每个污点有一个 key 和 value 作为污点的标签,其中 value 可以为空,effect 描述污点的作用。 当前 taint effect 支持如下三个选项: NoSched...

使用kubectl-debug诊断kubernetes集群

kubectl-debug是K8S中Pod的诊断工具,它通过启动一个排错工具容器,并将其加入到目标业务容器的pid, network, user 以及 ipc namespace 中,这时我们就可以在新容器中直接用 netstat, tcpdump 这些熟悉的工具来解决问题了, 而业务容器可以保持最小化, 不需要预装任何额外的排障工具。 其主要有两部分组成: kubectl-debug工具,是一个二进制文件 debug-agent,部署在node节点,用于启...