server2
kubeadm config print init-defaults #查看默认配置信息
默认从k8s.gci.io上下载组件镜像,需要翻墙才可以,所以需要修改镜像仓库:
kubeadm config images list --image-repository registry.aliyuncs.com/google_containers #列出所需镜像
rpm -q kubeadm #kubeadm可以部署更低的版本
#kubeadm config images pull -image-repository registry.aliyuncs.com/google_containers #拉取镜像
#kubeadm init --pod-network-cidr=10.244.0.0/16 --image-repository registry.aliyuncs.com/google_containers #初始化集群
--pod-network-cidr=10.244.0.0/16 #使用flannel网络组件时必须添加
--kubernetes-version #指定k8s安装版本
server1
docker images
docker images | grep -v REPOSITORY #列出所有镜像
docker images | grep -v REPOSITORY | awk '{system("docker rmi "$1":"$2"")}'
docker ps
docker images
df -h /
使用相同命令拉取镜像
再把这些镜像上传到私有仓库中,再仓库中新建一个项目
公开
docker images | grep aliyuncs
把这些镜像改成私有层过滤源
docker images | grep aliyuncs | awk '{print $1":"$2}'
docker images | grep aliyuncs | awk '{print $1":"$2}' | awk -F/ '{system("docker tag "$0" reg.westos.org/k8s/"$3"")}' $0表示全部 F/表示
docker images
docker images | grep k8s | awk '{system("docker push "$1":"$2"")}'
server2 做管理端
kubeadm config images list --image-repository reg.westos.org/k8s
kubeadm config images pull --image-repository reg.westos.org/k8s
kubeadm init --pod-network-cidr=10.244.0.0/16 --image-repository reg.westos.org/k8s #--pod-network-cidr=10.244.0.0/16这个选项是为了给后面flannel插件准备的
docker ps 整个k8s的组件都是通过容器来运行的。
export KUBECONFIG=/etc/kubernetes/admin.conf
kubectl get node
其中生成的是连接集群的证书
kubectl get pod -n kube-system
echo "source <(kubectl completion bash)" >> ~/.bashrc
source .bashrc #使之生效 ,交互时使用kubectl
kubectl get pod --all-namespaces #缺少网络组件,则会出现以下情况
kubectl get node
vim .bash_profile
添加网络组件,在以下位置
yum install -y wget
ls
vim kube-flannel.yml
在命令模式下 /image
我们都是在内网环境下部署的,所以,以后就是把镜像全部放在私有仓库中。
server1
仓库中的镜像和配置文件里的进行吻合,因为每个节点上的私有仓库已经提前设置好了,所以文件中指向的所有镜像路径都是指向私有仓库的。只要确保私有仓库中有那个项目就可以。然后再把镜像往其中放。
server1
server2
kubectl apply -f kube-flannel.yml 如果出现警告忽略。
kubectl get pod -n kube-system
kubectl get node
其他节点只需要执行以下指令,剩下的不用动
server2
kubectl get node 确保其余节点准备就绪
kubectl get pod --all-namespaces 容器状态必须是running,这个时候就可以部署集群。
kubeadm token list 一般token过了24小时就过期了,要重新create
其他节点上没有.bash_profile,所以不能操作集群的,会出现以下情况
server2
cat /etc/kubernetes/admin.conf #证书得时间是一年。
ls
kubectl get ns
kubectl get node
初始化过程中遇到的问题:
镜像后面是none的,在删除的时候,后面加镜像id删除
kubectl logs kube-proxy-nccp2 -n kube-system #查看有问题的服务
kubectl describe pod kube-proxy-nccp2 -n kube-system #可以查看具体信息,可以列出来pod在初始化过程中遇到的什么问题,比如镜像没有拉取。-n kube-system 列出指定的namespace.
docker ps
添加时,一定要重置
kubeadm reset
有的时候因为它已经运行起来了,会控制防火墙,会在防火墙中添加很多策略,也会导致网络有问题。
在其他节点,可以reset重启之后,可以自动把iptables刷掉
以上代码是把节点上的所有pod全部删除。
如果在init和join上出现问题,只需要执行以下两条命令就可以了
server2
kubectl get nodes
删除节点在master上进行