1.创建pod资源
pod是最小资源单位.
任何的一个k8s资源都可以由yml清单文件来定义
k8s yaml的主要组成:
apiVersion: v1 api版本
kind: pod 资源类型
metadata: 属性
spec: 详细
1.master节点编写k8s_pod.yml
[root@k8s-master rc]# cat k8s_pod.yml
apiVersion: v1
kind: Pod
metadata:
name: nginx
labels:
app: web
spec:
containers:
- name: nginx
image: 10.0.0.11:5000/nginx:1.13
ports:
- containerPort: 80
2.上传nginx:1.13镜像到仓库
1.导入镜像
docker load -i docker_nginx1.13.tar.gz
2.创建标签
docker tag docker.io/nginx:1.13 10.0.0.11:5000/nginx:1.13
3.上传到本地仓库
docker push 10.0.0.11:5000/nginx:1.13
4.创建资源
kubectl create -f k8s_pod.yml 创建资源
kubectl get pod 查看pod资源
kubectl get pod -o wide 产看资源列表
kubectl describe pod nginx 产看资源描述
此时会发现pull不到镜像
5.去私有仓库上传镜像
docker load -i pod-infrastructure-latest.tar.gz
docker tag docker.io/tianyebj/pod-infrastructure:latest 10.0.0.11:5000/pod-infrastructure:latest
docker push 10.0.0.11:5000/pod-infrastructure:latest
5.修改镜像配置文件/etc/kubernetes/kubelet地址到私有仓库(所有节点)
KUBELET_POD_INFRA_CONTAINER="--pod-infra-container-image=10.0.0.11:5000/pod-infrastructure:latest"
重启 systemctl restart kubelet.service
2.创建ReplicationController资源
通过metadata标签选择器管理pod
rc:保证指定数量的pod始终存活,rc通过标签选择器来关联pod
k8s资源的常见操作:
kubectl create -f xxx.yaml 创建
kubectl get pod|rc 查看资源列表
kubectl describe pod nginx 查看资源描述
kubectl delete pod nginx 或者kubectl delete -f xxx.yaml 删除资源
kubectl edit pod nginx 修改资源配置
-
创建一个rc
1.master节点编写rc.yml
[root@k8s-master rc]# cat rc.yml
apiVersion: v1
kind: ReplicationController
metadata:
name: nginx
spec:
replicas: 5 #副本5
selector:
app: myweb
template:
metadata:
labels:
app: myweb
spec:
containers:
- name: myweb
image: 10.0.0.11:5000/nginx:1.13
ports:
- containerPort: 80
2.创建资源
kubectl create -f rc.yml
-
rc滚动的升级和回滚
rc的滚动升级 新建一个nginx-rc1.15.yaml
升级 kubectl rolling-update nginx -f nginx-rc1.15.yaml --update-period=10s
回滚 kubectl rolling-update nginx2 -f nginx-rc.yaml --update-period=1s
--update-period 指定升级间隔时间
3.service资源
- service默认使用iptables来实现负载均衡, k8s 1.8新版本中推荐使用lvs(四层负载均衡 传输层tcp,udp)
命令行创建service资源
kubectl expose rc nginx --type=NodePort --port=80
kubectl expose 资源类型 资源名称 端口类型 暴漏端口
-
创建一个svc
1.编写yml文件
[root@k8s-master deploy]# cat svc.yml
apiVersion: v1
kind: Service
metadata:
name: myweb
spec:
type: NodePort #ClusterIP
ports:
- port: 80 #clusterIP
nodePort: 30000 #node port
targetPort: 80 #pod port
selector:
app: myweb2
2.创建资源
kubectl create -f svc.yml
kubectl scale rc nginx --replicas=2 非交互式修改副本数量
kubectl exec -it pod_name /bin/bash 进入容器
3.修改nodePort范围
vim /etc/kubernetes/apiserver
KUBE_API_ARGS="--service-node-port-range=3000-50000"
4.deployment资源
-
创建
1.编写yml文件
[root@k8s-master deploy]# cat deploy.yml
apiVersion: extensions/v1beta1
kind: Deployment
metadata:
name: nginx-deployment
spec:
replicas: 3
template:
metadata:
labels:
app: nginx
spec:
containers:
- name: nginx
image: 10.0.0.11:5000/nginx:1.13
ports:
- containerPort: 80
resources:
limits:
cpu: 100m
requests:
cpu: 100m
2.命令行创建deployment
kubectl run nginx --image=10.0.0.11:5000/nginx:1.13 --replicas=3 --record
-
升级和回滚
命令行创建deployment
kubectl run nginx --image=10.0.0.11:5000/nginx:1.13 --replicas=3 --record
命令行升级版本
kubectl set image deploy nginx nginx=10.0.0.11:5000/nginx:1.15
查看deployment所有历史版本
kubectl rollout history deployment nginx
deployment回滚到上一个版本
kubectl rollout undo deployment nginx
deployment回滚到指定版本
kubectl rollout undo deployment nginx --to-revision=2