点击关注公众号,k8s优秀车间主任及时送达
Kubernetes是什么
- Kubernetes是Google在2014年开源的一个容器集群管理系统,Kubernetes简称K8S。
- K8S用于容器化应用程序的部署,扩展和管理。
- K8S提供了容器编排,资源调度,弹性伸缩,部署管理,服务发现等一系列功能。
- Kubernetes目标是让部署容器化应用简单高效。
实验环境
操作系统版 | 主机名 | IP |
Centos7.6 | master1 | 172.16.10.1 |
node1 | 172.16.10.3 | |
node2 | 172.16.10.4 | |
node3 | 172.16.10.5 |
注:此次环境有借助到简单的Ansible部署
1.配置ssh 免密登录
# ssh-keygen //不需要输入任何操作直接全部回车
[root@master1 ~]# ssh-copy-id -i .ssh/id_rsa.pub root@node1 //依此类推把公钥传输到每台客户端中,同理可得客户端也需要做。
2 . 关闭 selinux 和防火墙
# sed -i 's/enforcing/disabled/'/etc/selinux/config
或者
# vim /etc/selinux/config
# setenforce 0 //正常设置完selinux 需要重启才生效,所以先使用此命令进行临时生效
# systemctl stop firewalld;systemctldisable firewalld //关闭防火墙
3. 配置yum 阿里云源
# wget http://mirrors.aliyun.com/repo/Centos-7.repo //下载阿里云源
# yum install epel-release –y //只在ansible 服务端
# ansible all -m common"yum -y installdocker ipatables" //安装docker和iptables
4 .配置docker 存储卷
# vim /etc/sysconfig/docker-storage-setup
# ansible all -m copy -a'src=/etc/sysconfig/docker-storage-setup dest=/etc/sysconfig/docker-storage-setup' //使用Ansible 把docker 存储配置文件同传到client 端
# ansible all -m command -a"docker-storage-setup";ansible all -m command-a "systemctl start docker";ansible all -mcommand -a "systemctl enable docker" //客户端初始化存储和启动docker
5 . 关闭swap 交换分区
# swapoff –a //临时关闭
# free –m //可查看
# sed -ri 's/.*swap.*/#&/' /etc/fstab // 永久关闭交换分区
6 . 开启路由转发
# cat <<EOF > /etc/sysctl.d/k8s.conf
net.bridge.bridge-nf-call-ip6tables = 1
net.bridge.bridge-nf-call-iptables = 1
EOF
# sysctl -w net.ipv4.ip_forward=1
# sysctl -p /etc/sysctl.d/k8s.conf
7. 添加kubernetes 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=0
repo_gpgcheck=0
gpgkey=https://mirrors.aliyun.com/kubernetes/yum/doc/yum-key.gpghttps://mirrors.aliyun.com/kubernetes/yum/doc/rpm-package-key.gpg
EOF
# ansible all -m copy -a'src=/etc/yum.repos.d/kubernetes.repo dest=/etc/yum.repos.d/kubernetes.repo' //将k8s 同步到客户端
8.安装kubeadm kubelet kubectl
# ansible all -m command “yum – y install kubeadm kubelet kubectl” && ansible all -m command “systemctl enable kubelet”
9. 初始化k8s
# kubeadm init \
--apiserver-advertise-address=172.16.10.1 \
--image-repository registry.aliyuncs.com/google_containers\
--kubernetes-version=1.21.0 \
--service-cidr=10.1.0.0/16 \
--pod-network-cidr=10.16.0.0/16
初始化完通过提示进行操作加入集群
注1:如果添加时报错证书报错执行以下操作
# master 查看节点检查token是否有效 kubeadm token list |
# 生成新的token和命令。然后在node重新执行 kubeadm token create --print-join-command |
注2:Kubernetes version: v1.21.1,依赖/coredns/coredns:v1.8.0,registry.cn-hangzhou.aliyuncs.com/google_containers/coredns/coredns:v1.8.0 不存在。
解决方案:
本地执行以下命令:
docker pull coredns/coredns:1.8.0
docker tag coredns/coredns:1.8.0 registry.cn-hangzhou.aliyuncs.com/google_containers/coredns/coredns:v1.8.0
10. 部署flannel 网络环境
kubectl apply -f https://raw.githubusercontent.com/coreos/flannel/master/Documentation/kube-flannel.yml
部署完可以看到状态都为Ready了
K8s 名称空间