K8S

1 命名空间

kubectl create ns hello
kubectl delete ns hello
# 创建ymal文件 ns.yaml
apiVersion: v1
kind: Namespace
metadata:
name: hello

使用文件操作

创建命名空间
kubectl apply -f ns.yaml
删除命名空间
kubectl delete -f ns.yaml
查看命名空间
kubectl get ns
查看指定命名空间中内容
kubectl get pods -n default

2 POD

运行中的一组容器,Pod是kubernetes中应用的最小单位.

使用命令行创建pod

kubectl run mynginx --image=nginx

# 查看default名称空间的Pod
kubectl get pod
# 描述
kubectl describe pod 你自己的Pod名字
# 删除
kubectl delete pod Pod名字
# 查看Pod的运行日志
kubectl logs Pod名字

# 每个Pod - k8s都会分配一个ip
kubectl get pod -owide
# 使用Pod的ip+pod里面运行容器的端口
curl 192.168.169.136

查看日志
kubectl log mynginx
kubectl log -f mynginx 持续显示日志信息

# 集群中的任意一个机器以及任意的应用都能通过Pod分配的ip来访问这个Pod

K8S

1/1  第一个1为正在允许的软件 第二个1为改pod中总共有几个软件

K8S

创建一个pod:kubectl run mynginx --image=nginx

使用yaml配置文件创建pod

apiVersion: v1
kind: Pod
metadata:
labels:
run: mynginx
name: mynginx
namespace: default
spec:
containers:
- image: nginx
name: mynginx

一个pod中安装两个容器

apiVersion: v1
kind: Pod
metadata:
labels:
run: myapp
name: myapp
spec:
containers:
- image: nginx
name: nginx
- image: tomcat:8.5.68
name: tomcat

命令行进入容器内

K8S

3部署Deployment

# 清除所有Pod,比较下面两个命令有何不同效果?

kubectl run mynginx --image=nginx

kubectl create deployment mytomcat --image=tomcat:8.5.68
# 自愈能力
使用deployment 部署时 删除容器时 会自动重启一台新的容器

多副本安装

kubectl create deployment my-dep --image=nginx --replicas=3

K8S

使用可视化界面部署

K8S

使用配置文件部署

apiVersion: apps/v1
kind: Deployment
metadata:
labels:
app: my-dep
name: my-dep
spec:
replicas: 3
selector:
matchLabels:
app: my-dep
template:
metadata:
labels:
app: my-dep
spec:
containers:
- image: nginx
name: nginx

K8S

4 pod 的扩容和缩容

kubectl scale --replicas=5 deployment/my-dep

kubectl edit deployment my-dep

#修改 replicas

5、自愈&故障转移

  • 停机
  • 删除Pod
  • 容器崩溃

当容器宕机的话,部署项目会自动重启项目,如果出现服务器关机,

6、滚动更新

kubectl set image deployment/my-dep nginx=nginx:1.16.1 --record
kubectl rollout status deployment/my-dep
# 修改 kubectl edit deployment/my-dep

7 版本回退

#历史记录
kubectl rollout history deployment/my-dep


#查看某个历史详情
kubectl rollout history deployment/my-dep --revision=2

#回滚(回到上次)
kubectl rollout undo deployment/my-dep

#回滚(回到指定版本)
kubectl rollout undo deployment/my-dep --to-revision=2

更多:

除了Deployment,k8s还有 ​​StatefulSet​​ 、​​DaemonSet​​ 、​​Job​​ 等 类型资源。我们都称为 ​​工作负载​​。

有状态应用使用 ​​StatefulSet​​ 部署,无状态应用使用 ​​Deployment​​ 部署

​https://kubernetes.io/zh/docs/concepts/workloads/controllers/​

K8S

8 Service

将一组 ​Pods​ 公开为网络服务的抽象方法

#暴露Deploy
kubectl expose deployment my-dep --port=8000 --target-port=80

#使用标签检索Pod
kubectl get pod -l app=my-dep
apiVersion: v1
kind: Service
metadata:
labels:
app: my-dep
name: my-dep
spec:
selector:
app: my-dep
ports:
- port: 8000
protocol: TCP
targetPort: 80

1、ClusterIP

# 等同于没有--type的
kubectl expose deployment my-dep --port=8000 --target-port=80 --type=ClusterIP
apiVersion: v1
kind: Service
metadata:
labels:
app: my-dep
name: my-dep
spec:
ports:
- port: 8000
protocol: TCP
targetPort: 80
selector:
app: my-dep
type: ClusterIP

2、NodePort

kubectl expose deployment my-dep --port=8000 --target-port=80 --type=NodePort
apiVersion: v1
kind: Service
metadata:
labels:
app: my-dep
name: my-dep
spec:
ports:
- port: 8000
protocol: TCP
targetPort: 80
selector:
app: my-dep
type: NodePort

NodePort范围在 30000-32767 之间

发表评论

相关文章