阿里云国内75折 回扣 微信号:monov8 |
阿里云国际,腾讯云国际,低至75折。AWS 93折 免费开户实名账号 代冲值 优惠多多 微信号:monov8 飞机:@monov6 |
k8s无脑搭建
建议最小硬件配置:2核CPU、2G内存、20G硬盘 服务器最好可以访问
软件环境:
软件 版本
操作系统 CentOS7.9_x64 mini
Docker 23-ce
Kubernetes 1.23
服务器:
master 192.168.106.140
node1 192.168.106.141
node2 192.168.106.142
主机名解析(以下命令 所有节点都要执行)
192.168.106.140 master
192.168.106.141 node1
192.168.106.142 node2
hostnamectl set-hostname master
hostnamectl set-hostname node1
hostnamectl set-hostname node2
时间同步(所有节点)
yum install chrony
systemctl start chronyd
systemctl enable chronyd
date
禁用selinux和firewalld服务(所有节点)
systemctl stop firewalld
systemctl disable firewalld
sed -i 's/enforcing/disabled/' /etc/selinux/config
禁用swap分区(所有节点)
vi /etc/fstab
/dev/mapper/centos-swap swap
添加网桥过滤和地址转发功能(所有节点)
cat > /etc/sysctl.d/kubernetes.conf << EOF
net.bridge.bridge-nf-call-ip6tables = 1
net.bridge.bridge-nf-call-iptables = 1
net.ipv4.ip_forward = 1
EOF
sysctl --system
docker安装(所有节点)
yum install -y yum-utils
yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
yum install docker-ce docker-ce-cli containerd.io
systemctl enable docker && systemctl start docker
cd /etc
mkdir docker
vim daemon.json
追加
{
"exec-opts": ["native.cgroupdriver=systemd"],
"registry-mirrors": ["https://kn0t2bca.mirror.aliyuncs.com"]
}
systemctl restart docker
kubernetes镜像切换成国内源(所有节点)
cat << EOF > /etc/yum.repos.d/kubernetes.repo
[kubernetes]
name=kubernetes
baseurl=https://mirrors.aliyun.com/kubernetes/yum/repos/kubernetes-el7-x86_64/
enabled=1
gpgcheck=1
repo_gpgcheck=1
gpgkey=https://mirrors.aliyun.com/kubernetes/yum/doc/yum-key.gpg https://mirrors.aliyun.com/kubernetes/yum/doc/rpm-package-key.gpg
EOF
安装指定版本 kubeadm kubelet和kubectl(所有节点)
yum install -y kubelet-1.23.0 kubeadm-1.23.0 kubectl-1.23.0
systemctl enable kubelet
部署Kubernetes(master)
kubeadm init \
--apiserver-advertise-address=192.168.106.140 \
--image-repository registry.aliyuncs.com/google_containers \
--kubernetes-version v1.23.0 \
--service-cidr=10.96.0.0/12 \
--pod-network-cidr=10.244.0.0/16 \
--ignore-preflight-errors=all
–apiserver-advertise-address
–image-repository
–kubernetes-version
–service-cidr
–pod-network-cidr
mkdir -p $HOME/.kube
sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config
sudo chown $(id -u):$(id -g) $HOME/.kube/config
从节点执行(node1和node2) 把初始化生成的 join 命令 在这里执行
kubeadm join 192.168.106.140:6443 --token oqniu3.qhz7h2oce46laify \
--discovery-token-ca-cert-hash sha256:00c1154563a071025439fc56fe66a141c64af5bd779f7afd282302898a2b1c02
部署容器网络CNI(master)
Calico是一个纯三层的数据中心网络方案是目前Kubernetes主流的网络方案。 下载YAML:
wget https://docs.projectcalico.org/manifests/calico.yaml
- name: CALICO_IPV4POOL_CIDR
value: "10.244.0.0/16"
kubectl apply -f calico.yaml
kubectl get all -owide
kubectl get pods -n kube-system
部署nginx测试
kubectl create deployment nginx --image=nginx
kubectl expose deployment nginx --port=80 --type=NodePort
kubectl scale --replicas=2 deployment nginx
kubectl get all -owide 看 nginx 端口
以上命令开启了两个nginx 实例 请求master ip端口 会发现只按一个实例请求
突然down掉某一个 所有请求会落到另一个nginx实例
遇到的问题
root@k8s-node1 ~]
The connection to the server localhost:8080 was refused - did you specify the right host or port?
执行命令
echo "export KUBECONFIG=/etc/kubernetes/kubelet.conf" >> /etc/profile
source /etc/profile
再次查看 kubectl get pod 已经正常。
原因: kubernetes node没有与本机绑定集群初始化的时候没有绑定
此时设置在本机的环境变量即可解决问题。