Kubernetes
Kubernetes
文档信息
个人环境搭建
minikube https://opensource.com/article/18/10/getting-started-minikube
minikube offical https://minikube.sigs.k8s.io/docs/
minikube
|
|
kubeadm安装
https://kubernetes.io/docs/setup/production-environment/tools/kubeadm/install-kubeadm/
三服务器
master1 2u2g slave0 1u2g slave1 1u2g
设置hosts
|
|
ssh免密略
安装docker 具体参考https://docs.docker.com/engine/install/debian/
批量运行
准备工作
|
|
添加源 add apt source list && install kubelet kubeadm kubectl
|
|
确认cgroup driver
具体参考 https://kubernetes.io/docs/tasks/administer-cluster/kubeadm/configure-cgroup-driver/
docker cgroup driver
|
|
k8s默认也是这个 先用这个测试
kubeadm初始化
按照指引即可https://kubernetes.io/docs/setup/production-environment/tools/kubeadm/create-cluster-kubeadm/
登录master1机器,执行kubeadm init
预检查
|
|
因为containerd默认禁止cri,这里去每个服务器执行下
|
|
估计没启动systemctl start containerd即可
containerd配置
如果不配置kubelet可能会来回重启 6443一直连不上
|
|
实际安装
|
|
执行里面的命令
|
|
初始化网络,增加cni配置文件
|
|
增加补全
|
|
从节点加入
|
|
最终ready了
|
|
kubectl命令相关
好用的选项
|
|
多用describe,了解缩写
|
|
配置kubectl自动完成
|
|
kubectl生成yaml
|
|
k8s集群信息查看
cluster-info查看集群信息
|
|
get componentstatus查看组件状态
|
|
查看pod
|
|
pod
https://kubernetes.io/docs/concepts/workloads/pods/
pod是k8s里面的一种workload, 是部署的最小单位,相当于逻辑主机。
pod里面的容器共享cgroup和network等namespace。
如何创建一个pod
命令行创建
yaml创建
官网 https://kubernetes.io/docs/concepts/workloads/pods/ 链接里面的simple-pod.yaml
|
|
我们执行下看看会有什么结果
|
|
这里我们看看对应的yaml
|
|
可以发现 第一行表明apiVersion: v1使用v1版本的kubernets的API
kind表示创建的资源类型是Pod
metadata表示名称命名空间,标签和关于容器的其他信息。
spec包含pod内容的实际说明,比如pod里面的容器,卷和其他数据。
status包含pod的当前信息,比如所处的状态,内部ip和其他信息。创建时候无 需提供。
这里可以用kubectl port-forward进行测试端口
|
|
打开另一个终端
|
|
Ctrl-C结束,检查 pod logs
|
|
pod标签管理
创建标签
|
|
在metadata添加labels即可,可以通过kubectl get pods –show-labels查看, 也可以通过kubectl get pods -L LABELNAME查看
|
|
修改标签
使用kubectl label pod POD LABEL=VALUE
|
|
过滤标签的pod
使用kubectl get pod -l LABEL=VALUE
|
|
这里注意 也可以写表达式 kubectl get pod -l '!env' # 没有env标签的 kubectl get po -l 'env notin (prod,devel)' # env不是prod和devel kubectl get po -l 'env in (prod,devel)' # env是prod或者devel kubectl get po -l 'env!=test' # env不是test
node添加标签
对于我们实际的工作节点,可能存在计算型,存储型,GPU型等,所以pod也希望 能够按照我们希望的调度到对应的节点上。
|
|
我们可以通过nodeSelector来选择节点
|
|
创建kubia-gpu
|
|
我们发现确实调度到了slave1
pod添加注解
|
|
我们可以使用kubectl annotate添加注解
|
|
CKA考前须知
https://docs.linuxfoundation.org/tc-docs/certification/tips-cka-and-ckad
https://www.qikqiak.com/post/k8s-cka-course/
Helm
helm是什么
Argo
Argo官网 Open source tools for Kubernetes to run workflows, manage clusters, and do GitOps right. 目前看argo是包含多个产品的,这里面是argo workflow。关于argo project,更 多可以参考
Argo Workflow
argo workflow文档地址 https://argoproj.github.io/argo-workflows/ 可以通过如下文档安装一下 https://github.com/argoproj/argo-workflows/blob/master/docs/quick-start.md
install argo cli
https://github.com/argoproj/argo-workflows/releases/latest 找到最新的 版本
|
|
install argo controller and server
|
|
这里可以把type: ClusterIP改成type: NodePort
|
|
并且一定要注意proxy_pass https://xxx:xxx; 写https,否则会报错empty
如果你是minikube,就是minikube的ip
|
|
同样参考quickstart
|
|
执行这个跳过认证
最终安装好了
上面每个选择都对应一个文档,可以看看。
hello world example
更多的example 在这里 argo-workflow example链接
|
|
这个时候就会发现hello-world的argo workflow
我们命令行也可以看到对应的执行
|
|