k8s安装
安装方式
kubeadm方式
环境准备
三台centos7.9
ip | 配置 | 名称 |
---|---|---|
192.168.10.200 | 2-4-50 | k8s-master |
192.168.10.201 | 1-2-50 | node01 |
192.168.10.202 | 1-2-50 | node02 |
每台机器的前置准备
- 配置host文件
- 禁用防火墙
- 禁用selinux
- 禁用swap分区
- 修改linux内核参数
- 配置ipvs功能
- 时间同步
脚本内容如下, 执行时需要 加上 主机名
#!/bin/bash
#设置需要修改的主机名
name=$1
echo "修改后的名称:$1"
#获取名称
echo "mingzi:$name"
if [ -z $name ];
then
echo "请输入你的主机名称"
exit -1
fi
#获取本机的IP地址
ip=`ip a | grep ens33 | grep inet | awk '{print $2}' |sed 's/\/.*//'`
#追加到hosts
echo "$ip $name" >> /etc/hosts
#关闭防火墙
systemctl stop firewalld
systemctl disable firewalld
#禁用selinux
sed -i 's/enforcing/disabled/' /etc/selinux/config
#禁用swap分区
sed -ri 's/.*swap.*/#&/' /etc/fstab
#修改linux内核参数
echo "net.bridge.bridge-nf-call-ip6tables = 1
net.bridge.bridge-nf-call-iptables = 1
net.ipv4.ip_forward = 1" >> /etc/sysctl.d/kubernetes.conf
#重新加载配置
sysctl -p
#加载网桥过滤模块
modprobe br_netfilter
#查看网桥过滤模块是否加载成功
lsmod|grep br_netfilter
#配置ipvs功能
yum -y install ipset ipvsadm
#添加需要加载的模块,写入到脚本文件中
echo "#!/bin/bash
modprobe -- ip_vs
modprobe -- ip_vs_rr
modprobe -- ip_vs_wrr
modprobe -- ip_vs_sh
modprobe -- nf_conntrack_ipv4" >> /etc/sysconfig/modules/ipvs.modules
#增加可执行权限
chmod +x /etc/sysconfig/modules/ipvs.modules
#执行脚本文件
/bin/bash /etc/sysconfig/modules/ipvs.modules
#查询对应模块是否加载成功
lsmod |grep -e ip_vs -e nf_conntrack_ipv4
#时间同步
yum install ntpdate -y
ntpdate ntp3.aliyun.com
#重启
reboot
配置host解析让三台可以互相访问
192.168.10.200 k8s-master
192.168.10.201 node1
192.168.10.202 node2
每台机器安装docker
vim docker-install.sh
#!/bin/bash
sudo yum remove docker \
docker-client \
docker-client-latest \
docker-common \
docker-latest \
docker-latest-logrotate \
docker-logrotate \
docker-engine
sudo yum install -y yum-utils
sudo yum-config-manager \
--add-repo \
http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
#安装最新版本
sudo yum install -y docker-ce docker-ce-cli containerd.io
systemctl enable docker --now
sudo mkdir -p /etc/docker
sudo tee /etc/docker/daemon.json <<-'EOF'
{
"log-driver":"json-file",
"log-opts":{
"max-size":"500m",
"max-file":"3"
},
"exec-opts":[
"native.cgroupdriver=systemd"
],
"registry-mirrors":[
"https://kfwkfulq.mirror.aliyuncs.com",
"https://2lqq34jg.mirror.aliyuncs.com",
"https://pee6w651.mirror.aliyuncs.com",
"https://registry.docker-cn.com",
"http://hub-mirror.c.163.com",
"https://39dvdikp.mirror.aliyuncs.com"
]
}
EOF
sudo systemctl daemon-reload
sudo systemctl restart docker
每台机器安装kubeadm,kubelet,kubectl
vim kubectl-install.sh
#!/bin/bash
#添加kubernetes软件源
cat > /etc/yum.repos.d/kubernetes.repo << EOF
[kubernetes]
name=Kubernetes
baseurl=https://mirrors.aliyun.com/kubernetes/yum/repos/kubernetes-el7-x86_64
enabled=1
gpgcheck=0
repo_gpgcheck=0
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.8 kubeadm-1.23.8 kubectl-1.23.8
#设置开机启动
systemctl enable kubelet
查看版本
kubectl version
kubeadm初始化master节点
替换 apiserver-advertise-address 为你的master对应ip
kubeadm init \
--apiserver-advertise-address=192.168.10.200 \
--image-repository registry.aliyuncs.com/google_containers \
--kubernetes-version v1.23.8 \
--service-cidr=10.96.0.0/12 \
--pod-network-cidr=10.244.0.0/16 \
--ignore-preflight-errors=all \
--v=6
执行以后效果如下所示
按照提示进行命令输入
mkdir -p $HOME/.kube
sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config
sudo chown $(id -u):$(id -g) $HOME/.kube/config
工作节点执行如下命令
kubeadm join 192.168.10.200:6443 --token hoep4w.1cfsjsqehktv83gk \
--discovery-token-ca-cert-hash sha256:9d11b404dec2b621ab0238819c415a5a2a5ca5b0db891e8c06f19b4676a6e508
查看结果
kubectl get node
效果如下所示
安装网络组件
这里需要等待一段时间
kubectl apply -f https://docs.projectcalico.org/v3.23/manifests/calico.yaml
测试
kubectl create deployment nginx --image=nginx
kubectl expose deployment nginx --port=80 --type=NodePort