centos7安装k8s

替换yum源

wget -O /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-7.repo 
wget -O /etc/yum.repos.d/epel.repo http://mirrors.aliyun.com/repo/epel-7.repo 
yum clean all 
yum makecache
yum -y update

安装docker

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-19.03.8-3.el7
yum update xfsprogs -y


rm -rf /etc/docker/daemon.json 
vi /etc/docker/daemon.json 
{
    "exec-opts": ["native.cgroupdriver=systemd"],
    "registry-mirrors": [
        "https://1nj0zren.mirror.aliyuncs.com",
        "https://kfwkfulq.mirror.aliyuncs.com",
        "https://2lqq34jg.mirror.aliyuncs.com",
        "https://pee6w651.mirror.aliyuncs.com",
        "http://hub-mirror.c.163.com",
        "https://docker.mirrors.ustc.edu.cn",
        "http://f1361db2.m.daocloud.io",
        "https://registry.docker-cn.com"
    ]
}

重启
systemctl daemon-reload
systemctl restart docker

查看docker日志
dockerd

安装k8s

# 拉镜像
docker pull registry.aliyuncs.com/google_containers/kube-proxy:v1.19.0
docker pull registry.aliyuncs.com/google_containers/kube-apiserver:v1.19.0
docker pull registry.aliyuncs.com/google_containers/kube-controller-manager:v1.19.0
docker pull registry.aliyuncs.com/google_containers/kube-scheduler:v1.19.0
docker pull registry.aliyuncs.com/google_containers/etcd:3.4.9-1
docker pull registry.aliyuncs.com/google_containers/coredns:1.7.0
docker pull registry.aliyuncs.com/google_containers/pause:3.2


# 关闭防火墙
systemctl stop firewalld && systemctl disable firewalld

# 关闭 swap
swapoff -a && sed -i '/ swap / s/^\(.*\)$/#\1/g' /etc/fstab

# 关闭 selinux
setenforce 0 && sed -i 's/^SELINUX=.*/SELINUX=disabled/' /etc/selinux/config

# 时间同步
yum -y install ntpdate
ntpdate time.windows.com
hwclock --systohc

# 将桥接的IPv4流量传递到iptables的链
cat > /etc/sysctl.d/k8s.conf << EOF
net.bridge.bridge-nf-call-ip6tables = 1
net.bridge.bridge-nf-call-iptables = 1
EOF
sysctl --system  # 生效



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.gpg https://mirrors.aliyun.com/kubernetes/yum/doc/rpm-package-key.gpg
EOF


yum remove -y  kubelet-1.19.0 kubeadm-1.19.0 kubectl-1.19.0
yum install -y kubelet-1.19.0 kubeadm-1.19.0 kubectl-1.19.0
systemctl enable kubelet

修改配置文件
/usr/lib/systemd/system/kubelet.service.d/10-kubeadm.conf
ExecStart=/usr/bin/kubelet $KUBELET_KUBECONFIG_ARGS $KUBELET_CONFIG_ARGS $KUBELET_KUBEADM_ARGS $KUBELET_EXTRA_ARGS  --feature-gates SupportPodPidsLimit=false --feature-gates SupportNodePidsLimit=false

systemctl daemon-reload
systemctl restart docker
systemctl restart kubelet


kubeadm init --kubernetes-version=1.19.0 \
--apiserver-advertise-address=$(ifconfig | grep eno -A 1 | grep inet | awk '{ print $2 }') \
--image-repository=registry.aliyuncs.com/google_containers \
--service-cidr=10.1.0.0/16 \
--pod-network-cidr=10.244.0.0/16 \
--ignore-preflight-errors=all \
--v=5 

kubeadm join --token 7q9hvo.e65aim12as1a0v98 --discovery-token-ca-cert-hash sha256:76e68e8ac68af391e3f406a5ea451ea44b0f67a63ac44754a43f8e483d613e14  192.168.116.27:6443 
 --ignore-preflight-errors=all


安装flannel
wget https://raw.githubusercontent.com/coreos/flannel/master/Documentation/kube-flannel.yml
kubectl apply -f kube-flannel.yml
kubectl get pods -n kube-system


去除污点
kubectl describe node localhost.localdomain | grep Taints
kubectl taint nodes localhost.localdomain node.kubernetes.io/not-ready:NoSchedule-


