
kubernetes
Chai Yingchao
心态有多开放,视野就有多宽广
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
kubernetes cordon原理
那如果你的工作负载能够容忍这个污点,也就可以被调度到cordon的节点。如有些系统插件,就默认带有这样的容忍。cordon 节点可以使节点不接受调度pod。其实很简单,就是给节点增加了一个污点。当然也可以自己添加一个明确key容忍。原创 2022-09-15 11:17:47 · 835 阅读 · 0 评论 -
使用kubeadm 在Centos7.9 上安装k8s集群
使用kubeadm 在 centos7.9上安装kubernetes集群原创 2022-05-09 16:49:08 · 822 阅读 · 1 评论 -
ubuntu server 20.04使用kubeadm安装k8s v1.23.5
# 两台服务器配置hostsvim /etc/hosts192.168.199.116 master01192.168.199.117 node01#配置阿里云镜像加速cat <<EOF | sudo tee /etc/docker/daemon.json{ "registry-mirrors": ["https://zuiiwn49.mirror.aliyuncs.com"]}EOFsudo systemctl restart dockerswapoff -a原创 2022-04-20 21:57:53 · 1085 阅读 · 0 评论 -
kubernetes自动补全命令
root@master01 ~# apt -y install bash-completionroot@master01 ~#source /usr/share/bash-completion/bash_completionroot@master01 ~# source <(kubectl completion bash)root@master01 ~# echo "source <(kubectl completion bash)" >> ~/.bashrc原创 2022-04-20 10:00:41 · 453 阅读 · 0 评论 -
iptables icmp-host-prohibited引起的No route to host
如果数据包匹配到下边这条iptables规则,访问端则会报No route to host,抓包中可能会看到 unreachable - admin prohibited-j REJECT --reject-with icmp-host-prohibited报错看起来像是没有路由到目的主机,但实际是在一个局域网内。No route to host# telnet 192.168.10.10 8880Trying 192.168.10.10...telnet: connect to addres原创 2022-04-19 10:13:02 · 2618 阅读 · 0 评论 -
iptables -j MARK --set-xmark 解析
查看man和命令帮助,还有网上搜到的解释不是很清晰,所以验证了一下,并尽量将其解释的通俗易懂。MARK的作用MARK标记用于将特定的数据包打上标签,供Iptables配合TC做QOS流量限制或应用策略路由。格式--set-xmark value[/mask] 操作结果:ctmark = (ctmark AND NOT mask) XOR value重点(解释)就是先将 ctmark(原包)中的那些 mask标志出来的位清零(mask值为1的位,当然这里是转换为二进制后的位),然后再与给.原创 2022-04-16 09:42:49 · 5036 阅读 · 4 评论 -
使用etcdctl 获取 kubernetes etcd内容
kubernetes排错过程中可能需要连接到etcd库核对数据。通过etcdctl命令可以连接到库,查看etcd库中的key,value.# 创建一个etcdctl的别名# 证书的位置可以通过查看kubelet 运行参数获取到。--etcd-cafile,--etcd-certfile, --etcd-keyfile$ alias etcdctl='etcdctl --key=/var/lib/etcd/cert/etcd-server-key.pem --cert=/var/lib/etcd/cer原创 2022-03-27 17:05:23 · 866 阅读 · 0 评论 -
Kubernetes 根据 PID 获取 Pod 名称
在管理 Kubernetes 集群的过程中,我们经常会遇到这样一种情况:在某台节点上发现某个进程资源占用量很高,却又不知道是哪个pod运行的进程。总之需要根据PID查找pod名的需求。# 下边PID的值换成你要查询的PIDPID=2672238docker inspect --format '{{.Config.Hostname}}' $(cat /proc/$PID/cgroup|awk -F '/' '{print $5}' |awk -F 'docker-' '{print $2}' |cu原创 2022-03-25 16:28:52 · 1992 阅读 · 0 评论 -
【consul】在阿里云kubernetes集群上(AKS)通过Helm 安装consul集群
官方文档:https://www.consul.io/docs/k8s/installation/install官方文档总是多少会有些坑的如下是我整理的安装文档:#添加官方helm仓库helm repo add hashicorp https://helm.releases.hashicorp.com#确定可安装的版本helm search repo hashicorp/consul原创 2021-12-10 14:23:39 · 1095 阅读 · 0 评论 -
使用kube-prometheus 监控kubernetes 集群时kube-controller-manager和kube-scheduler Down并告警
kube-prometheus做为kubernetes监控套件非常简单方便。但在有些k8s集群中有些服务可能不能自动发现,或者能自动发现,但状态显示down(实际状态为up)。今天,先解决一下阿里云K8S集群(AKS)安装kube-prometheus之后kube-controller-manager和kube-scheduler这两个服务down状态的问题,在Prometheus中查看targets,结果类似如下截图。这是因为这两个服务,在阿里云的AKS中默认只监听127.0.0.1端口。虽然发现了原创 2021-12-09 15:48:44 · 2436 阅读 · 2 评论 -
设置Kubernetes master可调度pod
默认master是不能调度应用pod的。如果要允许master调度应用pod(即做master,也做为node节点使用)。可以使用如下命令:# 将所有master做为nodekubectl taint nodes --all node-role.kubernetes.io/master-# 将指定master做为node,以下两个命令任选其一kubectl taint nodes <NODE_NAME> node-role.kubernetes.io/master-kubectl ta原创 2021-11-10 09:48:18 · 2565 阅读 · 0 评论 -
Deployment和Statefulset 使用storageclass的 yaml
deployment 主要看PVC部分apiVersion: apps/v1 kind: Deployment metadata: name: tomcat-deployment labels: app: tomcat spec: replicas: 3 selector: matchLabels: app: tomcat minReadySeconds: 1原创 2021-11-16 12:20:55 · 3456 阅读 · 0 评论 -
Rancher rke升级K8S集群
生产环境先做好备份首先下载最新的rke版本,替换掉原来的版本wget http://rancher-mirror.cnrancher.com/rke/v1.3.2/rke_linux-amd64查看rke支持的k8s版本$rke config --list-version --allv1.20.12-rancher1-1v1.19.16-rancher1-1v1.21.6-rancher1-1v1.18.20-rancher1-修改cluster.yml配置文件注意这里是在原创 2021-11-10 14:24:21 · 1389 阅读 · 0 评论 -
设置默认storageclass
设置阿里云上默认的 storageclass kubectl patch sc alicloud-disk-efficiency -p '{"metadata": {"annotations": {"storageclass.beta.kubernetes.io/is-default-class": "true"}}}'原创 2021-11-10 10:29:08 · 1429 阅读 · 0 评论 -
Kubernetes删除一直处于terminating状态的namespace
k8s中namespace有两种常见的状态,即Active和Terminating状态,其中Terminating状态一般会比较少见,当对应的命名空间下还存在运行的资源,但该命名空间被删除时才会出现Terminating状态,这种情况下只要等待k8s本身将命名空间下的资源回收后,该命名空间将会被系统自动删除。以下介绍三种方法,推荐优先级由高到底,风险由低到高。第一种办法:首先可以尝试使用–force --grace-period=0 参数强制删除kubectl delete namespace &原创 2021-09-15 10:32:14 · 2400 阅读 · 0 评论 -
K8S 扩容storageclass类型的PVC
扩容之前最好先取消挂载,(处于挂载状态能否扩容没试过)先查看storageclass是否配置了允许动态扩容,看storageclass是否存在allowVolumeExpansion字段并且值为true。一般云厂商提供的storageclass都是允许动态扩容的。#kubectl get storageclass default -o yaml allowVolumeExpansion: true查看谁在使用要扩容的pv,查看pvc的状态#kubectl get pv#kubect原创 2021-07-26 10:47:21 · 3056 阅读 · 0 评论 -
K8S 使用calico 在多网卡主机上的问题
calico使用哪个网卡的ip,有它自己的发现策略机制,参见官方文档:https://docs.projectcalico.org/reference/node/configuration#ip-autodetection-methods这导致在多网卡(多ip)主机上,他的默认发现规则first-found可能并不是你想要的,导致的结果就是不通主机间pod ping不通。在主机上能ping通本机上的pod的ip。那么我们可以通过指定使用哪个网卡来规避这个问题kubectl set env daemo原创 2021-05-06 16:05:08 · 2130 阅读 · 0 评论 -
K8S强行删除资源
有时候删除pod或者其它资源可能遇到一直处于Terminating的状态。这时可以尝试使用参数强制删除。 kubectl delete namespace ingress-nginx --grace-period=0 --force但有时候强制删除也不行,还是一直处于Terminating状态。这时候可以describe一下资源状态。根据报错处理。还有一种特殊情况:存在 Finalizersk8s 资源的 metadata 里如果存在 finalizers,那么该资源一般是由某程序创建的,并且在原创 2021-04-02 09:23:35 · 2964 阅读 · 0 评论 -
K8S创建拉镜像secret或service account
kubectl create secret docker-registry <secret名称(docker-registry-secret)> --namespace=<命名空间名称> --docker-username=<镜像仓库用户名> --docker-password=<镜像仓库密码> --docker-server=<镜像仓库地址> 两种使用方式直接使用secretapiVersion: apps/v1kind: Deploy原创 2021-04-01 13:59:14 · 1516 阅读 · 0 评论 -
kubernetes 监控:获得全栈的可见性
微服务-现在已经成为我们建设基础设施的实际选择-自然的也为容器化铺平了道路。使用像Docker和kubernetes这样的容器编排工具,组织能够更快速的,更大规模的发布应用。但是,同时所有这些能力和自动化也带来了挑战,特别是在保持对这个短暂的基础设施的可见性方面(译者注:kubernetes pod是短暂的)。监控kubernetes工作负载kubernetes是复杂的(要确切的了解kubernetes是什么以及他是如何工作的,请阅读完整的手册)。为了顺利的使用它,需要同时监控多个组件。为了使你的监控翻译 2020-07-07 09:51:58 · 720 阅读 · 0 评论 -
【转】在Kubernetes的CoreDNS中插入自定义解析记录和外部DNS服务器
编辑coredns 的configmapkubectl edit configmap coredns -n kube-system(添加hosts块)apiVersion: v1data: Corefile: | .:53 { errors health kubernetes cluster.local in-addr.arpa ip6.arpa { pods insecure upstream原创 2020-06-19 10:05:16 · 2291 阅读 · 0 评论 -
jenkins agent 运行在kubernetes集群
使用 Jenkins Kubernetes Plugin创建PVC(可选)如果你的jekins agent需要持久化存储,可以通过创建PVC或者其它如hostpath方式实现。我的case中使用持久化存储作为maven仓库缓存,以避免每次都去中央仓库下载编译依赖。nfs-client是storageclass:的name,这里我使用了StorageClass作为动态存储kubectl create namespace jenkinskubeclt -n jenkins create -f jenk原创 2020-06-19 09:19:57 · 1786 阅读 · 0 评论 -
k8s 为pod配置静态DNS解析(相当于/etc/hosts文件)
当你的域名不能解析时,相当于需要配置/etc/hosts文件时,可以进行如下配置。注意是修改deploment/daemonset,不是直接修改pod。$kubectl edit daemonset/deployment database加入如下hostAliases配置hostAliases:- ip: "192.168.100.101" hostnames: - "database.ctwifi.cn"containers:- name: ......原创 2020-05-29 15:24:52 · 3351 阅读 · 1 评论 -
使用 RKE(Rancher Kubernetes Engine) 安装k8s集群
rke 安装k8s集群https://rancher.com/docs/rke/latest/en/installation/Docker 安装(略)如果你的docker配置了proxy,则no_proxy一定要配置好,或者安装完之后将代理关闭,再重启docker。否则可能导致意想不到的问题。配置hosts文件192.168.0.101 k8s-node1.ctwifi.cn192.168.0.102 k8s-node2.ctwifi.cn192.168.0.103 k8s-node3.ctw原创 2020-05-29 14:26:06 · 595 阅读 · 0 评论 -
K8S更新deployment镜像的两种方法
# kubectl set image deployment nginx nginx=registry.ctwifi.cn:5000/acloud2web/nginx:bba# kubectl patch deployment nginx --patch '{"spec": {"template": {"spec": {"containers": [{"name": "nginx","imag...原创 2019-11-19 15:09:29 · 6219 阅读 · 0 评论 -
【转】对比KUBERNETES和OPENSHIFT
10 most important differences between OpenShift and KubernetesOpenShift经常被其供应商Red Hat称为“企业Kubernetes”。 在本文中,我描述了OpenShift和Kubernetes之间的真正差异。 它经常令人困惑,因为Red Hat倾向于将其描述为PaaS,有时隐藏Kubernetes是OpenShift不可或...转载 2019-03-28 16:55:29 · 2796 阅读 · 0 评论 -
Docker in Docker
场景:jenkins slave运行在基于openshift或k8s的容器中,构建过程需要build 应用程序的docker image并push到docker 仓库,此时就需要docker命令。安装docker命令比较简单,但是运行docker build 命令需要启动docker服务。docker in docker 基本上有两种实现方式。一是挂载/var/run/docker.so...原创 2018-11-13 15:34:38 · 970 阅读 · 0 评论 -
DevOps 与 容器
Kubernetes Plugin of Jenkins原创 2018-11-04 15:47:50 · 366 阅读 · 0 评论 -
NFS挂载
安装配置NFS安装:yum -y install nfs-utils创建共享目录mkdir /NFSchown nfsnobody.nfsnobody /NFS(在特殊情况下可能需要给777权限:chmod 777 /NFS #如果不给777权限,客户端能正常挂载,但不能进入到此目录,也不能往目录下写入文件。权限问题有待进一步验证。#写入的文件权限为 nfsnobody.nfs...原创 2018-11-06 16:39:44 · 261 阅读 · 0 评论 -
OpenShift与kubernet 中的 pv,pvc配置
直接上yaml此例是使用NFS作为pv的底层这里需要注意的是pv与pvc的accessModes必须相同。#pv.yamlapiVersion: v1kind: PersistentVolumemetadata: name: nfs-pvspec: capacity: storage: 1Gi accessModes: - ReadWriteMany ...原创 2018-11-06 15:22:02 · 1530 阅读 · 0 评论 -
使用Kubeadm 安装k8s集群
#!/bin/shsystemctl stop firewalld && systemctl disable firewalld && sed -i s/“SELINUX=enforcing”/“SELINUX=disabled”/g /etc/selinux/config && sed -i s/"^SELINUXTYPE=targeted...原创 2018-10-13 22:29:53 · 325 阅读 · 0 评论