k8s学习
常用命令
k8s yaml文件名词释义及yaml模板
k8s部署及安装gitlab,jenkins,helm,nginx
使用Rancher快速搭建K8S
使用kubeadm快速搭建K8S
kubernetes-1.20 ingress-nginx 配置案例
k8s部署mysql案例,学习资源类型(nfs、pv、pvc、configmap、secret)
k8s参考网站
helm安装部署mysql
-
+
首页
使用kubeadm快速搭建K8S
# 使用kubeadm快速搭建K8S ## 1、基本环境centos7 ```bash #修改hostname hostnamectl set-hostname master hostnamectl set-hostname node1 hostnamectl set-hostname node2 #关闭防火墙和selinux systemctl stop firewalld && systemctl disable firewalld sed -i 's/enforcing/disabled/g' /etc/selinux/config; setenforce 0 #修改hosts表,添加各个节点的映射 vim /etc/hosts 192.168.233.10 master 192.168.233.11 node1 192.168.233.12 node2 #安装必要的一些系统工具 sudo yum install -y yum-utils device-mapper-persistent-data lvm2 curl -fsSL https://get.docker.com | bash -s docker --mirror Aliyun #添加开机启动 sudo systemctl enable docker.service #启动docker sudo systemctl start docker.service #配置镜像加速 sudo mkdir -p /etc/docker sudo tee /etc/docker/daemon.json <<-'EOF' { "registry-mirrors": ["https://k0nmuuug.mirror.aliyuncs.com"], "exec-opts": ["native.cgroupdriver=systemd"], "log-driver": "json-file", "log-opts": { "max-size": "100m" }, "storage-driver": "overlay2", "storage-opts": [ "overlay2.override_kernel_check=true" ] } EOF sudo systemctl daemon-reload sudo systemctl restart docker docker run hello-world #配置内核参数 cat <<EOF > /etc/sysctl.d/k8s.conf net.bridge.bridge-nf-call-ip6tables = 1 net.bridge.bridge-nf-call-iptables = 1 EOF sysctl --system sysctl -p /etc/sysctl.conf swapoff -a #关闭swap sed -ri 's/.*swap.*/#&/' /etc/fstab #永久关闭swap #重启 reboot ``` - **(可选)kubernetes ipvs模式,默认为iptables模式** ```bash #开启内核参数 cat >> /etc/sysctl.conf << EOF net.ipv4.ip_forward = 1 net.bridge.bridge-nf-call-iptables = 1 net.bridge.bridge-nf-call-ip6tables = 1 EOF sysctl -p #开启ipvs 支持 yum -y install ipvsadm ipset # 临时生效 modprobe -- ip_vs modprobe -- ip_vs_rr modprobe -- ip_vs_wrr modprobe -- ip_vs_sh modprobe -- nf_conntrack_ipv4 # 永久生效 cat > /etc/sysconfig/modules/ipvs.modules <<EOF #!/bin/bash modprobe -- ip_vs modprobe -- ip_vs_rr modprobe -- ip_vs_wrr modprobe -- ip_vs_sh modprobe -- nf_conntrack EOF chmod 755 /etc/sysconfig/modules/ipvs.modules && bash /etc/sysconfig/modules/ipvs.modules && lsmod | grep -e ip_vs -e nf_conntrack_ipv4 #修改配置文件kube-proxy.service,添加配置 --proxy-mode=ipvs \ --masquerade-all=true #或者修改配置文件kube-proxy的configmap kubectl edit configmap kube-proxy -n kube-system ----- kind: KubeProxyConfiguration metricsBindAddress: "" mode: "ipvs" #修改此处,原为空 nodePortAddresses: null ----- #重启kube-proxy kubectl rollout restart daemonset kube-proxy -n kube-system journalctl -u kube-proxy #查看启动日志 #显示server_others.go:189] Using ipvs Proxier. #表示启用ipvs #通过ipvsadm -Ln 查看是否生效 ``` #参考:https://www.jianshu.com/p/31b161b99dc6 ## 2、安装k8s组件 ```shell #添加kubernetes源 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 #安装kubelet kubeadm kubectl yum install -y kubelet-1.22.8 kubeadm-1.22.8 kubectl-1.22.8 #每个节点的hostname在/etc/hosts配置一下解析地址 ``` ## 3、master节点初始化 ```shell kubeadm init --kubernetes-version=v1.22.8 --image-repository=registry.aliyuncs.com/google_containers --pod-network-cidr=10.244.0.0/16 systemctl enable kubelet.service systemctl start kubelet.service ``` #–pod-network-cidr:选择一个 Pod 网络插件,并检查是否在 kubeadm 初始化过程中需要传入什么参数。这个取决于您选择的网络插件,您可能需要设置 --Pod-network-cidr 来指定网络驱动的CIDR。Kubernetes 支持多种网络方案,而且不同网络方案对 --pod-network-cidr有自己的要求,flannel设置为 10.244.0.0/16,calico设置为192.168.0.0/16 #–image-repository:Kubenetes默认Registries地址是k8s.gcr.io,国内无法访问,在1.13版本后可以增加–image-repository参数,将其指定为可访问的镜像地址,这里使用registry.aliyuncs.com/google_containers。 #配置 kubectl ```shell mkdir -p $HOME/.kube sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config sudo chown $(id -u):$(id -g) $HOME/.kube/config ``` ## 4、node节点加入 执行master上的命令 ``` kubeadm join 192.168.0.104:6443 --token 4ual51.gbgeu5r5ujfj17mr \ --discovery-token-ca-cert-hash sha256:14c2a981f770ec06c8ee68cb00b15ac0a799b89d1ddbca33b98da5e8d199b5c9 ``` [k8s集群新增master\node节点重新生成token](https://blog.csdn.net/pop_xiaohao/article/details/120309305) #拷贝/etc/kubernetes/admin.conf到node节点下,实现在node节点使用k8s命令 ```bash scp /etc/kubernetes/admin.conf node1:/etc/kubernetes/ scp /etc/kubernetes/admin.conf node2:/etc/kubernetes/ ``` #每个节点都写到环境变量 ```bash echo "export KUBECONFIG=/etc/kubernetes/admin.conf" >> ~/.bash_profile source ~/.bash_profile ``` ## 5、安装网络插件 ```shell kubectl apply -f https://docs.projectcalico.org/manifests/calico.yaml #或者 kubectl apply -f https://raw.githubusercontent.com/coreos/flannel/master/Documentation/kube-flannel.yml ``` - 报错:The connection to the server raw.githubusercontent.com was refused - did you specify the right host or port? 原因:外网不可访问 解决办法: ```bash # 在https://www.ipaddress.com/查询raw.githubusercontent.com的真实IP。 sudo vim /etc/hosts 199.232.28.133 raw.githubusercontent.com ``` #允许master节点调度 ``` kubectl taint nodes --all node-role.kubernetes.io/master- ``` #查看master节点状态为Ready ```shell kubectl get nodes kubectl get pods -n kube-system ``` 至此,Kubernetes 的 Master 节点就部署完成了。如果只需要一个单节点的 Kubernetes,现在你就可以使用了。 部署参考:https://blog.csdn.net/networken/article/details/84991940 ## 6、K8S环境清理 ```bash kubeadm reset -f modprobe -r ipip rm -rf ~/.kube/ rm -rf /etc/kubernetes/ rm -rf /etc/cni rm -rf /opt/cni rm -rf /var/lib/etcd rm -rf /var/etcd yum clean all yum -y remove kube* ```
admin
2023年6月6日 16:43
转发文档
收藏文档
上一篇
下一篇
手机扫码
复制链接
手机扫一扫转发分享
复制链接
Markdown文件
分享
链接
类型
密码
更新密码