kubespray安装

下载及导入镜像:

 

Ingress-Controller Troubleshooting

下午有个集群要做升级验证, 同事把developer-center的namespaces下的应用都删除重建了,后来发现paas平台打不开,查询nginx日志,应该是nginx-ingress出了问题 首先查看ingress-nginx-cotroller日志:

  可以修改deployment,使用  flag –v=XX来修改日志级别

–v=2 shows details using diff about the changes in the configuration in nginx –v=3 shows details about the service, Ingress rule, endpoint changes and it dumps the nginx configuration in JSON format –v=5 configures NGINX in debug mode 到api server的认证逻辑:

得确定下看是否是服务认证或kubeconfig导致的问题 ingress需要从 apiserver获得信息,是需要认证的,有两种认证方式: Service Account: This Read more…

calico问题解决

k8s node节点的calico报错: Liveness probe failed: Get http://localhost:9099/liveness: dial tcp [::1]:9099: connect: connection refused 日志如下: bird: Mesh_192_168_2_61: State changed to start Threshold time for bird readiness check: 30s 2020-11-19 05:59:37.686 [FATAL][4040] int_dataplane.go 824: Kernel’s RPF check is set to ‘loose’. This would allow endpoints to spoof their IP address. Calico requires Read more…

ansible安装k3s

一, ansible安装k3s集群 下载ansible安装k3s脚本: ansible-galaxy install xanmanning.k3s ansible role目录结构: ├── hosts.ini ├── roles │   ├── k3s │   │   ├── defaults │   │   │   └── main.yml │   │   ├── files │   │   │   ├── docker │   │   │   │   ├── bin │   │   │   │   │   ├── containerd │   │   │   │   Read more…

容器内更改系统时间

修改deploy, 增加如下:

截取部分deploy yaml配置:

  然后登录容器执行date -s “20200515 13:58:00” 即可更改时间

k8s利用反亲和性扩多实例

所有node文件az.txt, 其中1为zone1, 2为zone2, 3为zone3

run.sh

 

使用 Sealos 在 3 分钟内快速部署一个生产级别的 Kubernetes 高可用集群

前段时间,我们在 ​「使用 Kind 在 5 分钟内快速部署一个 Kubernetes 高可用集群」一文中介绍了如何使用 Kind 这个开箱即可快速部署 Kubernetes 高可用集群的神器,相信不少同学用上这个神器后大大的降低了 Kubernetes 集群的部署难度和提高了 Kubernetes 集群的部署速度。不过有一点比较遗憾的是 Kind 当前仅仅支持在本地快速构建一个开发或者测试环境,目前暂时还是不支持在生产环境中部署 Kubernetes 高可用集群的。 今天,我们就要给大家介绍另一款可以支持在生产环境中部署 Kubernetes 高可用集群的利器 Sealos。 什么是 Sealos ? Sealos 是一个 Go 语言开发的简单干净且轻量的 Kubernetes 集群部署工具,Sealos 能很好的支持在生产环境中部署高可用的 Kubernetes 集群。 Sealos 架构图 Sealos 特性与优势 支持离线安装,工具与部署资源包分离,方便不同版本间快速升级。 证书有效期默认延期至 99 年。 工具使用非常简单。 支持使用自定义配置文件,可灵活完成集群环境定制。 使用内核进行本地负载,稳定性极高,故障排查也极其简单。 Sealos 设计原则和工作原理 1. Read more…

kubernetes生产环境下的iptables安全配置

控制节点(主节点)所需要的端口如下: 协议 端口 服务 TCP 6443 k8s API server TCP 2379-2380 etcd server client API TCP 10250 Kubelet API TCP 10251 kube-scheduler TCP 10252 kube-controller-manager TCP 10255 Read-only Kubelet API UDP 8472 flannel TCP 9099,9100 calico TCP 179 bgp TCP 111 rpcbind 使用 NFS 作为持久化存储 IPIP Calico 需要允许 IPIP 协议 Read more…

NetworkPolicy网络策略

资源隔离设计 本案例使用NetworkPolicy来进行资源隔离 要实现的目的: 用户isv应用不能访问k8s集群应用 k8s集群应用可以访问isv应用 isv应用可以访问外网 本案例的架构图:   创建isv-demon namespace

  定义资源 为了不跟宿主机端口冲突, web的service端口定义为8800

    创建WEB, API and DB Pods/Services

  测试:

  定义networkpolicy: deny-all

  定义进栈和出栈访问:

  创建NetworkPolicy

  测试:

  总结: 首先一定要给namespace打label, 因为NetworkPolicy是根据lable来match的 参考: https://alwaysupalwayson.blogspot.com/2019/09/kubernetes-network-policies-how-to.html https://github.com/mathieu-benoit/k8s-netpol 和 https://ahmet.im/blog/kubernetes-network-policy/ https://github.com/ahmetb/kubernetes-network-policy-recipes Read more…

删除K8s Namespace时卡在Terminating状态

想要删除K8s里的一个Namespace,结果删除了所有该Namespace资源之后使用kubectl delete namespace test发现删除不掉,一直卡在Terminating状态,使用–force参数依然无法删除,报错: Error from server (Conflict): Operation cannot be fulfilled on namespaces “test”: The system is ensuring all content is removed from this namespace. Upon completion, this namespace will automatically be purged by the system. 找了一圈,发现这个Issue,里面有条评论 kubectl get namespace annoying-namespace-to-delete -o json > tmp.json then edit tmp.json and Read more…