赞
踩
建议最小硬件配置: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
# 编辑三台服务器的 /etc/hosts 文件 ,添加下面内容:
192.168.106.140 master
192.168.106.141 node1
192.168.106.142 node2
# 设置各个服务器 hostname
hostnamectl set-hostname master
hostnamectl set-hostname node1
hostnamectl set-hostname node2
#没有安装环境可使用
yum install chrony
#启动chronyd服务
systemctl start chronyd
systemctl enable chronyd
date
# 关闭firewalld服务
systemctl stop firewalld
systemctl disable firewalld
# 关闭selinux服务(重启后才生效)
sed -i 's/enforcing/disabled/' /etc/selinux/config
# 编辑分区配置文件/etc/fstab,注释掉swap分区一行 注意修改完毕之后需要重启linux服务
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
yum install -y yum-utils # 设置docker仓库镜像地址 yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo # 安装下载docker yum install docker-ce docker-ce-cli containerd.io # 设置docker开机启动 systemctl enable docker && systemctl start docker # 配置docker 镜像加速器 cd /etc mkdir docker vim daemon.json 追加 { "exec-opts": ["native.cgroupdriver=systemd"], "registry-mirrors": ["https://kn0t2bca.mirror.aliyuncs.com"] } # 重启docker服务 systemctl restart docker
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
yum install -y kubelet-1.23.0 kubeadm-1.23.0 kubectl-1.23.0
#设置kubelet开机启动
systemctl enable kubelet
# 下面的操作只需要在master节点上执行即可(初始化完成后会很慢,最后会输出一个join命令,可以先保存后边会用) 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 #集群通告地址(master 机器IP) –image-repository #由于默认拉取镜像地址k8s.gcr.io国内无法访问,这里指定阿里云镜像仓库地址 –kubernetes-version #K8s版本,与上面安装的一致 –service-cidr #集群内部虚拟网络,Pod统一访问入口 –pod-network-cidr #Pod网络,与下面部署的CNI网络组件yaml中保持一致 #创建必要文件 mkdir -p $HOME/.kube sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config sudo chown $(id -u):$(id -g) $HOME/.kube/config
# 下面的操作只需要在node节点上执行即可(下面的命令是 k8s初始化的时候 生成的)
kubeadm join 192.168.106.140:6443 --token oqniu3.qhz7h2oce46laify \
--discovery-token-ca-cert-hash sha256:00c1154563a071025439fc56fe66a141c64af5bd779f7afd282302898a2b1c02
Calico是一个纯三层的数据中心网络方案,是目前Kubernetes主流的网络方案。 下载YAML: wget https://docs.projectcalico.org/manifests/calico.yaml #下载完后还需要修改里面定义Pod网络(CALICO_IPV4POOL_CIDR),与前面kubeadm init的 –pod-network-cidr指定的一样 # 大概在 4601行 - 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 # 至此K8s已经部署完成。
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实例
# 从节点无法获取 pod root@k8s-node1 ~]# kubectl get pod 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没有与本机绑定,集群初始化的时候没有绑定 此时设置在本机的环境变量即可解决问题。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。