[root@localhost k8s]# kubectl get node
NAME                    STATUS   ROLES    AGE   VERSION
localhost.localdomain   Ready    master   49m   v1.19.0
[root@localhost k8s]# kubectl get po -A
NAMESPACE      NAME                                            READY   STATUS    RESTARTS   AGE
default        nginx1-6978dd5678-66wc7                         1/1     Running   0          15m
kube-flannel   kube-flannel-ds-rvdqq                           1/1     Running   1          29m
kube-system    coredns-6d56c8448f-mcbkv                        1/1     Running   0          28m
kube-system    coredns-6d56c8448f-z49bb                        1/1     Running   0          41m
kube-system    etcd-localhost.localdomain                      1/1     Running   1          41m
kube-system    kube-apiserver-localhost.localdomain            1/1     Running   2          41m
kube-system    kube-controller-manager-localhost.localdomain   1/1     Running   3          41m
kube-system    kube-proxy-jcbcq                                1/1     Running   1          41m
kube-system    kube-scheduler-localhost.localdomain            1/1     Running   3          41m
[root@localhost k8s]# 


grpc服务demo

// protoc --go_out=plugins=grpc:. demo.proto
syntax = "proto3";

package demo;
option go_package = "demo";

service demo {
  rpc hello(helloReq) returns(helloResp);
}

message helloReq {
	string req=1;
}
message helloResp {
	string msg=1;
}
package main

import (
	"context"
	"flag"
	"fmt"
	pb "gg/demo"
	"log"
	"net"
	"os"

	"google.golang.org/grpc"
	"google.golang.org/grpc/reflection"
)

type server struct {
}

var (
	listen = flag.String("listen", "listen", ":80")
)

func main() {

	flag.Parse()
	fmt.Println(os.Args)

	s := grpc.NewServer()
	pb.RegisterDemoServer(s, &server{})
	reflection.Register(s)

	l, err := net.Listen("tcp", *listen)
	if err != nil {
		log.Printf("Failed to listen %s, err %v", *listen, err)
		return
	}

	log.Println("server run")
	s.Serve(l)
}

func (s *server) Hello(ctx context.Context, in *pb.HelloReq) (*pb.HelloResp, error) {
	log.Printf("Hello req:%+v", in)

	return &pb.HelloResp{Msg: in.Req}, nil
}


编写dockerfile

FROM ubuntu
ADD ./main /
EXPOSE 80
EXPOSE 8078

打包生成镜像

docker build -t helloworld:1.0 .

deploy & svc

apiVersion: apps/v1
kind: Deployment
metadata:
  labels:
    app: helloworld
  name: helloworld
spec:
  replicas: 1
  selector:
    matchLabels:
      app: helloworld
  template:
    metadata:
      labels:
        app: helloworld
    spec:
      containers:
      - image: helloworld:1.0
        imagePullPolicy: Never
        name: helloworld
        command:
        - /main
        - --listen=:80
apiVersion: v1
kind: Service
metadata:
  labels:
    app: helloworld
  name: helloworld
spec:
  selector:
    app: helloworld
  ports:
  - name: http-admin
    port: 8078
    protocol: TCP
    targetPort: 8078
  - name: grpc
    port: 80
    protocol: TCP
    targetPort: 80

测试

[root@localhost ~]# kubectl get svc
NAME         TYPE        CLUSTER-IP     EXTERNAL-IP   PORT(S)           AGE
helloworld   ClusterIP   10.1.173.212   <none>        8078/TCP,80/TCP   58s
kubernetes   ClusterIP   10.1.0.1       <none>        443/TCP           4h42m
[root@localhost ~]# grpcurl --plaintext -d '{"req":"aa"}' 10.1.173.212:80 demo.demo.hello
{
  "msg": "aa"
}
[root@localhost ~]# kubectl get po
NAME                          READY   STATUS    RESTARTS   AGE
helloworld-6fcfff47d5-srdsr   1/1     Running   0          5m31s
nginx1-6978dd5678-66wc7       1/1     Running   1          4h2m
[root@localhost ~]# kubectl logs helloworld-6fcfff47d5-srdsr 
[/main --listen=:80]
2024/04/04 13:56:54 server run
2024/04/04 14:01:37 Hello req:req:"aa" 
2024/04/04 14:02:17 Hello req:req:"aa" 

  • 4
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值