点击关注公众号,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    //不需要输入任何操作直接全部回车

2、Kubeadm 部署安装最新版k8s1.21.2_docker

[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

2、Kubeadm 部署安装最新版k8s1.21.2_linux_02

# 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

2、Kubeadm 部署安装最新版k8s1.21.2_edn_03

# 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

2、Kubeadm 部署安装最新版k8s1.21.2_docker_04



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

2、Kubeadm 部署安装最新版k8s1.21.2_edn_05

初始化完通过提示进行操作加入集群

注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了

2、Kubeadm 部署安装最新版k8s1.21.2_linux_06


K8s 名称空间           

2、Kubeadm 部署安装最新版k8s1.21.2_docker_07