手动搭建k8s集群,搭建第一个程序

什么是Kubernetes?

Kubernetes(k8s)是自动化容器操作的开源平台,这些操作包括部署,调度和节点集群间扩展。如果你曾经用过Docker容器技术部署容器,那么可以将Docker看成Kubernetes内部使用的低级别组件。Kubernetes不仅仅支持Docker,还支持Rocket,这是另一种容器技术。 使用Kubernetes可以:

  • 自动化容器的部署和复制
  • 随时扩展或收缩容器规模
  • 将容器组织成组,并且提供容器间的负载均衡
  • 很容易地升级应用程序容器的新版本
  • 提供容器弹性,如果容器失效就替换它,等等…

1. 所有节点配置hosts

vi /etc/hosts 
添加:
192.168.220.131 K8S-master01 
192.168.220.132 K8S-master02 
192.168.220.133 K8S-master03  
192.168.220.135 K8S-node01 
192.168.220.136 K8S-node02

2. 所有节点关闭防火墙、selinux、dnsmasq、swap

systemctl disable --now firewalld 
systemctl disable --now dnsmasq #找不到此文件 
systemctl disable --now NetworkManager

3. 所有节点关闭selinux

#获取selinux的状态 
sestatus 
setenforce 0 

将/etc/sysconfig/selinux文件中的SELINUX改为disabled: 
查看: grep -vE "#|^$" /etc/sysconfig/selinux 
vim /etc/sysconfig/selinux 
SELINUX=disabled SELINUXTYPE=targeted 

//默认为enforcing,可设置为enforcing、permissive、disabled中的一项。 SELINUXTYPE=targeted //目前只能设置成targeted、mls中的一项 注意: 1)如果从 disable 切换到enforcing或permissive模式时,由于系统必须要针对文档写入安全性本文的信息 ,因此开机过程会花费不少时间在等待重新写入 SELinux 安全性本文 (有时也称为 SELinux Label), 而且在写完之后还得要再次的重新启动。 2)如果已经运行在Enforcing模式,但是可能由于SELinux的设置问题, 导致某些服务无法正常的运行,此时可以将Enforcing 模式改为Permissive模式,让 SELinux只会警告无法顺利联机的信息,而不是直接阻挡主体程序的读取权限。

4. 所有节点关闭swap分区

swapoff -a && sysctl -w vm.swappiness=0

注释挂载选项

grep "swap" /etc/fstab 

确认swap已经关闭 
free -h 若都显示 0 则表示关闭成功

在这里插入图片描述

5. 所有节点同步时间

ln -sf /usr/share/zoneinfo/Asia/Shanghai /etc/localtime 
echo 'Asia/Shanghai' >/etc/timezone 
ntpdate time2.aliyun.com # 没有就 yum -y install ntpdate 
# 加入到crontab 
crontab -e 

*/5 * * * * ntpdate time2.aliyun.com 
# 加入到开机自动同步, 
vi /etc/rc.local 

ntpdate time2.aliyun.com

6. 所有节点配置limit

ulimit -SHn 65535

7. Master01节点 免密钥登录其他节点

ssh-keygen -t rsa 

for i in K8S-master01 K8S-master02 K8S-master03 K8S-node01 K8S-node02;do ssh-copy-id -i .ssh/id_rsa.pub $i ;done

8. 所有节点配置内核参数,将桥接的IPv4流量传递到iptables的链

[root@master01 ~]# cat > /etc/sysctl.d/k8s.conf <<EOF
net.bridge.bridge-nf-call-ip6tables = 1
net.bridge.bridge-nf-call-iptables = 1
EOF
##
sysctl --system

9. 所有节点安装常用包

 yum install vim bash-completion net-tools gcc -y

10. 所有节点使用aliyun源安装docker-ce

[root@master01 ~]# yum install -y yum-utils device-mapper-persistent-data lvm2
[root@master01 ~]# yum-config-manager --add-repo https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
[root@master01 ~]# yum -y install docker-ce

11. 所有节点添加aliyundocker仓库加速器

[root@master01 ~]# mkdir -p /etc/docker
[root@master01 ~]# tee /etc/docker/daemon.json <<-'EOF'
{
  "registry-mirrors": ["https://fl791z1h.mirror.aliyuncs.com"]
}
EOF
[root@master01 ~]# systemctl daemon-reload
[root@master01 ~]# systemctl restart docker

12. 所有节点安装kubectl、kubelet、kubeadm

12.1 所有节点添加阿里kubernetes源
[root@master01 ~]# 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
12.2 所有节点安装
[root@master01 ~]# yum install kubectl kubelet kubeadm
[root@master01 ~]# systemctl enable kubelet

13. Master01节点初始化k8s集群

[root@master01 ~]# kubeadm init --kubernetes-version=1.18.0  \
--apiserver-advertise-address=192.168.122.21   \
--image-repository registry.aliyuncs.com/google_containers  \
--service-cidr=10.10.0.0/16 --pod-network-cidr=10.122.0.0/16
ht

POD的网段为: 10.122.0.0/16, api server地址就是Master01节点IP。
这一步很关键,由于kubeadm 默认从官网k8s.grc.io下载所需镜像,国内无法访问,因此需要通过–image-repository指定阿里云镜像仓库地址。

14. 记录生成的最后部分内容,此内容需要在其它节点加入Kubernetes集群时执行。

Then you can join any number of worker nodes by running the following on each as root: kubeadm join 192.168.220.131:6443 --token xtraso.niao24xwwmzmavxd \ --discovery-token-ca-cert-hash sha256:5dcf7e2616534d9c91518b43b81ac566234b3d9f9bc57c9e2e03dfc5fd8f16b6

15. 配置安装访问dashboad:

根据中文官网教程操作:
添加链接描述

获取token方式:

# 在 Master01 节点上执行此命令
echo $(kubectl -n kube-system get secret $(kubectl -n kube-system get secret | grep kuboard-user | awk '{print $1}') -o go-template='{{.data.token}}' | base64 -d)

登录界面

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章