k8s中部署Nginx
kubectl create deployment nginx --image=nginx
kubectl create deployment tomcat --image=tomcat
kubectl get nodes
kubectl get pod
kubectl get deployment
kubectl get service
kubectl get namespace
kubectl get node -o wide
pod的几种状态
1)Pending:Pod创建已经提交给k8s,但是因为某种原因不能顺利创建,例如下载镜像慢,调度不成功等
2)Running:Pod已经绑定到一个节点上了,并且已经创建了所有容器。只是有一个容器正在运行,或者在启动中
3)Secceeded:Pod中的所有容器都已经成功终止,不能重新启动
4)Failed: Pod中所有的容器均已经终止,且至少有一个容器已经在故障中终止
5)Unkown:由于某中原因apiserver无法获取到Pod的状态。通常是由于Master与pod所在的主机失去连接了
暴漏nginx端口
kubectl expose deployment nginx --port=80 --type=NodePort
暴漏tomcat端口
kubectl expose deployment tomcat --port=8080 --type=NodePort
kubectl describe pods pods名称
删除控制器
kubectl delete deployment 控制器名称 名称是get查出来的,控制器删除Pod就跟随删除
kubectl delete pod pod名称
kubectl delete service service名称
Kubernetes部署容器化应用步骤
1、制作镜像(自定义dockerfile制作、从远程仓库或者本地仓库拉取)
2、通过控制器管理pod(就是把镜像启动到一个容器里,容器在Pod里)
3、暴露应用,以便外界访问
自定义jdk镜像Dockerfile
FROM centos:latest
MAINTAINER long
ADD jdk-8u301-linux-x64.tar.gz /usr/local/java
ENV JAVA_HOME /usr/local/java/jdk1.8.0_301
ENV CLASSPATH $JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar
ENV PATH $PATH:$JAVA_HOME/bin
CMD java --version
构建镜像
docker build -t jdk1.8.0_301 .
kubectl create deployment jdk1.8.0_301-k8s --image=jdk1.8.0_301 --dry-run -o yaml>>java.yaml 试运行
kubectl create deployment c_jdk1.8.0_301 --image=jdk1.8.0_301 --dry-run -o yaml
apiVersion: apps/v1
kind: Deployment
metadata:
creationTimestamp: null
labels:
app: c_jdk1.8.0_301
name: c_jdk1.8.0_301
spec:
replicas: 1
selector:
matchLabels:
app: c_jdk1.8.0_301
strategy: {}
template:
metadata:
creationTimestamp: null
labels:
app: c_jdk1.8.0_301
spec:
containers:
- image: jdk1.8.0_301
name: jdk1-8-0-301-9x27g
resources: {}
status: {}
如果上面镜像- image: jdk1.8.0_301在本地,需要添加一行imagePullPoliy: Never,代表不从远程拉取
spec:
containers:
- image: jdk1.8.0_301
name: jdk1-8-0-301-k6vtb
imagePullPoliy: Never
resources: {}
status: {}