# k8s-install **Repository Path**: chenran12/k8s-install ## Basic Information - **Project Name**: k8s-install - **Description**: k8s环境搭建 - **Primary Language**: Java - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 1 - **Created**: 2021-08-06 - **Last Updated**: 2021-08-30 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # 安装kubernetes集群,文档部署时 k8s版本-kubernetes1.20 docker版本 Docker version 20.10.0 ## 安装前准备 0、如果没有虚拟机,windows电脑使用vmvare,mac电脑使用virtual-box 1、准备3台,2G或更大内存,2核或以上CPU,20G以上硬盘 物理机或云主机或虚拟机 2、系统centos 7.x ## 环境准备(在3台机运行) ```shell #根据规划设置主机名 hostnamectl set-hostname master hostnamectl set-hostname node1 hostnamectl set-hostname node2 #在添加hosts cat >> /etc/hosts << EOF 192.168.0.120 master 192.168.0.178 node1 192.168.0.49 node2 EOF #本地host同样添加,觉得麻烦的同学可以下载switch-host软件管理本地域名解析 192.168.0.120 master 192.168.0.178 node1 192.168.0.49 node2 #关闭防火墙 systemctl stop firewalld && systemctl disable firewalld #关闭selinux(在3台机运行) sed -i 's/enforcing/disabled/' /etc/selinux/config && setenforce 0 #关闭swap swapoff -a && sed -ri 's/.*swap.*/#&/' /etc/fstab #时间同步 yum install ntpdate -y && ntpdate time.windows.com #配置内核参数,将桥接的IPv4流量传递到iptables的链 cat > /etc/sysctl.d/k8s.conf < /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 yum install kubectl kubelet kubeadm && systemctl enable kubelet && systemctl start kubelet ``` ## 部署Kubernetes Master ```shell #初始化k8s集群 kubeadm init --kubernetes-version=1.20.0 \ --apiserver-advertise-address=192.168.0.120 \ --image-repository registry.aliyuncs.com/google_containers \ --service-cidr=10.10.0.0/16 --pod-network-cidr=10.122.0.0/16 #提示initialized successfully!表示初始化成功 ##注意提示:to start using you cluster,you need to run the following as a regular user: mkdir -p $HOME/.kube sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config sudo chown $(id -u):$(id -g) $HOME/.kube/config #按提示执行以上三条命令(控制台输出信息里面复制的) #执行完后可以运行,查看node节点情况 kubectl get nodes #还有一条提示: #then you can join any number of worker nodes by running the following on each as root #翻译:然后,您可以通过在每个worker节点上以root身份运行以下命令来连接任意数量的worker节点 #接着把提示如下的语句复制到node节点运行 kubeadm join 192.168.0.120:6443 --token ... 以上条命令(控制台输出信息里面复制的) #执行下面命令,使kubectl可以自动补充,看你是否需要,选择性执行 source <(kubectl completion bash) #查看node节点 kubectl get node #当前node状态均为noReady,属于正常 kubectl get node #node节点为NotReady,因为corednspod没有启动,缺少网络pod ``` #### 部署CNI网络插件 ```shell #安装flannel网络插件 kubectl apply -f https://gitee.com/yaochengzhu/k8s-install/blob/master/calico.yaml #发送admin.conf到所有节点,可以在任何一个节点管理集群 scp /etc/kubernetes/admin.conf root@node1:/etc/kubernetes/admin.conf scp /etc/kubernetes/admin.conf root@node2:/etc/kubernetes/admin.conf #在node节点上加入环境变量 echo "export KUBECONFIG=/etc/kubernetes/admin.conf" >> /etc/profile source /etc/profile #执行完成以后可以在任意node节点上管理集群,查看节点是否正常 kubectl get nodes ``` #### 安装kubernetes-dashboard ~~~shell kubectl create -f https://gitee.com/yaochengzhu/k8s-install/blob/master/dashboad.yml #通过页面访问,推荐使用firefox浏览器,其他浏览器可能会因为证书问题无法访问 生产环境使用公网信任的证书不会有问题 https://master:30000 #这是选择token方式登录,下面获取token kubectl create serviceaccount dashboard-admin -n kube-system kubectl create clusterrolebinding dashboard-admin --clusterrole=cluster-admin --serviceaccount=kube-system:dashboard-admin kubectl describe secrets -n kube-system $(kubectl -n kube-system get secret | awk '/dashboard-admin/{print $1}') #以上命令解释:创建admin账号,授权管理集群,复制控制台最后输出的token用于登录即可 #如果忘记token,使用以下命令获取 kubectl -n kube-system describe secret $(kubectl -n kube-system get secret | grep admin-user | awk '{print $1}') ~~~