环境初始化
1、编辑主机文件 ,三台虚拟机都需要配置
# vim /etc/hosts
192.168.59.139 master
192.168.59.141 node1
192.168.59.142 node2
2、保持时间一致
# yum install chrony
# vim /etc/chrony.conf
server ntp1.aliyun.com iburst
# 启动服务
systemctl strat chronyd
systemctl enable chronyd
date
3、停用firewalld服务
禁用firewalld:
# systemctl stop firewalld
# systemctl disable firewalld
# firewall-cmd --state
not running
4、禁用selinux
# setenforce 0
# vim /etc/selinux/config
SELINUX=disabled
5、禁用swap分区
# 编辑分区配置文件/etc/fstab,注释掉swap分区一行
6、配置ipvs功能
1 安装ipset和ipvsadm
# yum install ipset ipvsadm -y
2 添加需要加载的模块写入脚本文件
# vim /etc/sysconfig/modules/ipvs.modules
3 为脚本文件添加执行权限
# chmod +x /etc/sysconfig/modules/ipvs.modules
4 执行脚本
# /bin/bash /etc/sysconfig/modules/ipvs.modules
5 查看
lsmod | grep -e ip_vs -e nf_conntrack_ipv4
基础环境准备
1、使用阿里云YUM源
# vim /etc/yum.repos.d/kubernetes.repo
[kubernetes]
name=Kubernetes
baseurl=http://mirrors.aliyun.com/kubernetes/yum/repos/kubernetes-el7-x86_64
enabled=1
gpgcheck=0
repo_gpgcheck=0
gpgkey=http://mirrors.aliyun.com/kubernetes/yum/doc/yum-key.gpg
http://mirrors.aliyun.com/kubernetes/yum/doc/rpm-package-key.gpg
# yum clean all && yum makecache
2、集群软件安装
安装kubeadm、kubelet和kubectl
# yum install kubeadm kubelet kubectl -y
查看可用版本
# yum list kubeadm kubelet kubectl --showduplicates | sort -r
默认安装的就是1.24.X版本的
# yum install kubeadm-1.24.2 kubelet-1.24.2 kubectl-1.24.2
安装的是1.24.2版本的
安装后查查看版本
# kubeadm version
3、配置kubelet的cgroup
# vim /etc/sysconfig/kubelet
KUBELET_EXTRA_ARGS="--cgroup-driver=systemd"
KUBE_PROXY_MODE="ipvs"
4、设置开机自启动
# systemctl enable kubelet
集群创建方式:containerd
1、安装containerd
# Step 1: 安装必要的一些系统工具
yum install -y yum-utils device-mapper-persistent-data lvm2
# Step 2: 添加软件源信息 yum-config-manager --add-repo https://mirrors.aliyun.com/docker- ce/linux/centos/docker-ce.repo
# Step 3 sed -i 's+download.docker.com+mirrors.aliyun.com/docker-ce+' /etc/yum.repos.d/docker-ce.repo
# Step 4:查询软件包 yum list | grep containerd containerd.io.x86_64 1.6.6-3.1.el7 docker- ce-stable
# Step 5:安装软件包 [root@node1 ~]# yum install containerd -y
# Step 6:初始化默认配置 containerd config default | tee /etc/containerd/config.toml
# Step 7:修改containerd配置更改cgroup sed -i "s#SystemdCgroup\ \=\ false#SystemdCgroup\ \=\ true#g" /etc/containerd/config.toml
# Step 8:修改镜像源 sed -i "s#k8s.gcr.io#registry.aliyuncs.com/google_containers#g" /etc/containerd/config.toml
# Step 9:配置crictl
cat /etc/crictl.yaml
runtime-endpoint: unix:///run/containerd/containerd.sock
image-endpoint: unix:///run/containerd/containerd.sock
timeout: 10
debug: false
systemctl daemon-reload
systemctl restart containerd
systemctl enable containerd
# 验证是否可用
crictl pull nginx:alpine
crictl rmi nginx:alpine
crictl images
初始化 Master 节点
1)生成并修改配置文件
生成配置文件
# kubeadm config print init-defaults > kubeadm.yml
修改如下配置:
advertiseAddress:为控制切面地址,( Master 主机 IP )
criSocket:为 containerd 的 socket 文件地址
name: node 修改node为 master
imageRepository:阿里云镜像代理地址,否则拉取镜像会失败
kubernetesVersion:为 k8s 版本
2)初始化 K8S 集群
# 查看所需镜像列表
kubeadm config images list --config kubeadm.yml
# 拉取镜像
kubeadm config images pull --config kubeadm.yml
# 根据配置文件启动 kubeadm 初始化 k8s
kubeadm init --config=kubeadm.yml --upload-certs --v=6
添加 Worker 节点
kubeadm join 192.168.59.139:6443 --token abcdef.0123456789abcdef \
--discovery-token-ca-cert-hash sha256:99e9fdf526f28bb422573e34c903691ba5eb6421048d0c1cdf6df6305c02a2e1
node1
node2
查看集群节点
服务部署
# 部署nginx
[root@master ~]# kubectl create deployment nginx --image=nginx:1.14-alpine
# 暴露端口
[root@master ~]# kubectl expose deployment nginx --port=80 --type=NodePort
# 查看服务状态
[root@master ~]# kubectl get pods,service
这里会出现一个问题
**kubectl命令出现错误“The connection to the server localhost:8080 was refused”**
解决方法:
1.将主节点(master)中的“/etc/kubernetes/admin.conf”文件拷贝到从节点相同目录下
2.配置环境变量
echo "export KUBECONFIG=/etc/kubernetes/admin.conf" >> ~/.bash_profile
3.立即生效
source ~/.bash_profile
最后在电脑上访问下部署的nginx服务