创建pod资源
pod是最小资源单位.
任何的一个k8s资源都可以由yml清单文件来定义
k8s yaml的主要组成
apiVersion: v1 api版本
kind: pod 资源类型
metadata: 属性
spec: 详细
master节点编写pod.yaml文档
vi k8s_pod.yaml
apiVersion: v1
kind: Pod
metadata:
name: nginx
labels:
app: web
spec:
containers:
- name: nginx
image: 10.0.0.11:5000/nginx:1.13
ports:
- containerPort: 80
创建pod资源并查看pod资源
kubectl create -f k8s_pod.yml
kubectl get pod
kubectl describe pod nginx
node节点:根据镜像的pod-infrastructure:latest image的具体地址进行填写进行填写
vim /etc/kubernetes/kubelet
KUBELET_POD_INFRA_CONTAINER="--pod-infra-container-image=10.0.0.11:5000/pod-infrastructure:latest"
systemctl restart kubelet.service
查看是否启动成功
kubectl get pod -o wide
kubectl describe pod nginx
pod和容器的关系:
为什么创建一个pod资源,需要至少启动两个容器?
pod基础容器 实现k8s的高级功能+
nginx容器 实现业务功能
pod资源中,多个业务容器的端口不能冲突
pod资源:至少由两个容器组成,pod基础容器和业务容器组成(最多1+4)
只要创建一个pod资源,都会启动一个pod基础容器+pod资源中的业务容器
curl -I 172.18.78.2 访问pod的ip地址,pod里面的nginx可以被访问,nginx容器和pod-infrastructure
172.18.78.2 究竟是哪一个容器的ip地址?
172.18.78.2是pod基础容器的ip
nginx容器和pod基础容器共用ip地址
ReplicationController资源
rc:保证指定数量的pod始终存活,rc通过标签选择器来关联pod
启动5个相同的pod,pod 5个副本
apiVersion: v1
kind: ReplicationController
metadata:
name: nginx
spec:
replicas: 5 #副本5
selector:
app: myweb
template: #模板
metadata:
labels:
app: myweb
spec:
containers:
- name: myweb
image: 10.0.0.11:5000/nginx:1.13
ports:
- containerPort: 80
启动一个rc 并查看rc信息
kubectl create -f k8s_rc.yaml
kubectl get rc
删除一个 又会创建一个新的
kubectl delete pod nginx-9kstr
每一个pod名字,必须唯一
k8s 不断的检查不可用的节点,驱逐pod
停止node节点的服务
systemctl stop kubelet.service
删除节点
kubectl delete node 10.0.0.12
会在另外的节点上新建 一直保持rc始终运行
[root@k8s-master rc]# kubectl get pod -o wide
NAME READY STATUS RESTARTS AGE IP NODE
nginx-1zgwx 1/1 Running 0 32s 172.18.10.8 10.0.0.13
nginx-kt27z 1/1 Running 0 8m 172.18.10.5 10.0.0.13
nginx-qq1sc 1/1 Running 0 32s 172.18.10.7 10.0.0.13
nginx-st72b 1/1 Running 0 8m 172.18.10.4 10.0.0.13
nginx-tvf09 1/1 Running 0 32s 172.18.10.6 10.0.0.13
test 2/2 Running 14 7h 172.18.10.2 10.0.0.13
查看标签pod的
kubectl get pod -o wide --show-labels
查看节点使用那些标签
kubectl get rc -o wide
在这里插入代码片
修改pod 标签为myweb 会出现少了一个,删除了最年轻的
kubectl edit pod test
宏观世界,pod都是同一秒创建
微观世界,pod创建相隔几毫米
kubectl create -f xxx.yaml 创建资源
kubectl get pod|rc 查看某一个资源列表
kubectl describe pod nginx 查看某一个具体资源的详细信息
kubectl delete pod nginx 删除某一个具体资源
或者kubectl delete -f xxx.yaml
kubectl edit pod nginx 编辑某一个资源的配置文件