有多台节点的,先配置hosts文件能通信,血的教训!!!!
hostname # 查看本机
hosts文件写上对应ip 和 名称
1.docker成功运行后配置k8s的更新源,推荐阿里云:
echo "deb https://mirrors.aliyun.com/kubernetes/apt/ kubernetes-xenial main" | sudo tee -a /etc/apt/sources.list.d/kubernetes.list
sudo gpg --keyserver keyserver.ubuntu.com --recv-keys BA07F4FB #对安装包进行签名
sudo gpg --export --armor BA07F4FB | sudo apt-key add -
sudo apt-get update
2.关闭虚拟内存
1.sudo swapoff -a #暂时关闭
2.vim /etc/fstab #永久关闭,注释掉swap那一行,推荐永久关闭,需重启,不需要重启的方法没找到
3.安装最新版的k8s:
apt-get install kubeadm=1.18.1-00
apt-get install kubelet=1.18.1-00
apt-get install kubectl=1.18.1-00
# 这里的版本号需要和下面Init的版本对应,不然有可能出现问题
4.其中kubeadm用于初始化环境,kubectl用于操作kubelet。 设置开机启动:
sudo systemctl enable kubelet && systemctl start kubelet
5.使用kubeadm init进行初始化操作:
kubeadm init \
--apiserver-advertise-address=172.16.21.235 \
--image-repository registry.aliyuncs.com/google_containers \
--pod-network-cidr=10.244.0.0/16 --kubernetes-version=v1.18.1
# 指定版本是因为,阿里云上有可能没有最新的镜像源
6.按照提示信息操作,注意切换到普通用户
mkdir -p $HOME/.kube
sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config
sudo chown $(id -u):$(id -g) $HOME/.kube/config
7.配置内部通信 flannel 网络
wget https://raw.githubusercontent.com/coreos/flannel/master/Documentation/kube-flannel.yml
kubectl apply -f kube-flannel.yml
# 查看是否成功
kubectl get pods -n kube-system
8.允许pod部署到master节点
kubectl taint node k8s-master node-role.kubernetes.io/master-
恢复:
kubectl taint node k8s-master node-role.kubernetes.io/master=""
修改ingress端口范围
https://blog.csdn.net/luxiaoruo/article/details/106637355?utm_medium=distribute.pc_relevant_t0.none-task-blog-BlogCommendFromMachineLearnPai2-1.channel_param&depth_1-utm_source=distribute.pc_relevant_t0.none-task-blog-BlogCommendFromMachineLearnPai2-1.channel_param
默认情况下,k8s 集群 nodePort 分配的端口范围为:30000-32767,如果我们指定的端口不在这个范围就会报错:
- 所以我们修改 /etc/kubernetes/manifests/kube-apiserver.yaml 文件,在 command 下添加 --service-node-port-range=1-65535 参数,添加 nodePort 范围参数后会自动生效,无需进行其他操作:
vim /etc/kubernetes/manifests/kube-apiserver.yaml
- 修改ingress.yaml中的配置指定node port
spec:
type: NodePort
ports:
- name: http
port: 80
protocol: TCP
targetPort: http
nodePort: 80
- name: https
port: 443
protocol: TCP
targetPort: https
nodePort: 443