436ce6a1-fa69-4d0f-85aa-b8ced8daa9hostnamectl set-hostname <hostname>
vi /etc/sysconfig/network-scripts/ifcfg-ens33
#修改并添加
TYPE="Ethernet"
PROXY_METHOD="none"
BROWSER_ONLY="no"
BOOTPROTO="static" # 设置为静态
DEFROUTE="yes"
IPADDR="10.10.10.100" # 设置的固定IP地址
NETMASK="255.255.255.0" # 子网掩码
GATEWAY="10.10.10.252" # 您提供的网关地址
IPV4_FAILURE_FATAL="no"
IPV6INIT="yes"
IPV6_AUTOCONF="yes"
IPV6_DEFROUTE="yes"
IPV6_FAILURE_FATAL="no"
IPV6_ADDR_GEN_MODE="stable-privacy"
NAME="ens33"
UUID="e1fd5e03-5f3a-4a2d-b656-f435e1df5c82"
DEVICE="ens33"
ONBOOT="yes"
DNS1="10.10.10.252" # Google的公共DNS 1
DNS2="114.114.114.114" # Google的公共DNS 2
#重启网络
sudo systemctl restart network
#修改centos源文件
#备份
sudo mv /etc/yum.repos.d/CentOS-Base.repo /etc/yum.repos.d/CentOS-Base.repo.backup
#修改
sudo curl -o /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-7.repo
#更新缓存
sudo yum clean all
sudo yum makecache
sudo systemctl status firewalld #查看防火墙状态
sudo firewall-cmd --list-ports #查看防火墙开启端口
#添加防火墙端口
sudo firewall-cmd --add-port=6443/tcp --permanent
sudo firewall-cmd --add-port=10250/tcp --permanent
#重启防火墙
sudo firewall-cmd --reload
#关闭防火墙【推荐 因为会导致部署失败】
sudo systemctl stop firewalld
#永久关闭防火墙
sudo systemctl disable firewalld
wget https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo -O /etc/yum.repos.d/docker-ce.repo
yum -y install docker-ce-18.06.1.ce-3.el7
#开机启动并且开启
systemctl enable docker && systemctl start docker
sudo systemctl daemon-reload #重新加载 Systemd 守护进程的配置文件
sudo systemctl restart docker
sudo mkdir -p /etc/docker
sudo tee /etc/docker/daemon.json <<-'EOF'
{
"registry-mirrors": ["https://npn4djke.mirror.aliyuncs.com"]
}
EOF
#配置时间
sudo yum install -y ntp
sudo systemctl start ntpd
sudo systemctl enable ntpd
#查看当前时间
timedatectl
SELinux在默认情况下可能会干扰Kubernetes的操作,所以你应该暂时关闭它:
sudo setenforce 0
sudo sed -i 's/^SELINUX=enforcing$/SELINUX=permissive/' /etc/selinux/config
Kubernetes需要禁用swap,你可以通过如下命令来实现:
sudo sed -i '/ swap / s/^\(.*\)$/#\1/g' /etc/fstab
sudo swapoff -a
cat >> /etc/hosts << EOF
192.168.31.61 k8s-master
192.168.31.62 k8s-node1
192.168.31.63 k8s-node2
EOF
cat > /etc/sysctl.d/k8s.conf << EOF
net.bridge.bridge-nf-call-ip6tables = 1
net.bridge.bridge-nf-call-iptables = 1
EOF
sysctl --system #重新加载所有可用配置文件中的 sysctl 设置
对于Kubernetes组件的安装,首先设置Kubernetes的yum仓库:
cat <<EOF | sudo tee /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:
sudo yum install -y kubelet kubeadm kubectl
sudo systemctl enable --now kubelet
sudo yum install containerd #安装服务器
sudo systemctl start containerd #启动服务器
sudo systemctl enable containerd #开机启动服务器
sudo systemctl status containerd #查看服务状态
sudo systemctl restart containerd #重启服务器
sudo systemctl daemon-reload #重新加载 Systemd 守护进程的配置文件
#如果报错kubeadm init无法连接containerd,请执行
rm -rf /etc/containerd/config.toml
#然后执行
sudo systemctl restart containerd
kubeadm init \
--apiserver-advertise-address=10.10.10.100 \
--image-repository registry.aliyuncs.com/google_containers \
--service-cidr=10.96.0.0/12 \
--pod-network-cidr=10.244.0.0/16
#--apiserver-advertise-address=10.10.10.100 \ 主节点
#--image-repository registry.aliyuncs.com/google_containers \ 源文件
#--service-cidr=10.96.0.0/12 \ serviceIP范围
#--pod-network-cidr=10.244.0.0/16 网络插件控制范围
在运行
**kubeadm init**后,会生成一个**/etc/kubernetes/admin.conf**文件。这个文件是一个**kubeconfig**文件,它包含了一些信息,包括:用来连接 Kubernetes API 服务器的地址和端口信息。默认的 namespace。用来进行身份验证的证书信息或者 token。当你运行
**export KUBECONFIG=/etc/kubernetes/admin.conf**后,你就告诉**kubectl**命令行工具在需要连接到 Kubernetes 集群时,应该从这个文件中读取上述信息。如果你没有设置
**KUBECONFIG**环境变量,**kubectl**默认会从**~/.kube/config**文件中读取这些信息。你可以通过设置**KUBECONFIG**环境变量来改变这个默认行为,这样就可以方便地在不同的 Kubernetes 集群之间切换。也就是说,
**KUBECONFIG**环境变量是**kubectl**知道如何连接到你的 Kubernetes 集群的关键。
将export KUBECONFIG=/etc/kubernetes/admin.conf配置进.bashrc 避免每次开机都要配置
https://kubernetes.io/docs/concepts/cluster-administration/addons/
#Calico 网络插件
kubectl apply -f https://docs.projectcalico.org/manifests/calico.yaml
#WEAVE
kubectl apply -f https://github.com/weaveworks/weave/releases/download/v2.8.1/weave-daemonset-k8s.yaml
kubectl apply -f https://github.com/weaveworks/weave/releases/download/v2.8.1/weave-daemonset-k8s.yaml
kubectl apply -f https://github.com/weaveworks/scope/releases/download/v1.13.2/k8s-scope.yaml
https://zhuanlan.zhihu.com/p/586486482 WEAVE_SCOPE_YAML
[!note]+ 插件删除
- 首先,你需要彻底删除原有的网络插件。对于大部分网络插件,你可以运行
**kubectl delete -f**命令并指向原插件的 YAML 文件,例如**kubectl delete -f calico.yaml**。然而,这不一定会删除所有相关资源,你可能还需要手动删除一些遗留的网络接口、配置或数据。- 其次,你需要确保所有的节点都清理了原有网络插件的遗留,并且已经就绪。这可能需要重启节点,或者运行一些特定的清理脚本。
- 最后,你可以部署新的网络插件。这通常是通过运行
**kubectl apply -f**命令并指向新插件的 YAML 文件,例如**kubectl apply -f weave.yaml**。这个过程可能会引起集群的服务中断,因为在新的网络插件部署并开始工作之前,Pod 之间可能无法进行网络通信。所以,在生产环境中,这种操作应该在维护窗口内进行,并且需要提前通知所有的用户和利益相关者。
kubectl create deployment nginx --image=nginx
kubectl expose deployment nginx --port=80 --type=NodePort
kubectl get pod,svc
访问地址:http://NodeIP:Port
https://kubernetes.io/docs/tasks/access-application-cluster/web-ui-dashboard/
https://www.cnblogs.com/chen2ha/p/17086962.html
注意要点可以先下载配置文件并配置nodeport ,如果出现必须https访问可以输入thisisunsafe
#安装
kubectl apply -f https://raw.githubusercontent.com/kubernetes/dashboard/v2.0.0-beta8/aio/deploy/recommended.yaml
#配置代理
kubectl proxy --address='0.0.0.0' --accept-hosts='^.*$' --port=8001
#外网访问
https://localhost:8001/api/v1/namespaces/kubernetes-dashboard/services/https:kubernetes-dashboard:/proxy/
kubectl get secret --all-namespaces -o wide
注意自定配置【NodePort】
[[IMG-20260516155648708.yaml]]
只需要通过IP:nodeprot 就可以登陆
[[IMG-20260516155648758.yaml]]
apiVersion: v1
kind: ServiceAccount
metadata:
name: admin-user
namespace: kubernetes-dashboard
apiVersion: rbac.authorization.k8s.io/v1
kind: ClusterRoleBinding
metadata:
name: admin-user
roleRef:
apiGroup: rbac.authorization.k8s.io
kind: ClusterRole
name: cluster-admin
subjects:
- kind: ServiceAccount
name: admin-user
namespace: kubernetes-dashboard
kubectl -n kubernetes-dashboard create token admin-user
apiVersion: v1
kind: Secret
metadata:
name: admin-user
namespace: kubernetes-dashboard
annotations:
kubernetes.io/service-account.name: "admin-user"
type: kubernetes.io/service-account-token
kubectl get secret admin-user -n kubernetes-dashboard -o jsonpath={".data.token"} | base64 -d
kubectl -n kubernetes-dashboard delete serviceaccount admin-user
kubectl -n kubernetes-dashboard delete clusterrolebinding admin-user