k8s/Kubernetes的简单使用和问题解决

kubernetes

kubenets/k8s/kubectl

常用命令介绍
kubectl config view            查看集群 kubernetes 的配置和 server 属性的值
$ kubectl config set-cluster kubernetes --server=https://192.168.1.10:8443    # 修改集群服务器地址命令 
Kubectl cluster-info            查看集群信息
Kubectl get nodes            查看所有master信息
Kubectl get pod -A            查看所有容器/pod
kubectl get events --all-namespaces    # 查看所有事件

kubectl 命令大全
https://blog.csdn.net/as_dingjia/article/details/120364679
http://t.csdn.cn/XjuJg

Helm 可以理解为 Kubernetes 的包管理工具,可以方便地发现、共享和使用为Kubernetes构建的应用。

Kubernetes 集群在服务器搭建部署成功之后,通常我们都会通过 kubectl 命令行工具与集群互动、发送操作指令来管理集群。kubectl 主要依赖于集群配置文件 kubeconfig 与集群进行通讯,
这个文件通常在 Kubernetes 集群的 master 节点服务器的 $HOME/.kube/config 目录下。开发者可以从服务器获取改配置文件到开发者本地电脑上的相同目录位置上即可。
sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config  我发现这个admin文件和config一样

【1】k8s之master
Kubernetes里的Master指的是集群控制节点,在每个Kubernetes集群里都需要有一个Master来负责整个集群的管理和控制,基本上Kubernetes的所有控制命令都发给它,它负责具体的执行过程,我们后面执行的所有命令基本都是在Master上运行的。Master通常会占据一个独立的服务器(高可用部署建议用3台服务器),主要原因是它太重要了,是整个集群的“首脑”,如果它宕机或者不可用,那么对集群内容器应用的管理都将失效。在Master上运行着以下关键进程。
◎ Kubernetes API Server(kube-apiserver):提供了HTTP Rest接口的关键服务进程,是Kubernetes里所有资源的增、删、改、查等操作的唯一入口,也是集群控制的入口进程。
◎ Kubernetes Controller Manager(kube-controller-manager):Kubernetes里所有资源对象的自动化控制中心,可以将其理解为资源对象的“大总管”。
◎ Kubernetes Scheduler(kube-scheduler):负责资源调度(Pod调度)的进程,相当于公交公司的“调度室”。另外,在Master上通常还需要部署etcd服务,因为Kubernetes里的所有资源对象的数据都被保存在etcd中。

官网
https://kubernetes.io/zh/docs/concepts/overview/what-is-kubernetes/

docker的container和image之间的关系


2020-04-23 15:32:01
Image与Container之间的联系?
答:镜像的概念更多偏向于一个环境包,这个环境包可以移动到任意的Docker平台中去运行;而容器就是你运行环境包的实例。你可以针对这个环境包运行N个实例。换句话说container是images的一种具体表现形式。你也可以认为镜像与你装载操作系统iso镜像是一个概念,容器则可理解为镜像启动的操作系统。一个镜像可以启动任意多个容器,即可以装载多个操作系统。

container = running image

Kubernetes crictl管理命令详解


crictl 是 CRI 兼容的容器运行时命令行接口。 你可以使用它来检查和调试 Kubernetes 节点上的容器运行时和应用程序。 crictl 和它的源代码在 cri-tools 代码库
ctr:containerd本身的CLI
crictl :Kubernetes社区的专门CLI工具


https://www.csdn.net/tags/MtTaEg2sMzIyNTAzLWJsb2cO0O0O.html

在堡垒主机上,首先我使用来从公共注册表下载(拉出)映像ctr image pull(我将在此使用的示例是Calico节点容器映像,由Kubernetes集群中的Calico CNI使用):
 ctr image pull docker.io/calico/node:v3.11.2

仍然在堡垒主机上,我将提取的镜像导出到独立的存档中:
 ctr image export calico-node-v3.11.2.tar \
 docker.io/calico/node:v3.11.2

