啃k8s之Pod资源管理和harbor私有仓库搭建
一:Pod资源管理
1.1:创建资源的两种方式
- kubectl命令
- 基于文件:JSON用于参数传递,应用于开发中。而在k8s中更多的是使用yaml文件进行创建资源
1.2:pod特点
- 最小部署单元
- 一组容器的集合
- 一个Pod中的容器共享网络命名空间
- Pod是短暂的
1.3:容器的分类
1、infrastructure container:基础容器
- 维护整个pod网络空间:可以在node节点操作查看容器的网络
[root@node1 ~]# cat /opt/kubernetes/cfg/kubelet
KUBELET_OPTS="--logtostderr=true \
--v=4 \
--hostname-override=20.0.0.54 \
--kubeconfig=/opt/kubernetes/cfg/kubelet.kubeconfig \
--bootstrap-kubeconfig=/opt/kubernetes/cfg/bootstrap.kubeconfig \
--config=/opt/kubernetes/cfg/kubelet.config \
--cert-dir=/opt/kubernetes/ssl \
--pod-infra-container-image=registry.cn-hangzhou.aliyuncs.com/google-containers/pause-amd64:3.0" '这是基础容器'
2、initcontainers:初始化容器
- 先于业务容器开始执行,原先pod中容器是并行开启,现在进行了改进
- 无论容器写在初始化容器前还是写在初始化容器后,最先执行的都是初始化容器。只有初始化容器执行成功后才可以启动容器。
- 初始化容器的应用场景一般是多容器,例如:mysql和业务分开两个容器。将业务设为初始化容器,并检查mysql是否启动,若mysql启动,则业务容器启动;否则业务容器等待mysql启动。
3、container:业务容器
- 业务容器就是我们创建的pod资源内的容器服务,业务容器也叫APP容器,并行启动
1.4:镜像拉取策略(image PullPolicy)
-
1、ifnotpresent:默认值,镜像在宿主机上不存在时会拉取
-
2、always:每次创建pod都会重新拉取一次镜像
-
3、never:pod永远不会主动拉取这个镜像
1.5:查看镜像拉取策略(master节点查看)
[root@master ~]# kubectl get pod
NAME READY STATUS RESTARTS AGE
nginx-dbddb74b8-5s6h7 1/1 Running 1 10d
nginx-test-d55b94fd-9zmdj 1/1 Running 0 27h
nginx-test-d55b94fd-b8lkl 1/1 Running 0 27h
nginx-test-d55b94fd-w4c5k 1/1 Running 0 27h
[root@master ~]# kubectl edit deploy/nginx
1.6:编辑一个pod并指定拉去策略
[root@master ~]# cd test/
[root@master test]# ls
nginx-service.yaml nginx-test01.yaml nginx-test02.yaml nginx-test.yaml
[root@master test]# vim pod1.yaml
apiVersion: v1
kind: Pod
metadata:
name: mypod
spec:
containers:
- name: nginx
image: nginx
imagePullPolicy: Always
command: [ "echo", "SUCCESS" ]
[root@master test]# kubectl apply -f pod1.yaml '如果需要更新容器,需要删除原先的容器:kubectl delete -f pod1.yaml,修改yaml文件后使用apply命令重新部署:kubectl apply -f pod1.yaml '
pod/mypod created
[root@master test]# kubectl get pods
NAME READY STATUS RESTARTS AGE
mypod 0/1 ContainerCreating 0 7s
nginx-dbddb74b8-sxr6l 1/1 Running 0 11m
nginx-deployment-d55b94fd-q9vcm 1/1 Running 0 2d5h
nginx-deployment-d55b94fd-xhrv4 1/1 Running 0 11m
nginx-deployment-d55b94fd-xj67v 1/1 Running 0 2d5h
[root@master test]# kubectl get pods
NAME READY STATUS RESTARTS AGE
mypod 0/1 Completed 0 36s
nginx-dbddb74b8-sxr6l 1/1 Running 0 12m
nginx-deployment-d55b94fd-q9vcm 1/1 Running 0 2d5h
nginx-deployment-d55b94fd-xhrv4 1/1 Running 0 12m
nginx-deployment-d55b94fd-xj67v 1/1 Running 0 2d5h
- 查看容器详细信息:
kubectl describe pod 名称
[root@master test]# kubectl describe pod mypod
Name: mypod
Namespace: default
Priority: 0
PriorityClassName: <none>
Node: 20.0.0.54/20.0.0.54
Start Time: Mon, 12 Oct 2020 17:03:54 +0800
Labels: <none>
Annotations: kubectl.kubernetes.io/last-applied-configuration:
{
"apiVersion":"v1","kind":"Pod","metadata":{
"annotations":{
},"name":"mypod","namespace":"default"},"spec":{
"containers":[{
"command":["echo...
Status: Running
IP: