k8s 集群架构图
pod:比container更大的集装箱
1.k8s最小工作单元
2.运行在一个node上
3.pod中的容器共享网络和存储
k8s集群搭建:https://www.cnblogs.com/imstrive/p/11409008.html,搭建过程中极容易出错,耐心。。。
注意点:
注意修改hosts文件,定义hostname
安装pod网络插件时,https://raw.githubusercontent.com/coreos/flannel/a70459be0084506e4ec919aa1c114638878db11b/Documentation/kube-flannel.yml解析异常,解决办法:
1)vi /etc/hosts, 添加 199.232.28.133 raw.githubusercontent.com
2)把原文档改成https://raw.githubusercontent.com/coreos/flannel/master/Documentation/kube-flannel.yml
master删除node节点 kubectl delete nodes node名称
k8s部署pod
使用kubectl apply +yml配置文件
示例:部署单个pod
查看所有pod:kubectl get pod
查看pod具体信息: kubectl describe pod mynginx
查看pod主要信息: kubectl get pod -o wide
在master节点操作pod:kubectl exec -it mynginx /bin/bash
部署deployment(pod集群)
kubectl apply -f mynginx-deployment.yml\
查看deployment: kubectl get deployment
查看deployment详细信息: kubectl describe deployment nginx-deployment
弹性扩缩容:
1.kubectl edit deployment nginx-deployment
2.修改replicas数值
停止deployment: kubectl scale --replicas=0 deployment/nginx-deployment
对node和pod添加标签,进行部署约束和调度约束:
1.添加标签:
2.查看标签:
指定资源部署:
1.修改yml文件,指定标签
对于k8s而言,pod是最小单元,是最底层的东西。更常见的是各种controller
controller:
1.deployment->replicaSet->pod,最常见,多副本部署
2.job,定时任务,跑完自动删除
3.statefulSet 增删改查时,名称始终保持不变
4.daemonSet 一个node上只有一个
deployment滚动升级:修改配置文件,重新apply
1.查看历史版本:kubectl rollout history deployment(apply的时候加上--record方便查看)
2.回滚历史版本:kubectl rollout undo deployment --to-reversion=1
job示例->hello world
服务发现:
1)vim service.yml
2)kubectl apply -f service.yml
3)kubectl get service:查看具体ip
4)正常访问,看到nginx界面(只限于pod间访问,默认clusterIp模式无法提供外部访问)
5)以pod之间服务发现的方式访问(服务名.namespace名:服务端口),显示nginx界面
1.
2.
6)修改service.yml,指定service type,提供外部访问
1.
2.外网访问192.168.3.201:30000,显示nginx
访问策略控制
法兰绒网络不支持策略控制,需要使用canal或者calico等,如果是使用的法兰绒网络,需要重新初始化k8s集群!
1.vim policy.yml
2.
3.
4.带有access=true标签的pod可以正常访问