K8S之Pod资源管理+私有仓库创建
文章目录Pod特点Pod容器分类镜像拉取策略(imagePullPolicy)查看已创建资源的镜像拉取策略创建一个Pod示例资源创建Harbor私有仓库及操作Tomcat镜像问题对私有仓库的镜像下载与访问创建资源从harbor中下载镜像Pod特点最小部署单元一组容器的集合一个Pod中的容器共享网络命令空间Pod是短暂的Pod容器分类infrastructure container 基础容器作用:维
·
文章目录
Pod特点
- 最小部署单元
- 一组容器的集合
- 一个Pod中的容器共享网络命令空间
- Pod是短暂的
Pod容器分类
- infrastructure container 基础容器
作用:维护整个Pod网络空间。
#在node节点查看
cat /opt/kubernetes/cfg/kubelet
#每次创建Pod时候就会创建,与Pod对应,对于用户是透明的
docker ps
-
initcontainers 初始化容器
先于业务容器开始执行,原先Pod中容器是并行开启,现在进行了改进 -
container 业务容器
并行启动
在官网查看:https://kubernetes.io/docs/concepts/workloads/pods/init-containers/
镜像拉取策略(imagePullPolicy)
- IfNotPresent:默认值,镜像在宿主机上不存在时才拉取
- Always:每次创建Pod都会重新拉取一次镜像
- Never:Pod永远不会主动拉取这个镜像
#示例
kubectl apply -f - <<EOF
apiVersion: v1
kind: Pod
metadata:
name: private-image-test-1
spec:
containers:
- name: uses-private-image
image: $PRIVATE_IMAGE_NAME
imagePullPolicy: Always
command: [ "echo", "SUCCESS" ]
EOF
查看已创建资源的镜像拉取策略
kubectl edit deployment/nginx
创建一个Pod示例资源
cd demo/
vim pod1.yaml
kubectl create -f pod1.yaml
apiVersion: v1
kind: Pod
metadata:
name: mypod
spec:
containers:
- name: nginx
image: nginx
imagePullPolicy: Always
command: [ "echo", "SUCCESS" ]
- 查看资源发现运行失败
- 主要原因是:是因为命令启动冲突
vim pod1.yaml
#删除 command: [ "echo", "SUCCESS" ]
#同时更改一下版本
image: nginx:1.14
#删除原有的资源
kubectl delete -f pod1.yaml
#更新资源
kubectl apply -f pod1.yaml
kubectl get pods
- 查看分配节点
kubectl get pods -o wide
- 在结点查看头部信息
curl -I 172.17.71.5
创建Harbor私有仓库及操作
- 安装Harbor
- node节点配置连接私有仓库(注意后面的逗号要添加)
- 重启docker服务
systemctl restart docker
#登录harbor私有仓库
docker login 192.168.18.80
Username: admin
Password: //输入密码Harbor12345
- 下载Tomcat镜像进行推送
docker pull tomcat
[Using default tag: latest
latest: Pulling from library/tomcat
dc65f448a2e2: Pull complete
346ffb2b67d7: Pull complete
dea4ecac934f: Pull complete
8ac92ddf84b3: Pull complete
d8ef64070a18: Pull complete
6577248b0d6e: Pull complete
576c0a3a6af9: Pull complete
6e0159bd18db: Pull complete
8c831308dd9e: Pull complete
c603174def53: Pull complete
Digest: sha256:e895bcbfa20cf4f3f19ca11451dabc166fc8e827dfad9dd714ecaa8c065a3b18
Status: Downloaded newer image for tomcat:latest
docker.io/library/tomcat:latest
- 将其上传至私有仓库
#推送格式
docker tag SOURCE_IMAGE[:TAG] 192.168.195.80/project/IMAGE[:TAG]
#打标签
docker tag tomcat 192.168.18.80/cz_project/tomcat
//推送成功
docker push 192.168.18.80/cz_project/tomcat
#进行进项下载问题就会出现,需要登录才能下载
#原因:缺少仓库的凭据
[root@localhost ~]# docker pull 192.168.18.80/cz_project/tomcat
Using default tag: latest
Error response from daemon: pull access denied for 192.168.195.80/project/tomcat,
repository does not exist or may require 'docker login':
denied: requested access to the resource is denied
Tomcat镜像问题
-
因为Tomcat版本有所不同则会导致登录页面出现404的现象,推荐使用8.0.52版本。
-
在node节点上拉取镜像
docker pull tomcat:8.0.52
- 在master编写yaml文件
vim tomcat-deployment.yaml
apiVersion: extensions/v1beta1
kind: Deployment
metadata:
name: my-tomcat
spec:
replicas: 2
template:
metadata:
labels:
app: my-tomcat
spec:
containers:
- name: my-tomcat
image: docker.io/tomcat:8.0.52
ports:
- containerPort: 80
---
apiVersion: v1
kind: Service
metadata:
name: my-tomcat
spec:
type: NodePort
ports:
- port: 8080
targetPort: 8080
nodePort: 31111
selector:
app: my-tomcat
- 创建tomcat资源
kubectl create -f tomcat-deployment.yaml
#速度很快,是因为本地有tomcat镜像
kubectl get pods
kubectl get svc
- 测试网页
- 输入:http://192.168.18.20:31111/
- 输入:http://192.168.18.30:31111/
- 如果遇到处于Terminating状态的无法删除的资源如何处理?
- 这种情况下可以使用强制删除命令:
kubectl delete pod [pod name] --force --grace-period=0 -n [namespace]
对私有仓库的镜像下载与访问
- node1上操作(之前登陆过harbor仓库的节点)
#镜像打标签
docker tag tomcat:8.0.52 192.168.18.80/cz_project/tomcat
#上传镜像到harbor
docker push 192.168.18.80/cz_project/tomcat
#查看登陆凭据(不能自动转行)
cat .docker/config.json |base64 -w 0
ewoJImF1dGhzIjogewoJCSIxOTIuMTY4LjE5NS44MCI6IHsKCQkJImF1dGgiOiAiWVdSdGFXNDZTR0Z5WW05eU1USXpORFU9IgoJCX0KCX0sCgkiSHR0cEhlYWRlcnMiOiB7CgkJIlVzZXItQWdlbnQiOiAiRG9ja2VyLUNsaWVudC8xOS4wMy41IChsaW51eCkiCgl9Cn0=
- 在Master上操作
#创建secret资源
vim registry-pull-secret.yaml
apiVersion: v1
kind: Secret
metadata:
name: registry-pull-secret
data:
.dockerconfigjson: ewoJImF1dGhzIjogewoJCSIxOTIuMTY4LjE5NS44MCI6IHsKCQkJImF1dGgiOiAiWVdSdGFXNDZTR0Z5WW05eU1USXpORFU9IgoJCX0KCX0sCgkiSHR0cEhlYWRlcnMiOiB7CgkJIlVzZXItQWdlbnQiOiAiRG9ja2VyLUNsaWVudC8xOS4wMy41IChsaW51eCkiCgl9Cn0=
type: kubernetes.io/dockerconfigjson
kubectl create -f registry-pull-secret.yaml
#查看secret资源
kubectl get secret
创建资源从harbor中下载镜像
vim tomcat-deployment.yaml
apiVersion: extensions/v1beta1
kind: Deployment
metadata:
name: my-tomcat
spec:
replicas: 2
template:
metadata:
labels:
app: my-tomcat
spec:
imagePullSecrets:
- name: registry-pull-secret #需要修改
containers:
- name: my-tomcat
image: 192.168.18.80/project/tomcat #需要修改
ports:
- containerPort: 80
---
apiVersion: v1
kind: Service
metadata:
name: my-tomcat
spec:
type: NodePort
ports:
- port: 8080
targetPort: 8080
nodePort: 31111
selector:
app: my-tomcat
kubectl create -f tomcat-deployment.yaml
- 登录私有仓库,发现镜像被下载了2次
更多推荐
已为社区贡献11条内容
所有评论(0)