从零开始通过kubeadm安装k8s集群
各节点做免密登录
关掉selinux,关掉firewalld
关闭swap分区
swapoff -a
更改内核参数,开启流量转发
modprobe br_netfilter
echo "modprobe br_netfilter" >> /etc/profile
vim /etc/sysctl.d/k8s.conf
net.bridge.bridge-nf-call-ip6tables = 1
net.bridge.bridge-nf-call-iptables = 1
net.ipv4.ip_forward = 1
sysctl -p /etc/sysctl.d/k8s.conf
配置阿里云kubernetes yum源
vim /etc/yum.repos.d/kubernetes.repo
[kubernetes]
name=kubernetes
baseurl=https://mirrors.aliyun.com/kubernetes/yum/repos/kubernetes-el7-x86_64/
enabled=1
gpgcheck=0
安装kubeadm、kubectl、kubelet
yum install -y kubelet kubectl kubeadm
安装容器运行时,和容器运行时的依赖
yum install -y yum-utils device-mapper-persistent-data lvm2 && yum install -y docker-ce docker-ce-cli containerd.io
启动并配置容器运行时开机自动启动
systemctl enable --now docker
给容器运行时更改cgroups的管理机制,以及配置国内镜像加速地址
vim /etc/docker/daemon.json
{"registry-mirrors":["https://rncxm540.mirror.aliyuncs.com"],"exec-opts":["native.cgroupdriver=systemd"]}
让容器运行时重载配置
systemctl daemon-reload && systemctl restart docker
在kubernetes的master上初始化k8s集群
kubeadm init --kubernetes-version=1.23.4 --apiserver-advertise-address=192.168.33.98 --image-repository registry.aliyuncs.com/google_containers --service-cidr=10.10.0.0/16 --pod-network-cidr=10.122.0.0/16
tips:记得保存初始化之后给出来的节点注册命令,后面我们给集群增加节点的时候需要用到!
总的来说,k8s需要先安装容器运行时,然后安装kubeadm、kubectl、kubelet,在使用kubeadm初始化k8s集群
在master节点上,配置kubectl的配置文件,保存一个整数,这样kubectl命令可以使用这个证书对k8s集群进行管理了
mkdir -p $HOME/.kube && sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config && sudo chown $(id -u):$(id -g) $HOME/.kube/config
使用kubectl查看节点
kubectl get nodes
可以看到此时集群状态还是NotReady状态,因为网络组件还没有启动。
给新建的kubernetes集群安装网络组件–calico
tips: Calico是一种容器之间互相通信的网络方案。在虚拟化平台中,比如OpenStack、Docker等都需要实现workloads之间互联,但同时也需要对容器做隔离控制。而在多数的虚拟化平台实现中,通常都使用二层隔离技术来实现容器的网络,这些二层的技术会产生新的消耗,瓶颈以及增加一系列的复杂性。所以就有了这个Calico。在calico中把Host当作Internet中的路由器,并使用iptables来做安全访问策略。
kubectl create -f https://projectcalico.docs.tigera.io/manifests/tigera-operator.yaml
kubectl create -f https://projectcalico.docs.tigera.io/manifests/custom-resources.yaml
查看pod状态为running则安装成功
kubectl get pod --all-namspaces
向k8s中加入节点
查看节点加入命令
kubeadm token create --print-join-command
在要加入的节点上执行通过上一条命令找到的命令
kubeadm join 192.168.33.98:6443 --token angshy.38m7yfgtaw5pdljx --discovery-token-ca-cert-hash sha256:600b8ac2a0346a1e1deffc370d8e06afddda981b0844df0ec061b8cd6ac211a2
在普通节点上想要查看集群的状态需要做的配置
将master上的证书导入到node节点上,这样在普通节点上也可以使用kubectl命令来管理k8s
mkdir ~/.kube
scp masterIP:~/.kube/config 节点ip:/root/.kube
## 给节点手动打上标签
```bash
kubectl label node node254 node-role.kubernetes.io/worker=worker
查看
kubectl get nodes