使用tke或者eks集群的过程中,大家会有从容器下载大文件或者上传大文件到容器,其实eks和tke的控制台的登录容器页面是这次上传下载文件的,但是大小有限制,默认都是10M。
关闭任一master节点测试集群是能否正常执行上一步的基础测试,查看相关信息,不能同时关闭两个节点,因为3个节点组成的etcd集群,最多只能有一个当机。
[root@master ~]# kubectl get nodes 查看集群节点 NAME STATUS AGE node1 Ready 25m node2 Ready 19m [root@master ~]# kubectl version 查看版本 Client Version: version.Info{Major:"1", Minor:"5", GitVersion:"v1.5.2", GitCommit:"269f928217957e7126dc87e6adfa82242bfe5b1e", GitTreeState:"clean", BuildDate:"2017-07-03T15:31:10Z", GoVersion:"go1.7.4", Compiler:"gc", Platform:"linux/amd64"} Server Version: version.Info{Major:"1", Minor:"5", GitVersion:"v1.5.2", GitCommit:"269f928217957e7126dc87e6adfa82242bfe5b1e", GitTreeState:"clean", BuildDate:"2017-07-03T15:31:10Z", GoVersion:"go1.7.4", Compiler:"gc", Platform:"linux/amd64"} [root@master ~]# kubectl run nginx --image=docker.io/nginx --replicas=1 --port=9000 deployment "nginx" created [root@master ~]# kubectl get deployment NAME DESIRED CURRENT UP-TO-DATE AVAILABLE AGE nginx 1 1 1 0 15s [root@master ~]# kubectl get pods NAME READY STATUS RESTARTS AGE nginx-2187705812-8r0h4 1/1 Running 0 1h [root@master ~]# kubectl get pods -o wide NAME READY STATUS RESTARTS AGE IP NODE nginx-2187705812-8r0h4 1/1 Running 0 1h 10.255.4.2 node1 想要删除一个容器的时候:
今天修复线上问题, 需要在pod动态修改配置文件, 发现pod里面没有安装vim, 于是先把他拷贝到本地, 修改后再覆盖回去.
对于刚开始使用命令行工具的开发者,最保险的方法是提出问题(读取操作),而不是发出命令(写入操作),所以从使用 get 命令开始是个不错的选择。
本文是介绍 kubernetes-operator 开发的第三篇,前几篇已经提到过 kubernetes-operator 的主要目标是实现以下三种场景中的集群管理:
想从k8s的pod中拷贝文件到宿主机,kubectl 的cp命令,但是网上搜索了下,感觉有点乱,自己记录下。
由于calico服务是所有节点都需要启动的,需要把这几个文件拷贝到每台服务器上 ** 通过主节点拷贝到102,103两台机器上
kiali pod 内只有一个容器,名称为 kiali。该容器在启动的过程中会运行容器内 kiali 进程,该进程会加载 /kiali-configuration/config.yaml 配置文件,该 config.yaml 文件定义了 kiali 进程运行时行为。pod 部分详情如下:
注意根据你的环境修改以下三处。 1)kubeConfig的值 2)master的值 3)advertiseAddress的值,修改为master节点的IP
Kubernetes 可以帮你编排运行有大量容器的软件。Kubernetes 不仅提供工具来管理(或者说 编排)运行的容器,还帮助这些容器根据需要进行扩展。有了 Kubernetes 作为你的中央 控制面板(control panel)(或称 控制平面(control plane)),你需要一种方式来管理 Kubernetes,而这项工作的工具就是 kubectl。kubectl 命令让你控制、维护、分析和排查 Kubernetes 集群的故障。与许多使用 ctl(“控制”的缩写)后缀的工具一样,如 systemctl 和 sysctl,kubectl 拥有大量的功能和任务权限,所以如果你正在运行 Kubernetes,你肯定会经常使用它。它是一个拥有众多选项的命令,所以下面是 kubectl 中简单易用的五个常见任务。
kubectl 是 Kubernetes 的命令行工具(CLI),是 Kubernetes 用户和管理员必备的管理工具。kubectl安装在k8s的master节点,kubectl在$HOME/.kube目录中查找一个名为config的文件, 你可以通过设置Kubeconfig环境变量或设置--kubeconfig来指定其他的kubeconfig文件。kubectl通过与apiserver交互可以实现对k8s集群中各种资源的增删改查。
kube.config`` 为kubectl的配置文件,包含访问 `apiserver 的所有信息,如 apiserver 地址、CA 证书和自身使用的证书
可以通过 --all-namespaces 获取 k8s 集群所有的 serivce 列表:
有时候我们想要查看下容器内部的一些东西,但是无奈容器没有shell 执行环境,比如想看看 coredns 容器中 /etc/resolv.conf 的内容是否正确继承了节点的配置,比较简单的操作步骤如下(以 docker 运行时为例):
一般场景下,容器网络都只有局域网内,无法跟 Internet 交互,如果这时候想安装一下命令的时候,简单地通过系统的 apt-get install 或者 yum install 是无法下载到公网的依赖的,除非使用局域网内的源地址,但是所有的这些都不方便呢?唯一方面就是允许用户在本地通过 kubectl 进入 pod,比如想要安装 pstree,那么可以先提前在网上把对应系统版本和架构的安装包下载到本地自己的开发环境,然后通过 kubectl cp 把下载到的安装包 cp 到 Pod 内,再在 Pod 内进行安装。
在 master 节点创建/labfile/deployfile 目录,用于保存配置文件。后续创建deployment 的 yaml 文件保存在此处。
从容器复制文件到本地 kubectl cp <namespace>/<pod>:<root_dir>/<parent_dir>/<file_name> ./<file_name> 注:pod冒号后直接加根目录,不能加“/”,否则报错 tar: removing leading ‘/’ from member names 从本地复制到容器 kubectl cp ./<file_name> <namespace>/<pod>:/<root_dir>/<parent_dir>/<file_name>
Kafka 是目前最流行的分布式消息发布订阅系统,Kafka 功能非常强大,但它同样也很复杂,需要一个高可用的强大平台来运行,在微服务盛行,大多数公司都采用分布式计算的今天,将 Kafka 作为核心的消息系统使用还是非常有优势的。
在上一篇文章中我们介绍安装了chartmuseum和helmpush,两者用来作为chart repo和chart repo的推送工具。这里我们主要介绍使用helm来发布更新以及回滚k8s应用,我们还是以之前文章中介绍的nginx application为例,使用helm来完成发布更新和回滚操作。
kube.config 为 kubectl 的配置文件,包含访问 apiserver 的所有信息,如 apiserver 地址、CA 证书和自身使用的证书
Kubeadm 是一个工具,它提供了 kubeadm init 以及 kubeadm join 这两个命令作为快速创建 kubernetes 集群的最佳实践.
1 3个节点: k8s-master k8s-node1 k8s-node2 2 yum install -y docker 3 所有节点安装kubelet kubeadm kubectl 4 master执行:105为MASTER的IP,网络方案是flannel kubeadm init --apiserver-advertise-address 192.168.56.105 --pod-network-cidr=l0.244.0.0/16 5 master配置kubectl,不要用root用户 su - ubuntu mdkir -p xx/.kube sudo cp -i /etc/kubernetes/admin.conf xx/.kube/config sudo chown ubuntu:root xx/.kube/config echo "source <(kubectl completion bash)" >>~/.bashrc 6 master安装pod网络(使用flannel) kubectl apply -f https://raw.githubusercontent.com/coreos/flannel/master/Documentation/kube-flannel.yml 7 查看token: kubeadm token list 8 两台node注册到master kubeadm join --token xxxxxx masterip:6443 9Master上查看node kubectl get nodes
在上一篇文章里我们主要介绍kube-apiserver的安装,这里我们主要介绍安装kubectl客户端命令工具。对于kubectl安装比较简单,直接将binary放在$PATH环境变量的路径里使用就好。由于这个组件也在下载的kubenetes包里(1.15.1版本)。另外kubectl与kube-apiserver交互我们开启ssl,所以请提前制作好相关ssl证书(可以参考以前文章里制作docker相关的证书),并copy到配置目录里。
kube-scheduler负责分配调度Pod到集群内的节点上,它监听kube-apiserver,查询还未分配Node的Pod,然后根据调度策略为这些Pod分配节点。我们前面讲到的kubernetes的各种调度策略就是它实现的。
紧接上文kubernetes与velero的第一次尝试。恩主要是强调一下我要准备撤销这一个集群!业务迁移完了: nacos gitlab nexus....然后我就人为等集群证书过期了.....当然了正常的集群证书过期可以通过更新集群小版本进行证书的更新!我这里正好遇到集群撤销的场景,我就想看一下证书过期的场景了......
安装docker的就不说了。防火墙关闭,端口全部开放。 curl -LO https://storage.googleapis.com/kubernetes-release/release/$(curl -s https://storage.googleapis.com/kubernetes-release/release/stable.txt)/bin/linux/amd64/kubectl chmod +x ./kubectl sudo mv ./kubectl /usr/local/bin/k
前面我写了关于k8s环境部署的几篇文章,k8s部署还是比较麻烦的,所以是有必要考虑一键部署的方案,这里借助ansible playbook来实现k8s环境的一键部署,实现快速部署的目的。关于k8s传统部署详细过程可以参考以下文章:
kubeadm alpha certs check-expiration 或 openssl x509 -in /etc/kubernetes/pki/apiserver.crt -noout -text |grep ' Not '
但是在Kubernetes集群master节点上执行kubectl命令报如下错误:
在之前的几篇文章中,主要还是讲解了关于简单的docker容器该如何进行管理和操作,在接下来的这篇文章开始,我们将开始进入对于k8s模块的学习
本文档记录自己的学习历程! 创建 kubeconfig 文件 kubelet、kube-proxy 等 Node 机器上的进程与 Master 机器的 kube-apiserver 进程通信时需要认证和授权; kubernetes 1.4 开始支持由 kube-apiserver 为客户端生成 TLS 证书的 TLS Bootstrapping 功能,这样就不需要为每个客户端生成证书了;该功能当前仅支持为 kubelet 生成证书; 创建 TLS Bootstrapping Token Token auth
kubectl exec 是 Kubernetes 的命令行工具 kubectl 中的一个子命令。它的主要功能是在指定的 Pod 中执行命令。也就是说,您可以通过 kubectl exec 与 Pod 中的容器进行交互,执行命令。
----Kubernetes解决了诸多运维难题,是目前主流的基础架构平台,也是容器编排领域的事实标准,可谓“天不生Kubernetes,运维万古如长夜”。如此流行的Kubernetes,该如何掌握、又该如何应用到生产中呢?本系列文章会详细讲述。
本文在以下主机上操作部署k8s集群 k8s-master1:192.168.206.31 k8s-master2:192.168.206.32 k8s-master3:192.168.206.33
随着公司的k8s迁移,会发现集群越来越多,尤其是有混合云的公司,开发,测试,预生产,多个生产环境等等,管理k8s集群会越来越麻烦,下面我来介绍下k8s管理多集群的俩种方法。
在之前的k8s实践中,我们使用minikube搭建了k8s环境,为了更真实的展示生产级别的k8s,本节课采用kubeadm来搭建master+worker集群,实现k8s集群,master、worker在虚拟机上来执行,中间遇到了超级多的坑,在这里系统的总结一下,分上下两篇进行讲解。
当你的kubernetes报错:certificate has expired or is not yet valid,可以通过命令:openssl x509 -in [证书全路径] -noout -text查看证书详情。
在这份CKAD考试实操指南中,我将为你详细介绍如何利用CKAD-exercises项目和知十平台进行CKAD考试的准备和复习。通过CKAD-exercises提供的练习题,你可以在知十平台的云原生环境中进行实践和模拟。在这个过程中,你将熟悉Kubernetes的各种操作和场景,并在实践中加深对知识的理解。这种结合实践和理论的学习方式将为你在考试中取得优异成绩提供强有力的支持。
作为一名新时代的运维工程师,不掌握k8s这样开阔时代的工具怎能成为一名好运维呢?最近两周在折腾k8s集群,发现很是不容易。各种概念,各种插件。这里把安装过程和遇到的坑分享给大家,亲测这个教程搭建成功。k8s各种概念建议先理解概念后再上手搭建:
2、cd --切换目录(cd 有很多种用法,但是刚接触linux人的来说只要记住这个就可以了,剩下的以后慢慢学,如cd ..,cd -,cd ~,cd ../../等等)
kiali 是 istio 的一个可视化 dashboard, 必须配合 prometheus 一起使用才能达到最佳效果。
我们到 github 上面下载需要的二进制安装包 https://github.com/kubernetes/kubernetes/releases/tag/v1.16.14
如果机器上之前安装过 KubeSphere 或者 KubeSphere 版本太高 , 先卸载 KubeSphere,k8s 版本太高有问题,会导致部分 CRD 不能安装
minikube 创建集群 安装kubelet 添加rpm源 cat << EOF |tee /etc/yum.repos.d/kubernetes.repo [kubernetes] name=Kubernetes baseurl=https://mirrors.aliyun.com/kubernetes/yum/repos/kubernetes-el7-x86_64/ enabled=1 gpgcheck=1 repo_gpgcheck=0 gpgkey=https://mirrors.aliyun.
本篇文章记录自己手动安装K3S的过程。本次测试环境为两台轻量应用服务器,配置分别为2核4G、4核4G,系统镜像选择CentOS 8.2
在上一章中,我们已经学会了使用 kubeadm 创建集群和加入新的节点,在本章中,将按照 CKAD 课程的方法重新部署一遍,实际上官方教程的内容不多,笔者写了两篇类似的部署方式,如果已经部署了 kubernetes 集群,则本章的内容可跳过。
领取专属 10元无门槛券
手把手带您无忧上云