Kubernetes学习记录(二):使用kubeadm快速部署一个单master集群
1. 配置要求
至少三台虚拟机,一个master两个node
硬件配置:2GBRAM,2个CPU,30GB磁盘
操作系统:centos 7.x
禁止swap分区
可以访问外网,网络互通
角色 | IP |
k8s-master | 192.168.241.133 |
k8s-node1 | 192.168.241.132 |
k8s-node2 | 192.168.241.131 |
2. 配置步骤
########################在所有节点上执行#####################################
(1)关闭防火墙
systemctl stop firewalld
systemctl disable firewalld #永久
(2)关闭selinux
sed -i 's/enforcing/disabled/' /etc/selinux/config # 永久
setenforce 0 # 临时
(3)关闭swap
swapoff -a #临时
vim /etc/fstab # 永久,注释掉swap的开机启动
(4)设置主机名
hostnamectl set-hostname <hostname>
#####################################################################
(5)在master节点中添加hosts
cat >> etc/hosts << EOF
192.168.31.61 k8s-master
192.168.31.62 k8s-node1
192.168.31.63 k8s-node2
EOF
(6)修改master节点的网络配置
cat > /etc/sysctl.d/k8s.conf <<EOF
net.bridge.bridge-nf-call-ip6tables = 1
net.bridge.bridge-nf-call-iptables = 1
EOF
(7)配置生效
sysctl --system
#################以下在所有节点上执行##########################
(8)同步时钟
ntpdate time.windows.com
(9)安装docker,并修改镜像源,然后重启docker服务就好了
wget https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo -O /etc/yum.repos.d/docker-ce.repo
yum -y install docker-ce-18.06.1.ce-3.el7
systemctl enable docker && systemctl start docker
cat > /etc/docker/daemon.json << EOF
{"registry-mirrors":["https://dr0fajwf.mirror.aliyuncs.com"]}
EOF
systemctl restart docker
(10)修改yum源
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=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
(11)安装kubelet kubeadm kubectl
yum install -y kubelet kubeadm kubectl
默认最新版,可以指定版本
##################################################################
(12)初始化k8s集群
kubeadm init > --apiserver-advertise-address=192.168.241.133 > --image-repository registry.aliyuncs.com/google_containers > --kubernetes-version v1.23.5 > --service-cidr=10.96.0.0/12 > --pod-network-cidr=10.244.0.0/16
(13)成功后看到提示信息,需要拷贝三个东西,还有提示如何让node加入集群中
(14)查看node状态,可能是NotReady,需要下载一个yml文件
kubectl apply -f https://raw.githubusercontent.com/coreos/flannel/master/Documentation/kube-flannel.yml
(15)如果有需要的话可以安装bashboard
wget https://raw.githubusercontent.com/kubernetes/dashboard/v2.5.0/aio/deploy/recommended.yaml
下载完成后打开,修改Service,暴露端口
然后应用这个yaml文件就可以
kubectl apply -f recommended.yaml
(16)访问bashboard
访问方式见 安装Kubernetes Dashboard | Kuboard
(17)测试
最后通过以下几个指令查看一下集群的状态:
尝试部署一个nginx
kubectl create deployment nginx --image=nginx
kubectl expose deployment nginx --port=80 --type=NodePort
查看nginx的信息,使用浏览器访问
kubectl进入pod的指令和docker进入容器的指令差不多,bash前面不用加 -- 也可以,不过会提示说将来版本会弃用完全像docker的这种写法
3. k8s集群初始化流程
- 检查系统环境是否满足,例如swap是否关闭、配置是否满足等
- 下载所需镜像,kubeadm config images pull
- 为kubelet创建配置文件并启动
- 为apiserver、etcd生成https证书
- 生成连接apiserver的kubeconfig文件
- 容器启动master组件
- 将涉及的配置文件存储到configmap
- 设置master节点不可调度pod
- 启用bootstrap自动为kubelet颁发证书
- 安装插件coreDNS、kube-proxy