最困难的耗时间 | kubernetes-the-hard-way
工具:
kubectl
1 | # 节点 |
1 | # 查看当前 minikube 生成集群的基本信息 |
minikube
使用minikube
创建虚拟机,在VirtualBox
里面
需要安装kubernets
kubectl brew install kubectl
1 | # 创建单节点的 K8s 集群 |
- 阿里云安装
minikube
1 | # Mac OSX 验证 |
pod
最小的调度单位
1 | apiVersion: v1 |
1 | kubectl create -f pod_nginx.yml |
1 | ~ kubectl get pods |
1 | ~ kubectl get pods -o wide |
横向扩展
ReplicsSet
:v1
版本不支持,扩展ReplicationController
1 | kubectl get pods |
1 | apiVersion: apps/v1 |
Deployments
- example yaml file
1 | apiVersion: apps/v1 |
1 | # 操作示例 |
看 NAME 会一层一层的加
升级 image
实现平滑升级,过渡
1 | # 对 image 升级 |
回滚
1 | $ kubectl get rs |
Service
port simple example
1 | # 创建 |
对外服务的三种方式(端口)
kubectl expose
yaml
文件定义service
ClusterIP
(外界无法访问)NodePort
(绑定到Node,对外提供访问的)LoadBalancer
(云服务商提供)
- DNS
ClusterIP
内部网络
1 | # ClusterIP |
Rolling Update
todo,task
NodePort
对外提供访问
1 | # pod_nginx.yml |
example
1 | # 创建 pod |
通过yaml文件创建service
1 | # service_nginx.yml |
1 | # lables |
lable
1 | # 先创建 pod |
1 | # pod_busybox.yml |
生产环境一般不用ClusterIP
、NodePort
,而是LoadBalance
、ExternalName
。
LoadBalance
external-dns