1,资源创建方式
1.1 yaml
用 yaml 配置 在 kubernetes 中创建资源
kubectl apply -f xxxx.yaml
Kubernetes 集群搭建时候,创建资源的方式,大部分用的yaml的方式去创建资源。
1.2 命令行
用 命令行 在 kubernetes 中创建资源
# 查看所有命名空间 kubectl get ns # 创建命名空间 kubectl create ns xxx # 删除命名空间 kubectl delete ns xxx
2,NameSpace命名空间
NameSpace(命名空间):用来对集群资源进行划分;默认只隔离资源,不隔离网络。 (-n)
其中kube-nod-lease、kube-public、kube-system 命名空间在安装 kubernetes 时自身自带的命名空间,
kubernetes-dashboard 命名空间是在安装了 dashboard 时候创建的。
在yaml中就指定了命名空间kubernetes-dashboard。
2.1 命令行创建ns
# 查看命名空间 kubectl get ns # 查看 部署了哪些应用 kubectl get pods -A # 查看 默认命名空间(default)部署的应用 kubectl get pods # 查看 某个命名空间(kubernetes-dashboard)部署的应用 kubectl get pod -n kubernetes-dashboard # 创建命名空间 kubectl create ns hello # 删除命名空间 kubectl delete ns hello
2.2 yaml 创建ns
- hello-yaml.yaml
# 版本号 apiVersion: v1 # 类型 kind: Namespace # 元数据 metadata: # Namespace(命名空间) 的 名称 name: hello-yaml
- yaml 创建 Namespace
vi hello-yaml.yaml # 将上述内容 粘贴进 hello-yaml.yaml kubectl apply -f hello-yaml.yaml kubectl get ns # kubectl delete ns hello-yaml # 配置文件创建的资源 用配置文件 删 kubectl delete -f hello-yaml.yaml
3,Pod
Pod:运行的一组容器,是 kubernetes 找那个应用的最小单位。(工作负载)
docker ps -a kubectl get pod -A # 查看 每个 Pod 分配的 IP,IP 范围 在下图配置的 kubectl get pod -owide
查看 每个 Pod 分配的 IP 范围设置
3.1 命令行 创建pod
# mynginx 是自定义的名称,nginx 镜像; 默认到 default 命名空间 kubectl run mynginx-k8s --image=nginx kubectl get pods -A # 默认 命名空间 kubectl get pods # STATUS 是 ContainerCreating 的,查看进度(Events 属性) kubectl describe pod mynginx-k8s # 在 3 个 Xshell 终端中 (查看在哪个 节点服务器上 运行着) docker ps # 删除 Pod(默认的命名空间),kubectl delete pod mynginx-k8s -n 命名空间 (非默认命名空间) kubectl delete pod mynginx-k8s kubectl get pods
稍等一会儿pod开始running状态了。
3.2 yaml 创建pod
- mynginx-yaml.yaml
apiVersion: v1 kind: Pod metadata: labels: run: mynginx-yaml # Pod 的 名字 name: mynginx-yaml # 指定命名空间 (不写是 默认 default) namespace: default spec: containers: # 多个 容器,多个 - - image: nginx # 容器的名字 name: mgninx-yaml
- yaml 创建 Pod
vi mynginx-yaml.yaml # 将上述内容 粘贴进来 kubectl apply -f mynginx-yaml.yaml kubectl get pod kubectl describe pod mynginx-yaml # 配置文件创建的资源 用配置文件 删 kubectl delete -f mynginx-yaml.yaml
查看创建过程的事件
3.3 可视化界面 创建
小知识: 左边菜单 有 N 标注的, 是需要 命名空间的
3.3.1 Pod nginx
可视化页面 上传 yaml 创建 Pod
来到 Pod栏 查看 创建的 Pod
进入到pod
kubectl get pods -A -owide # mynginx-yaml 是 Pod Name kubectl exec -it mynginx-yaml 是 Pod Name -- /bin/bash whereis nginx cd /usr/share/nginx/html/ echo "hello tigerhhzz welcome to k8s ngnix" > index.html # Ctrl P + Q 退出 # 查看的 映射的IP,输出 hello k8s ngnix curl 192.168.140.69:80
可以在 dashboard 页面,右边, 下拉选点击 执行。
dashboard 页面 进入终端 修改
访问 nginx 首页,修改成功
总结
k8s 给 每一个pod 分配 IP,IP网段是在 3.3.5.2 初始化主节点中 中 设置的
–pod-network-cidr=192.168.0.0/16
集群中的任意一个机器以及 任意的应用 都能通过 Pod 分配的 IP 来访问 Pod,只能在集群内访问,
如果要在集群外访问,暴露 k8s 端口 和 安全组。
3.3.2 Pod nginx + tomcat
下面是 1 个 Pod 里面 有 2 个 容器(nginx 和 tomcat)
- multicontainer-pod.yaml
apiVersion: v1 kind: Pod metadata: labels: run: myapp # Pod 的 名字 name: myapp # 指定命名空间 (不写是 默认 default) namespace: default spec: containers: # 多个 容器,多个 - - image: nginx # 容器的名字 name: myngnix - image: tomcat:8.5.68 name: mytomcat
vi multicontainer-pod.yaml # 将上述内容 粘贴进来 kubectl apply -f multicontainer-pod.yaml kubectl get pod kubectl describe pod myapp # 配置文件创建的资源 用配置文件 删 kubectl delete -f multicontainer-pod.yaml
Ready 是 0 / 2了。 有2个 容器(nginx 和 tomcat),稍等一会儿,等两个容器创建完毕,状态变为running。
kubectl get pod kubectl get pods -owide curl ip:80 curl ip:8080 # 这个会404,但后面是 apache tomcat 打印出来的
在 同一个 Pod 共享一个 网络空间、共享网络存储。
在 可视化界面上, ngnix 中 curl 127.0.0.1:8080;tomcat 中 127.0.0.1:80 ;都是可以的。
nginx 中访问
tomcat 中访问
3.3.3 Pod 2ngnix
apiVersion: v1 kind: Pod metadata: labels: run: myapp-2 # Pod 的 名字 name: myapp-2 # 指定命名空间 (不写是 默认 default) namespace: default spec: containers: - image: nginx name: myngnix01 - image: nginx name: myngnix02
创建 Pod
查看 Pod 列表
第二个 启动失败:原因是端口被占用!!!
稍等一会儿,1 / 2 状态是 ERROR, 端口冲突了
kubectl get pods # 看 Events 轨迹 kubectl describe pod myapp-2
dashboard 页面 也可以看到 Events
查看 Pod 日志
查看 mynginx02 启动日志,发现 80端口被占用。
然后把这个 删掉,用 deployment 解决。
删掉 Pod myapp-2