该命令的一般格式如下:

 ctr image export <output-filename> <image-name>


将独立的归档文件传输到其他系统后(使用您喜欢的任何方式;我使用scp),然后containerd使用以下命令将镜像加载(或导入)到其中:
 ctr image import <filename-from-previous-step>
根据需要重复其他镜像。顺便说一句,看来在ctr image import命令中使用通配符是行不通的。我必须手动指定每个要导入的文件。

如果您需要这些镜像可用于Kubernetes,则必须确保将-n=k8s.io标志添加到ctr image import命令中,如下所示:
 ctr -n=k8s.io images import <filename-from-previous-step>
确认镜像(一个或多个)都存在,并通过识别containerd使用ctr image ls。
如果k8s.io在上一步中导入镜像时指定了名称空间(以便使镜像可供Kubernetes使用),则可以验证CRI(容器运行时接口,Kubernetes与之通信的方式containerd)通过crictl images再次运行来查看这些镜像。,sudo根据您的配置可能是必需的)。
那应该为您做!


docker container ls -a        列出所有container
docker container start xxx        启动相应的container
docker ps                列出所有container
sudo crictl images list        crictl是k8s社区的专用CLI工具
sudo ctr i list            ctr是containerd自带的工具,有命名空间的概念,若是k8s相关的镜像,都默认在k8s.io这个命名空间        
sudo ctr images ls
crictl images 与 ctr i list 不同
crictl images 等价于 ctr -n k8s.io i list

containerd使用ctr导入镜像成功,crictl为何查询不到?

ctr是containerd自带的工具,有命名空间的概念,若是k8s相关的镜像,都默认在k8s.io这个命名空间,所以导入镜像时需要指定命令空间为k8s.io

#使用ctr命令指定命名空间导入镜像
ctr -n=k8s.io image import dashboard.tar

#查看镜像,可以看到可以查询到了
crictl images

操作    crictl    docker
查看运行容器    crictl ps    docker ps
查看镜像    crictl images    docker images
查看容器日志    crictl logs    docker logs
登陆容器控制台    crictl exec    docker exec
pull镜像    crictl pull    docker pull
容器启动/停止    crictl start/stop    docker start/stop
容器资源情况    crictl stats    docker stats
操作    ctr    docker
查看镜像    ctr images ls    docker images
镜像导入/导出    ctr images import/exporter    docker load/save
镜像拉取/推送    ctr images pull/push    docker pull/push
镜像tag    ctr images tag    docker tag

TroubleShooting


服务器重启后看不到任何kubernets POD信息

由于报错信息提示localhost:8080,
确认安装bash xx.sh install时是用的哪个用户,nv还是root还是test,每个用户下的配置文件不一样
如果账户正确会提示,192.168.xx.xx

如果提示有IP
由于服务器每次开机IP会发生变化,导致连接不到,确认存在这个问题
我们要把IP改为提示的IP,而且这个IP确实是重启之前的IP,这是没问题的
(试过更改配置文件的IP为现在的IP但是不行,怀疑是在之前的IP上安装了POD容器,所以必须改回去)
Ifconfig enx xx.xx.xx.xx/xx up
route add default gw xx.xx.xx.xx        目前发现是改了IP后无法访问外网,原因是网关也没了,所以加网关
curl www.baidu.com

现在再回去获取容器信息
Kubectl get pod -A        应该没问题了,
如果没有稍微等一会,大概1-2分钟
还没出来,输入systemctl status kubelet.service,查看Cgroup是否只有1条
/usr/bin/kubelet –bootstrap-kubeconfig=/etc/kubernetes/bootstrap-kubelet.conf xxx(这个状态是很正常的)
然后再去获取

Ps/Note
route -n                查看对应网口Iface下的网关gateway
netstat -r            查看对应网口Iface下的网关gateway
cat /etc/sysconfig/network
ip route show            查看关键字default via xxx,就是有没有添加默认网关

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值